Friday 20 October 2017

How to trim or delete parts of an mpeg video from the linux command line?


I have an long mpeg movie and I want to cut out a lot of material from the beginning and end, and certain patches in the middle. Is there a way I can easily do this from the linux command line?



Answer



The tool for the job is mpgtx (if not installed try, e.g., sudo apt-get install mpgtx).


Let's suppose your file is called input.mpg and you want to create output.mpg Here are some common tasks


Select segments from a mpeg movie, create a new mpeg movie out of them


//Grabs seconds 10-20, 42 through 52, then 1:23 through 1:33 and make a new mpeg movie


mpgtx -j input.mpg [0:10-0:20] [0:42-0:52] [1:23-1:33] -o output.mpg

Note: mpgtx -j is equivalent to mpgjoin. Note: You need to install it via sudo apt-get install mpgtx


Select from the beginning or end of an mpeg movie


//Get the first 20 seconds, secs 42 through 52, then 1:23 through the end***


mpgtx -j input.mpg [-0:20] [0:42-0:52] [1:23-] -o output.mpg

Split an mpeg movie into several files of custom lengths


//Splits out minutes 1-2 and 3-4 into two files (out-1.mpg and out-2.mpg)


mpgtx -s input.mpg [1:00-2:00] [3:00-4:00] -b out  

Break an mpeg movie into equal length pieces


//Splits a movie into 5 equal length parts called out-1.mpg, out-2.mpg, ..., out-5.mpg


mpgtx -5 input.mpg -b out  

Concatenate or join multiple mpeg video files from the command line


mpgtx -j file1.mpg file2.mpg file3.mpg -o output.mpg

Re-encoding a file if the timings are off


You may find that the timings are not very accurate because of the way that mpgtx works (which is on a group of pictures basis). I have found that reencoding the mpeg at a constant bitrate leads to files which then can be split very precisely with the above method. A simple re-encoding call is as follows.


//Re-encode at a constant bit rate of 2250k


ffmpeg -i input.mpg -b 2250k -minrate 2250k -maxrate 2250k -bufsize 1000k output.mpg

Note. ffmpeg can do much of what mpgtx can do, but the latter makes it much easier to specify multiple cuts (and you can give the input in start and end times, as opposed to start and durations). However, ffmpeg is a great companion. I find that converting AVIs to mpeg with ffmeg, then doing the splitting with mpgtx is the quickest means to get the job done.


See the man pages for mpgtx and ffmpeg (as well as its online help page http://ffmpeg.org/ffmpeg-doc.html ) for more information.


No comments:

Post a Comment

Where does Skype save my contact's avatars in Linux?

I'm using Skype on Linux. Where can I find images cached by skype of my contact's avatars? Answer I wanted to get those Skype avat...