ffmpeg -map 参数详解

1. 使用 -map 选项选择流

  • top 命令不使用任何流说明符。这是一种绝对的映射方法,无论类型如何,都会选择特定的流。
    • -map 0:0  第一个输入文件的第一个流
    • -map 1:3  第二个输入文件的第四个流
  • bottom 命令包括流说明符(v视频, a音频, s字幕, m元数据)以将流限制为特定类型。
    • -map 0:v:0  第一个输入文件的第一个视频流
    • -map 1:a:2  第二个输入文件的第三个音频流
    • -map 1:s:1  第二个输入文件的第二个字幕流

1.1 examples简单的例子

  • -map 0  从输入索引 #0(第一个输入)中选择所有流。
  • -map 1:a  从输入索引 #1(第二个输入)中选择所有音频流。
  • -map 3:s:4  从输入索引#3(第四个输入)选择字幕流索引#4(第五个字幕流)。
  • -map 0 -map -0:s  将从输入索引 #0(第一个输入)中选择除字幕之外的所有流。-指负映射。

1.2 behavior默认行为

如果您不使用该-map选项,则默认流选择行为将自动选择流。

  • 默认流选择不会自动选择所有流。
  • 每种类型仅选择 1 个流。例如,如果输入有 3 个视频流,它只会选择 1 个。
  • 默认流选择将根据特定标准选择流。
  • 使用该-map选项会禁用默认流选择行为,并允许您手动选择流。

2. Syntax语法

-map input_file_index:stream_type_specifier:stream_index

  • input_file_index  指的是一个输入,默认情况下将包括它的所有流。
  • stream_type_specifier  (可选)是一个流说明符,它将选择限制为特定的流类型。流符包括vIDEO,aUDIO,subtitles,dATA,一个ttachments。下面的大多数示例都使用流说明符。
  • stream_index  (可选)将选择一个特定的流。如果stream_type_specifier使用,则stream_indexonly 引用选定的流类型并忽略所有其他流类型。

注意:索引号从 0 开始。所以第一个输入或流是#0,第二个输入或流是#1,第三个输入或流是#2,等等。

2.1 Modifiers修饰符

  • -索引input_file_index,如-map -0:v,创建了一个负的映射。这不包括先前map已经选择的流。
  • 尾随?,例如-map 1:a?,将允许map是可选的。如果map不匹配任何流,则map将被忽略而不是失败。请注意,如果使用无效,映射仍然会失败input_file_index;例如,如果map引用不存在的输入。

2.2 Order顺序

-map order 确定输出中的流顺序。

映射按顺序应用。这在使用负映射时很有用。

3. Examples例子

提示:您可以添加-c copy到这些示例中的许多以启用流复制模式。如果您只想多路复用并避免编码,这很有用。

3.1 选择所有流

单输入:

ffmpeg -i input.avi -map 0 output.mkv

多个输入:

ffmpeg -i input0.mkv -i input1.mp4 -i input2.wav -map 0 -map 1 -map 2 output.mkv

使用流复制重新混合(无编码):

ffmpeg -i input.avi -map 0 -c copy output.mkv

3.2 特定类型的流

仅视频流

ffmpeg -i input.mp4 -map 0:v output.mp4

仅音频流

ffmpeg -i input.mp4 -map 0:a output.mp4

3.3 仅特定视频流

选择第 5 个视频流:

ffmpeg -i input.mkv -map 0:v:4 output.mp4

3.4 来自不同文件的视频和音频

ffmpeg -i video.mp4 -i audio.m4a -map 0:v -map 1:a output.mp4

3.5 除音频外的所有内容

使用负映射:

ffmpeg -i input.mp4 -map 0 -map -0:a output.mp4

3.6 特定语言

包括所有视频和所有带有西班牙语元数据的流:

ffmpeg -i input.mkv -map 0:v -map 0:m:language:spa output.mp4

见ISO名单639-1码为3个字母的语言名称。

https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes

3.7 从过滤器中选择输出

在这个例子中,过滤后的视频被命名[v],过滤后的音频被命名为[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

您几乎可以使用任何任意名称来标记过滤器输出。

3.8 多路输出

将视频输出到video.mp4. 将音频流索引 #1(第二个音频流)输出到audio_1.mp3. 将音频流索引 #3(第四个音频流)输出到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

3.9 可选映射

如果流不存在, 添加尾随问号 ( ?)-map将忽略映射。

要映射视频和音频流并在不存在音频流时忽略音频映射:

ffmpeg -i input.webm -map 0:v -map 0:a? output.mkv

如果改为使用-map 0:a,并且没有音频流,ffmpeg则将失败并显示Stream map '0:a' matches no streams. To ignore this, add a trailing '?' to the map..

3.10 重新排序流

你的顺序-map选择决定了输出流的顺序。在这个例子中,输入文件将音频作为流#0 和视频作为流#1(这可能但不寻常)。重新定位视频的示例,使其首先列出,然后是音频:

ffmpeg -i input.mp4 -map 0:v -map 0:a -c copy output.mp4

4. See also

ffmpeg Documentationhttps://ffmpeg.org/ffmpeg.html#Advanced-options

ffmpeg Documentationhttps://ffmpeg.org/ffmpeg.html#Stream-copy

ffmpeg Documentationhttps://ffmpeg.org/ffmpeg.html#Stream-selection

ffmpeg Documentationhttps://ffmpeg.org/ffmpeg.html#Automatic-stream-selection

Map – FFmpeghttps://trac.ffmpeg.org/wiki/Map

ffmpeg命令行map参数的使用_路儿的博客-CSDN博客_ffmpeg map介绍理解-map参数的最好办法就是想像一下怎么去告诉ffmpeg你要从源文件中选择/拷贝哪个流到输出文件。输出文件的stream顺序取决于在命令行中-map的参数顺序。下面有一些例子。默认默认操作(没有指定map参数),比如:ffmpeg -i INPUT OUTPUT本质上,是从所有输入中发现“最高质量”(单个)视频输入流和“最高质量”(单个)音频输入流,并“发送”到O...https://blog.csdn.net/xiaoluer/article/details/81136478

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
引用中提到了关于使用`-map`选项的说明,该选项可以告诉ffmpeg从输入源中选择/拷贝哪个流作为输出。使用`-map`选项时,可以通过指定流的索引来选择特定的流。例如,`-map 0`表示选择第一个输入文件的所有流,`-map 0:0`表示选择第一个输入文件的第一个流,`-map 1:3`表示选择第二个输入文件的第四个流。 在具体的命令`ffmpeg -map`后面还可以跟着其他参数和选项,以进一步指定输出文件的编码格式等。例如,`ffmpeg -i xsg01-15.mkv -i 01_bglz.MP3 -map 0:v -vcodec copy -map 1:a -acodec copy hello1.mkv`表示将第一个输入文件的视频流复制到输出文件,并将第二个输入文件的音频流复制到输出文件。 需要注意的是,如果没有明确指定`-map`选项,ffmpeg会自动选择输入源中的视频流和音频流,通常选择分辨率最高的视频流和通道数最多的音频流作为默认输出。同时,字幕流会选择第一个被检索到的字幕流。 所以,根据您的问题中提供的引用内容,无法确定具体的命令是什么,因为`ffmpeg -map`后面的具体参数和选项未被提供。如果您能提供更多细节或具体的问题,我将非常乐意为您提供更准确的回答。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [ffmpeg-commands](https://download.csdn.net/download/weixin_42175516/15615604)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [FFMPEG-map指令](https://blog.csdn.net/bing_goo/article/details/128953753)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴国进

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值