ffmpeg流选择

FFmpeg可以识别5种流类型:音频(audio, a),视频(video, v),字幕(subtitle, s),附加数据(attachment, t)和普通数据(data, d)。
流选择(stream selection)是从输入文件中选定某些流进行处理,流选择有两种模式,1) 使用-map选项手动指定要选择的流;2) 无-map选项时由FFmpeg根据相应规则自动选择流。

流选择自动模式
自动选择模式下,每种类型的流只选择一路,规则如下:
音频流:选择具有最多通道的流,若多个音频流通道数相同且通道数最多,则选第一个。
视频流:选择具有最高分辨率的流,若多个视频流分辨率相同且是最高分辨率,则选第一个。
字幕流:选择第一个字幕流。注意:字幕流有文本字幕流和图形字幕流,输出格式默认的字幕编码器仅处理其支持的字幕类型。

流选择手动模式
手动选择模式下,要选定的流由-map选项后的流指定符(stream specifer)指定。stream_specifier语法如下:
[-]file_index:stream_type[:stream_index]
带-表示排除此流,不带-表示选中此流。文件序号file_index和流序号stream_index都是从0开始计数。
几个特殊的stream_specifier如下:
-map 0 选择所有类型的所有流。
-map i:v 选择文件i中所有的视频流,i:a、i:s等同理。
-map -vn 排除所有视频流,-an、-sn等同理。

ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
从文件a.mov中选择序号为2的流(流标签0:2),以及从b.mov中选择序号为6的流(流标签1:6),然后共同复制输出到out.mov

流指定符stream_specifier
有些选项(比如设置码率、设置编解码器)是针对流的。一个选项具体作用于哪些流,由stream_specifier指定。
stream_specifier附在选项后面,由“:”分隔。例如:-codec:a:1 ac3中a:1就是stream_specifier,表示编码器是对第2音频流以ac3编码。stream_index:匹配流的索引,例如-threads:1 4表示对2号流采用4个线程处理。
一个空的stream_specifier将匹配所有的流。例如:-b:a 128k匹配所有音频流,而-codec copy或-codec: copy则匹配所有流。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值