翻译ffmpeg-all文档(21),分离器

1100阅读 0评论2015-07-20 xdsnet
分类:其他平台

分离器

分离器是使得ffmpeg能从特定类型文件中读取多媒体流的组件元素。

当编译ffmepg时,所有支持的分离器都默认被包含,你可以通过编译配置脚本中的--list-demuxers列出所有支持的分离器。

你也可以通过配置--disable-demuxers禁用所有的分离器,如果要在此基础上允许单独的分离器可以选用--enable-demuxer=DEMUXER形式配置,也可以在默认情况下通过--disable-demuxer=DEMUXER禁用个别分离器。

ff*工具集中-formats选项可以列出所有编译支持了的分离器(对多媒体容器的支持情况)

下面介绍当前有效的分离器

applehttp

Apple HTTP Live Streaming(苹果http直播流)分离器

这个分离器会从所有变化流中提取出AVStreams,id字段是码率变化(流)索引数。通过在AVStreams设置丢弃标志(a或者v),调用者可以获取所有变化的流。总的码率变化被放置在元数据关键字段"variant_bitrate"里。

apng

Animated Portable Network Graphics(便携网络图形动画)分离器

这个分离器用于APNG文件。所有的头,从PNG标识到(不包括)第一个作为extradata传输的fcTL块。帧被分割到两个fcTL间的块中,或者是最后一个fcTL到iEND块间。

asf

Advanced Systems Format(高级系统格式)分离器

这个分离器用于ASF文件和MMS网络流

concat

Virtual concatenation script(虚拟级联脚本)分离器

分离器从一个文本文件中读取一个文件列表和其他指令,然后分离它们,就像文件和指令是被混合在一起的(文件对应特定类型流,指令也对应特殊流)

时间戳是以第一个文件开始作为0,然后任何以后的文件都以前一个文件播放完成为开始时间。注意这是全局的,即使所有的流并不是相同长度。

文件中必须有相同的流(相同编码、相同时间基准等等)

每个文件的持续时间用来调整下一个文件的时间戳:如果持续时间不正确(因为这是通过比特率计算出的时间,而文件可能是被窃取出来的),这将导致伪影 (这里指代后续文件不正确的时间戳),这时时间指令就可以用来覆盖调整存储在文件中的(计算出)的持续时间,而把整个时间戳调整正确。

concat语法

这个脚本文件是extended-ASCII(扩展ASCII)文本文件,每个指令一行。空行和前导空格和由“#”开始的行被忽略。有下面的指令:

concat选项

分离器接受如下选项:

flv

Adobe Flash Video Format 分离器

它用于分离FLV文件和RTMP网络流

libgme

Game Music Emu库是一个汇集视频游戏音乐文件模拟器

参考

编译时需要--enable-libquvi以获取支持

gif

Animated GIF(动画GIF)分离器

接受如下选项:

image2

图像文件分离器

这个分离器按指定格式规范(模式)读取一个图像文件列表,语法由选项pattern_type指定。

格式规范可以包含一个后缀扩展名来自动确定包含该图像格式文件。

在列表(序列)中图像文件的尺寸、像素格式和图像格式必须是一样的。

分离器接受下面的选项:

image2例子

mpegts

MPEG-2传输流分离器

rawvideo

原始视频(raw video)分离器

这个分离器允许读取原始视频数据。因为没有报头指定数据参数,为了能正确解码用户必须人为设定一些参数。

接受如下的选项:

例如要用ffplay播放input.raw中的原视频,像素格式是rgb24,分辨率320x240,帧率10则相应命令为:

ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw 

sbg

SBaGen 脚本分离器

这个分离器读取SBaGen脚本, 上一篇:翻译ffmpeg-all文档(20),格式选项
下一篇:翻译ffmpeg-all文档(22),混合器(复用器)