ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ffmpeg-map

2021-06-26 18:35:05  阅读:236  来源: 互联网

标签:map ffmpeg 音频 mp4 input 输入


1. 使用 -map 选项选择流
	1.1 examples简单的例子
	1.2 behavior默认行为
2. Syntax语法
	2.1 Modifiers修饰符
	2.2 Order顺序
3. Examples例子
	3.1 选择所有流
	3.2 特定类型的流
	3.3 仅特定视频流
	3.4 来自不同文件的视频和音频
	3.5 除音频外的所有内容
	3.6 特定语言
	3.7 从过滤器中选择输出
	3.8 多路输出
	3.9 可选映射
	3.a 重新排序流
4. See also

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.a 重新排序流

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

4. See also

https://ffmpeg.org/ffmpeg.html#Advanced-options https://ffmpeg.org/ffmpeg.html#Stream-copy https://ffmpeg.org/ffmpeg.html#Stream-selection https://ffmpeg.org/ffmpeg.html#Automatic-stream-selection https://trac.ffmpeg.org/wiki/Map

标签:map,ffmpeg,音频,mp4,input,输入
来源: https://www.cnblogs.com/sztom/p/14938650.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有