翻译ffmpeg-all文档(16),音频编码器

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

16 音频编码器

介绍当前可用的音频编码器

aac

AAC(Advanced Audio Coding )编码器

当前原生(内置)编码器还处于实验阶段,而且只能支持AAC-LC(低复杂度AAC)。要使用这个编码器,必须选择 ‘experimental’或者'lower'

因为当前还处于实验期,所以很多意外可能发生。如果需要一个更稳定的AAC编码器,参考libvo-aacenc,然而它也有一些负面报告。

aac选项

b

设置码率,单位是bits/s,是自动恒定比特率(CBR)模式的码率 

q

设置为可变比特率(VBR)模式。此选项仅用于ffmpeg命令行工具。库接口是`global_quality` 

stereo_mode

设置立体声编码模式,可能值有:

‘auto’

    在编码时自动判断
‘ms_off’

    禁止中端的(即2.0声道,而不是2.1声道)编码,这时默认值
‘ms_force’

    强制中端编码,即强制2.1声道 encoding. 

aac_coder

设置AAC编码方法,可能值:

‘faac’

    FAAC-启发方法.

    这个方法是显示方法的简化实现版,它为频带能量比设置阀值,降低所有量化步骤找到合适的量化失真阀值,对低于频带阀值的频带进行编码

    这种方法的质量稍微好于下面介绍的两回路搜索法,但很慢
‘anmr’

    基于网格的ANMR(平均噪音Average noise to mask ratio)掩比方案

    理论上它效果最好,但最慢
‘twoloop’

    双环搜索(Two loop searching)法

    该方法首先根据波段阀值量化并试图通过添或调整个别量化点减去一个特征值得到一个最佳组合

    这种方法和FAAC方法质量相当,是默认值
‘fast’

    固定量化法

    该方法设置所有带定量化,这是最快的方法,但质量最差 

ac3和ac3修订版

AC-3音频编码器

这一编码器定义在 ATSC A/52:2010 和ETSI TS 102 366,以及RealAudio 3 (通过dnet)

AC3编码器使用浮点运算,而ac3_fixed编码器仅用定点整数的数学运算。这并不意味着一个人总是更快,只是一个或另一个可能更适合一个特定 的系统。浮点编码通常会产生一个给定的比特率,更好的音频质量。ac3_fixed编码器没有任何输出格式的默认编码,所以它必须显式使用选项-acodec ac3_fixed指定。

AC-3元数据

AC-3元数据选项用于设置音频参数的描述,它们大多数情况下不影响音频编码本身。这些选项不直接影响比特流或影响解码播放,只是提供信息。几个选项会增加音频数据比特输出流,从而影响输出质量。这将在下面的选项列表中注记出来:

下面文档介绍了几个公开文件文档:

AC-3元数据控制选项
AC-3中置混合水平
AC-3音频制作信息

音频制作信息描述了可选的混合环境信息,应用中要么都没有,要么同时有两个(即下面两个需要同时设置/或不设置)

其他AC-3元数据选项

-original boolean

原始流指示器。指音频是原始源而不是副本。

0
off

    非原始源 
1
on

    原始源 (默认) 

其他扩展比特流信息

这些扩展比特流选项都被定义在A/52:2010标准的附录D中。它分为2个部分(组)。如果组中任意一个参数被指定,则组中所有的值将以默认值写入到流中。如果mixing levels被设置,则对支持备用比特流语法( Alternate Bit Stream Syntax)的解码器将采用这个值以替代center_mixlevsurround_mixlev选项定义。

其他扩展比特流信息 第一部分
其他扩展比特流信息 第二部分

其他AC-3编码器选项

浮点AC-3编码特有选项

这些选项只在浮点AC-3编码时有效,整形AC-3时是不起作用的。

flac

FLAC(自由低损失音频编码——Free Lossless Audio Codec)编码器

flac选项

下面是FFmpeg中flac编码可用选项

libfaac编码

libfaac 是AAC(Advanced Audio Coding)编码器的再封装

要使用它需要libfaac头文件和库存在配置。你还需要在编译ffmpeg时通过--enable-libfaac --enable-nonfree进行配置。

该编码器高质量版本参考[aacenc]

对更多信息,参考libfaac项目介绍

libfdk-aac选项

下面是可用的一些选项:

下面是libfdk_aac私有选项

libfdk_aac 例子

libmp3lame

LAME (Lame Ain’t an MP3 Encoder) MP3 编码器封装

需要在编译时配置 libmp3lame 头和库,并且显式设置--enable-libmp3lame

参考libshine 这个整数修正MP3编码器(虽然质量较低)

libmp3lame选项

下面是支持的选项(lame-XXX等效选项列在括号中):

libopencore-amrnb

开放核心自适应多速率窄带(OpenCORE Adaptive Multi-RateNarrowband)编码器

需要相应的头和库进行编译,并利用 --enable-libopencore-amrnb --enable-version3以允许编译配置

是单声道编码器,常用于8k采样率,可以通过设置strictunofficial或者更低来选用更低采样率

libopencore-amrnb选项

libshine

Shine整形Mp3编码的封装

Shine是一种整形MP3编码器,它在没有FPU(浮点协处理)的平台上可以更快更好,例如一些armel CPU或者一些电话或者平板上。但是不要期望获得更好的品质(与LAME或者其他产品级编码器比较)。同时,根据项目主页,该编码器可能并不提供给免费 bug修正,代码是很久以前写的,已经有5年以上没有更新了。

只支持立体声和单声道,而且是CBR模式。

项目在(最后更新2007年)

需要头和库支持,并需要配置--enable-libshine打开编译

参考[libmp3lame]

libshine选项

这个库封装支持如下选项,其对应的shineenc-XXXXX形式等效选项列在括号中

libtwolame

双Lame Mp2 编码器封装

编译需要头和库,并且显式打开--enable-libtwolame

libtwolame选项

下面是支持的选项,等效的libtwolame-XXX选项列在括号中

libvo-aacenc

VisualOn AAC编码器

编译时需要头和库文件,以及利用配置选项--enable-libvo-aacenc --enable-version3打开

它类似于[原生FFmpeg AAC],可以处理多个源

libvo-aacenc选项

VisualOn AAC编码器只支持AAC-LC和最多2个声道,而且是CBR

libvo-amrwbenc

VisualOn 自适应多速率宽带编码器

编译时需要头和库文件,以及利用配置选项--enable-libvo-amrwbenc --enable-version3打开

只支持单声道,通常为16000Hz采样,可以通过设置strictunofficial来覆盖为更低采样

libvo-amrwbenc选项

libopus

libopus (Opus交互音频编码) 的封装

编译时需要头和库文件,以及利用配置选项--enable-libopus打开

libopus

更多选项可以通过opus-tools的 opusenc查询,下面仅仅是一些封装中支持的选项(对应的opusenc-XXXX选项列在括号中):

libvorbis

libvorbis编码器封装

编译要求头文件和库,还需要专门用--enable-libvorbis以允许使用

libvorbis选项

下面的选项支持libvorbis封装。等效的oggenc-XXX选项部分列在括号中。

为了更多的了解libvorbisoggenc选项,请参考oggenc(1)手册

libwavpack

wavpack的通过libwavpack的封装

当前只支持无损32位整数样本模式

编译要求头文件和库,还需要专门用--enable-libwavpack以允许使用

注意libavcoder原生编码器已支持wavpack编码,而不用使用这个扩展编码器了。相关参考[wavpackenc]

libwavpack选项

wavpack命令行工具相应选项都列在括号中:

wavpack

wavpack无损音频压缩

是libavcodec的原生wavpack编码。这个编码也可以利用libwavpack完成,但现在看来完全没有必要。

参看[libwavpack]

wavpack选项

等效的wavpack命令行工具列在括号中

wavpack通用选项

下面是wavpack编码的通用选项,下面只介绍了个别特别用于wavpack的选项,其他更多选项参考[编码选项部分]

wavpack私有选项
上一篇:翻译ffmpeg-all文档(15),编码器
下一篇:翻译ffmpeg-all文档(17),视频编码器