What Does -map 0:v:0 Mean in FFmpeg?
When working with FFmpeg, the -map option is crucial for
selecting which specific audio, video, or subtitle streams from your
input files should be processed into your output file. This article
explains the exact anatomy of the -map 0:v:0 notation,
breaking down what each character represents so you can precisely
control your media stream selection.
Breaking Down the Notation
The -map 0:v:0 command is a stream specifier that tells
FFmpeg exactly which stream to select from the input. It is divided into
three distinct parts separated by colons:
0(The Input File Index): The first number represents the input file. FFmpeg uses zero-based indexing, meaning the first input file specified with-iis file0, the second is file1, and so on.v(The Stream Type): The letter in the middle specifies the media type. In this case,vstands for video. Other common specifiers includeafor audio andsfor subtitles.0(The Stream Index): The final number represents the stream index of the specified type within that file. Like file indexing, this also starts at zero. Therefore,0refers to the first video stream found in the selected file.
Combined, -map 0:v:0 instructs FFmpeg to select
the first video stream from the first input file.
Practical Example
To see this in action, consider a command where you want to extract only the video from a file, ignoring any audio or subtitle tracks:
ffmpeg -i input.mp4 -map 0:v:0 -c:v copy output.mp4In this command: 1. -i input.mp4 is the first input file
(index 0). 2. -map 0:v:0 targets the first
video stream of that input. 3. -c:v copy copies the video
stream directly without re-encoding. 4. output.mp4 saves
the result containing only that video stream.
Why Use Specific Mapping?
By default, if you do not use the -map option, FFmpeg
employs “stream selection” heuristics. It automatically selects only one
stream of each type (the best quality video, the first audio track,
etc.) and discards the rest.
Explicitly using -map 0:v:0 is highly useful when: * You
are working with complex containers that contain multiple video streams
(such as multi-angle videos or embedded video thumbnails) and you want
to ensure you grab the correct one. * You want to exclude audio,
subtitles, or metadata from the output file entirely. * You are building
complex filtergraphs where precise stream routing is required.