Map - FFmpeg
Map - FFmpeg
The -map option is used to choose which streams from the input(s) should be included in the output(s). The -map option can also be used to exclude specific streams Simple examples
with negative mapping. Default behavior
Syntax
Modifiers
Order
Examples
Choose all streams
Video streams only
Audio streams only
A specific video stream only
Video and audio from different files
Everything except audio
Specific language
Choose outputs from filters
Multiple outputs
Optional mapping
Re-order streams
See also
The commands in the diagram above will select the video from input0.mp4 and the 3rd audio stream from input1.mkv to output.mp4. The commands do the same thing, but use different syntax to map
streams:
The top command does not use any stream specifiers. This is an absolute method of mapping and will choose a specific stream regardless of type. -map 1:3 refers to "second input:fourth stream".
The bottom command includes stream specifiers (v for video, a for audio) to limit the streams to a specific type. -map 1:a:2 refers to "second input:audio only:third audio stream".
Simple examples
-map 0 From input index #0 (the 1st input) select all streams.
-map 1:a From input index #1 (the 2nd input) select all audio streams.
-map 3:s:4 From input index #3 (the 4th input) select subtitle stream index #4 (the fifth subtitle stream).
-map 0 -map -0:s Will select all streams from input index #0 (the 1st input) except subtitles. The - indicates negative mapping.
Default behavior
If you do not use the -map option then the default stream selection behavior will automatically choose streams.
Default stream selection will not automatically choose all of the streams.
Only 1 stream per type will be selected. For example, if the input has 3 video streams it will only choose 1.
The default stream selection will choose streams based upon specific criteria.
Using the -map option disables the default stream selection behavior and allows you to manually choose streams.
Syntax
The syntax is:
-map input_file_index:stream_type_specifier:stream_index
input_file_index refers to an input and by default will include all of its streams.
stream_type_specifier (optional) is a stream specifier which will limit the selection to a specific stream type. Stream specifiers include video, audio, subtitles, data, attachments. Most of the examples
below use stream specifiers.
stream_index (optional) will select a specific stream. If stream_type_specifier is used then the stream_index only refers to the selected stream type and ignores all other stream types.
Note: Index numbers start from 0. So the first input or stream is #0, second input or stream is #1, third input or stream is #2, etc.
Modifiers
A - character before the input_file_index, such as -map -0:v, creates a negative mapping. This excludes streams already selected by a previous map. See example.
A trailing ?, such as -map 1:a?, will allow the map to be optional. If the map matches no streams the map will be ignored instead of failing. Note the mapping will still fail if an invalid input_file_index is
used; such as if the map refers to an input that does not exist. See example.
Order
Examples
Tip: You can add -c copy to many of these examples to enable stream copy mode. This is useful if you want to mux only and avoid encoding.
Single input:
Multiple inputs:
Specific language
Include all video and all streams with Spanish language metadata:
See List of ISO 639-1 codes for the 3 letter language names.
In this example the filtered video is named [v] and the filtered audio is named [a]:
ffmpeg -i input.mp4 -i logo.png -i audio.mp3 -filter_complex "[0]scale=1280:-1[bg];[bg][1]overlay[v];[2:a]volume=-3dB[a]" -map "[v]" -map "[a]" output.mp4
You can use almost any arbitrary names to label the filter outputs.
Multiple outputs
Output video to video.mp4. Output audio stream index #1 (the 2nd audio stream) to audio_1.mp3. Output audio stream index #3 (the 4th audio stream) to audio_3.wav:
ffmpeg -i input.mkv -map 0:v video.mp4 -map 0:a:1 audio_1.mp3 -map 0:a:3 audio_3.wav
Optional mapping
Adding a trailing question mark (?) to -map will ignore the mapping if the stream does not exist.
To map the video and audio streams and ignore the audio mapping if no audio streams exist:
If -map 0:a is used instead, and there are no audio streams, then ffmpeg will fail with Stream map '0:a' matches no streams. To ignore this, add a trailing '?' to the map..
Re-order streams
The order of your -map options determines the order of the streams in the output. In this example the input file has audio as stream #0 and video as stream #1 (which is possible but unusual). Example to re-
position video so it is listed first, followed by the audio:
See also
-map option documentation
Attachments
(1)
map.png
(22.5 KB
) - added by llogan 2 years ago.
“diagram of -map option”
Note:
See TracWiki
for help on using the wiki.