Fade-in / Fade-out using FFMPEG

The following examples show how you can use FFMPEG to do fade-in fade-out for audio and/or video.

ffmpeg -i input.mp4 -vf “fade=t=in:st=0:d=10,fade=t=out:st=10:d=5” -c:a copy output.mp4

The example above applies both fade-in and fade-out effects for video, but not for audio.

ffmpeg -i input.mp4 -af “afade=t=in:st=0:d=5” -c:v copy output.mp4

The example above applies fade-in effect for audio, but not for video. The parameters are pretty much self explanatory. A combination of different parameters can be used to meet your editing requirements.

Overlay Videos

You can try the following if you would like to overlay a video onto a master (background) video, without re-encoding.

ffmpeg.exe -i master_video.mp4 -vf “movie=smaller_inner_video.mp4[inner];[in][inner] overlay=70:70 [out]” completed.mp4

where 70:70 in this example are the positions that you would like the smaller video to be overlaid onto the master.

Crop a Video

The following example shows how you can use FFMPEG to crop a video without re-encoding.

ffmpeg -i input.mp4 -filter:v “crop=1280:200:0:500” -c:a copy output.mp4

where 1280 and 200 are the output size (width and height) of the cropped video, 0 and 500 are positions where the cropping will start.

Extract Audio and Adjust Volume

The following are two common usages of FFMPEG.

The first command extracts an audio track from a video file in the exact format that it was multiplexed info the video file.

The second example shows how you can adjust the volume of an audio file with re-encoding.

ffmpeg -i input.mpg -map 0:1 -acodec copy -vn output.ac3
ffmpeg -i input.ac3 -filter:a “volume=10dB” output2.ac3

Converting a Video without Re-encoding

FFMPEG can be used to convert a video from one format to another. Very often, the video itself to be converted is already encoded in an appropriate format. You just want to convert the container format.

In the following example, the source video is encoded in MPEG-2 in an MKV container. It will be converted to an MPG video. No re-encoding is required since the source video is already in the target format. You can also select one or more audio tracks during conversion if this is part of the requirements.

ffmpeg -i input.mkv -map 0:a:1 -map 0:v -c:v copy -c:a copy output.mpg

Extracting a Portion of Video using FFMPEG

If you would like to extract a portion of a video without re-encoding, consider using FFMPEG. The following example illustrates a command to extract a video from the 24th minute line and for 4 minutes 8 seconds, keeping all audio tracks.

ffmpeg -i input.mp4 -c copy -ss 00:24:00.000 -t 00:04:08.000 -map 0:v -map 0:a output.mp4

The example above may result in blank video in the beginning. If it is more important to have the video than audio, the following can be used (which may cause blank audio in the beginning).

ffmpeg -ss 00:24:00.000 -i input.mp4 -c copy -t 00:04:08.000 -map 0:v -map 0:a output.mp4

The most accurate way to extract part of a video is to re-encode (without -c copy), which may result in loss of quality and takes longer to process. This article describes the topic in details.

Setting the default audio stream using FFMPEG

Here is another use case for FFMPEG. In some projects, after you mixed and matched video and audio streams from different files, the resultant file may not have the default audio stream as desired. You can use the following command to set the default audio stream while you are mixing the video/audio streams.

ffmpeg -i movie.mkv -i audio.dts -map 0:v:0 -map 1:a:0 -map 0:a:0 -c copy -disposition:a:0 default -disposition:a:1 none movie_combined.mkv