13.解复用器
解复用器是FFmpeg
中配置的元素,可以从特定类型的文件中读取多媒体流。
配置FFmpeg
构建时,默认情况下会启用所有支持的分离器。 可以使用configure
选项--list-demuxers
列出所有可用的列表。
可以使用configure
选项--disable-demuxers
禁用所有解复用器,并使用选项--enable-demuxer = DEMUXER
选择性地启用单个解复用器,或使用选项--disable-demuxer = DEMUXER
禁用它。
ff *
工具的选项-demuxers
将显示已启用的多路分离器列表。 使用-formats
可以查看已启用的分路器和多路复用器的组合列表。
下面介绍一些当前可用的分路器。
13.1 aa
可听格式2,3和4分路器。
此分路器用于分离Audible Format 2,3和4(.aa)
文件。
13.2 applehttp
Apple HTTP Live Streaming
分路。
此分离器呈现来自所有变体流的所有AVStream
。 id
字段设置为比特率变量索引号。 通过在AVStreams
上设置discard
标志(通过在ffplay
中按a'
或v
),调用者可以决定实际接收哪些变体流。 流所属的变体的总比特率在名为variant_bitrate
的元数据密钥中可用。
学习地址:音视频新手快速入门必备系列-FFmpeg+SDL播放器开发实现-学习视频教程-腾讯课堂【文章福利】免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~
13.3 apng
动画便携式网络图形解复用器。
此分路器用于解复用APNG
文件。 所有标头,但PNG
签名,直到(但不包括)第一个fcTL
块作为extradata
传输。 然后将帧拆分为两个fcTL
之间的所有块,或者最后一个fcTL
和IEND
块之间的块。
-ignore_loop bool
如果设置,则忽略文件中的循环变量。
-max_fps int
每秒帧数的最大帧速率(0表示无限制)。
-default_fps int
如果文件中未指定,则以帧/秒为单位的默认帧速率(0表示尽可能快)。
13.4 asf
高级系统格式解复用器。
此分路器用于解复用ASF文件和MMS网络流。
-no_resync_search bool
不要尝试通过查找某个可选的开始代码来重新同步。
13.5 concat
虚级联脚本解复用器。
这个解复用器从文本文件中读取文件列表和其他指令,并将它们一个接一个地解复用,就好像它们的所有数据包已经被多路复用一样。
调整文件中的时间戳,以便第一个文件从0开始,每个下一个文件从前一个文件结束。 请注意,它是全局完成的,如果所有流的长度不完全相同,则可能会导致间隙。
所有文件必须具有相同的流(相同的编解码器,相同的时基等)。
每个文件的持续时间用于调整下一个文件的时间戳:如果持续时间不正确(因为它是使用比特率计算的,或者因为文件被截断,例如),则可能导致伪像。 duration
指令可用于覆盖存储在每个文件中的持续时间。
13.5.1 语法
该脚本是扩展ASCII
的文本文件,每行一个指令。 空行,前导空格和以#
开头的行将被忽略。 以下指令得到承认:
file path
要读取的文件的路径; 必须使用反斜杠或单引号转义特殊字符和空格。
所有后续与文件相关的指令都适用于该文件。
ffconcat version 1.0
确定脚本类型和版本。 如果为-1
,它还将safe
选项设置为1
。
要使FFmpeg
自动识别格式,该指令必须在脚本的第一行完全按原样出现(没有额外的空格或字节顺序标记)。
duration dur
文件的持续时间。 可以从文件中指定此信息; 如果来自文件的信息不可用或不准确,则在此处指定它可能更有效或有帮助。
如果为所有文件设置了持续时间,则可以在整个连接的视频中进行搜索。
inpoint timestamp
在文件的点。 当解复用器打开文件时,它立即寻找指定的时间戳。 寻求完成&#