Nifty ffmpeg commands
Written 2023-11-25 by Kalle
2 min read | 362 words
Intro
Below is a list of nifty ffmpeg commands for various use cases
Concatenate two or more video files
Given a video split in two files, such as file1.mp4 and file2.mp4, the following command concatenates the two without re-encoding them. The result is a single video file output.mp4.
Step 1
Create files.txt in the same directory as the video files and add the following to it:
file './file1.mp4'
file './file2.mp4'Step 2
Run the following command:
ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4Extract part of a video file
When digitizing a VHS, I usually end up with a few initial seconds of useless noise and a few minutes of noise at the end. To trim this, I use the following commands (assuming my initial file is named input.mp4):
To cut video from [start] for [duration]:
ffmpeg -ss [start] -i input.mp4 -t [duration] -map 0 -c copy output.mp4with [start] and [duration] formatted as 00:01:23.000 or 83 (seconds).
To cut the video from [start] to [end]:
ffmpeg -copyts -ss [start] -i input.mp4 -to [end] -map 0 -c copy output.mp4Replace audio in a video file
Given a video file v.mp4 and an audio file a.mp3, which have the same duration, the following command outputs a new file new.mp4 with the original audio in v.mp4 replaced by a.mp3.
ffmpeg -i v.mp4 -i a.mp3 -c:v copy -map 0:v:0 -map 1:a:0 new.mp4Extract audio from video file
Given a video file v.webm, the following command outputs a new file a.opus which contains the audio from v.webm:
ffmpeg -i v.webm -map 0:a -c copy a.opusNote that the file extensions must be changed to the ones relevant for the specific file. .webm and .opus are relevant for files downloaded by youtube-dl.
Split audio file into chunks
Given an audio file input.opus, the following command outputs N audio files, each of which is 300 seconds long.
ffmpeg -i input.opus -f segment -segment_time 300 -c copy out%03d.opusThe .opus extension can be replaced with other audio file formates.