FFmpeg is a powerful libre / free software tool that I use frequently to edit or manipulate videos individually or in bulk. It supports a very wide range of codecs and formats, making it an essential tool for any video hobbyist or professional.
This article aims to provide you with a list of 15 short and handy FFmpeg commands to help you get started with this versatile tool.
The history of FFmpeg dates back to 2000, when Fabrice Bellard, a French programmer, developed it as a collection of libraries and tools for handling multimedia data.
Over the years, FFmpeg has become a widely used and respected tool for video and audio manipulation, thanks to its active community of developers and users.
FFMPEG Basic Commands
Basic conversion
ffmpeg -i INPUT_VIDEO.mov OUTPUT_VIDEO.mp4- –
iInput or stream input. In this case the original video, in .mov format, as an example. - The last parameter corresponds to the output. In this case, the converted video.
Extracting audio from a video
ffmpeg -i INPUT_VIDEO.mp4 -vn -c:a mp3 -b:a 128k -ac 2 -ar 44100 YOUR_AUDIO.mp3- –
vnNo video. - –
c:aAudio codec.
- –
- –
b:aBiterate - –
acAudio channels - –
arAudio rate kHz
Extract video without audio
ffmpeg -i YOUR_VIDEO -an -c:v copy OUTPUT- –
anNo audio. - –
c:vVideo codec. In this case, no codec, just copy.
Extract a part of a video
ffmpeg -ss 00:01:00.000 -i YOUR_VIDEO.mp4 -t 00:00:10.000 -c copy VIDEO_SEGMENT.mp4- –
ssSince it is before the-ioption, it will place the start of the stream here. In this case, the start of the cut, in this example right at minute 1, format HH:MM:SS:ms. - –
tThe stream duration time. In this case, the duration of the cut, 10 seconds in HH:MM:SS:ms format.
Change the size or resolution of a video.
ffmpeg -i YOUR_INPUT.mov -s 1280x720 YOUR_OUTPUT.mp4- –
sIs the desired output resolution.
Get the length of a video:
fprobe -v error -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 -sexagesimal YOUR_INPUT.mp4This command displays the duration of the video or stream in hours:minutes:seconds:milliseconds format. The ffprobe command is used to get information about the input file.
The -select_streams, -show_entries and -of parameters are used to specify the information to be obtained and the output format.
Adding a logo to a video
ffmpeg -i INPUT VIDEO.mp4 -i LOGO.png -filter_complex "overlay=100:100" -codec:a copy OUTPUT_VIDEO_WITH_LOGO.mp4This command adds a logo to an existing video.
- The
-iparameter is used to specify both the input video and the logo file. - The
-filter_complexparameter is used to specify the filter to apply, in this case theoverlayfilter to add the logo to the video. - The numeric parameters (100:100) are used to specify the position of the logo in the video.
- The
-codec:acopy parameter is used to copy the original audio codec without performing any conversion.
Converting a video to an animated GIF
This command converts a video into an animated gif in three steps:
1. Resize the video
ffmpeg -i output.mp4 -vf scale=640x360 -c:v h264 -crf 18 -c:aac OUTPUT_1.mp42. Generate the frames in PNG format
ffmpeg -i OUTPUT_1.mp4 framed.png3. Generate the gif from the frames:
For high quality:
gifski -o GIF_OUTPUT.gif frame*.pngLow quality
ffmpeg -i OUTPUT_1.mp4 GIF_OUTPUT.gifCreate a video from a group of images
ffmpeg -framerate 1 -i imgd.png -r 25 -pix_fmt yuv420p output.mp4This command creates a video from a series of images.
- The
-framerateparameter is used to specify the desired frame rate - The
-iparameter is used to specify the filename pattern of the images. - The
-rparameter is used to specify the desired playback speed (in this case 25 frames per second). - The
-pix_fmtparameter is used to specify the desired pixel format (in this case, yuv420p).
Generate audio waveforms
ffmpeg -i INPUT_AUDIO.AAC -filter_complex "[0:a]showwaves=mode=cline:s=192020x1080:colors=white[v]" -map '[v]' -map '0:a' -c:a copy -pix_fmt yuv420p OUTPUT_VIDEO.mp4This command generates a video showing the audio waveforms of an audio file.
- The
-filter_complexparameter is used to specify the filter to apply, in this case theshowwavesfilter to display the audio waves. - The numeric and color parameters are used to specify the size and colors of the video.
- The
-mapparameter is used to specify which streams should be included in the output. - The
-c:acopy parameter is used to copy the original audio codec without performing any conversion.
Change subtitle format
ffmpeg -i YOUTUBE_SUBTITLES.vtt YOUR_SUB.assThis command converts a subtitle file from VTT format to ASS format.
- The
-iparameter is used to specify the input file - The last parameter is used to specify the output file.
Replacing the audio track of a video
ffmpeg -i INPUT_VIDEO.mp4 -i NEW_AUDIO.mp3 -map 0:v -map 1:a -c copy OUTPUT_VIDEO.mp4This command replaces the audio track of an existing video with a new audio track.
- The
-iparameters are used to specify both the input video and the input audio file. - The
-mapparameters are used to specify which streams should be included in the output (in this case, the video from the first file and the audio from the second file). - The
-ccopy parameter is used to copy the original video and audio codec without performing any conversion.
Extracting metadata from a media file
ffmpeg -i INPUT_FILE -f ffmetadata metadata.txtThis command extracts the metadata from an input file and saves it to a text file.
- The
-fparameter is used to specify the desired output format (in this case, ffmetadata).
Adjusting the volume of an audio
ffmpeg -i INPUT_AUDIO.mp3 -vol 200 OUTPUT_AUDIO.mp3- –
vol 200: sets the volume of the output file. In this case, it is set to 200, which means that the volume will be doubled with respect to the original. Higher values increase the volume, while lower values decrease it.
Extracting images from a video
ffmpeg -i INPUT -f image2 -bt 20M -vf fps=1/1 d.png- –
fimage2 It is the filter in charge of creating the image from the video. - –
vffps=1/2 Frames per second. In this case, the number of images to obtain every second. In the example, 1 image every 2 seconds.
Conclusion
FFmpeg is an incredibly powerful and versatile tool for manipulating and editing videos. The commands we have presented in this article are just a small sample of what you can do with FFmpeg. With a little practice, you can make FFmpeg an indispensable tool in your video editing workflow.
A few years ago, editing or manipulating videos without a user interface was hard for me to imagine. However, once I got used to using it, the efficiency and flexibility FFmpeg offers makes me wonder why I didn’t start using it sooner.


