Most posts under miscellaneous are for personal purposes. But if you find this useful, that’s great!
Here are a few helpful and frequently used FFMPEG commands.
Trim video
ffmpeg -ss [HH:]MM:SS[.ms] -t [HH:]MM:SS[.ms] -i input_file.mp4 -c copy output_file.mp4
Convert video to GIF
ffmpeg -i input_file.mp4 -filter_complex "[0:v] fps=5,scale=300:-1,split [a][b];[a] palettegen [p];[b][p] paletteuse" output_file.gif
Convert image sequence to GIF
ffmpeg -f image2 -framerate X -i images_%d.png output.gif
If needed, a filter for palette can also be added as in above example
Convert image sequence to MP4 (H264)
ffmpeg -r 60 -f image2 -i img_%04d.png -c:v libx264 -crf 21 -preset slow -pix_fmt yuv420p output.mp4
Input frames are read at 60 fps, and then encoded to H.264 codec with a constant rate factor of 21 (lower, the better), and a slow encoding preset. The pixel format is set to yuv420p, which is supported by most “dumb” players.
Convert MKV to MP4
ffmpeg -i input_file.mkv -c copy output_file.mp4
Compress MP4 (H264)
ffmpeg -i input_file.mp4 -c:v libx264 -crf XX -preset slow -c:a copy output_file.mp4
XX = 0-51, lower number is higher quality: 0 is lossless and 51 is worst quality. 17–28 is considered sane range.
Change video speed
Note, sacrifices audio.
Example double speed:
ffmpeg -t 00:13 -i input_file.mp4 -an -filter:v "setpts=0.5*PTS" output_file.mp4
Extract tracks from a multi-track video file
Some video files can have multiple tracks, but not all media players can play those. E.g., OS-default media players normally access the first track. (But VLC allows it: Video > Video Track > (Select Track).)
To copy the first track from a multi-track video file into a new single track, use:
ffmpeg -i input_file.mp4 -map 0:v:0 -map 0:a:0 -c:v copy -c:a copy track_1.mp4
For second track use:
ffmpeg -i input_file.mp4 -map 0:v:1 -map 0:a:1 -c:v copy -c:a copy track_2.mp4
And so on.