杜比编码器ac3
ac3編碼器ffmpeg本身帶有,不需要第三方庫。
以下結論均是實測得到。
ac3對于ffmpeg多聲道中的宏,如下宏不支持:
not sport:AV_CH_LAYOUT_7POINT1_WIDE_BACK AV_CH_LAYOUT_7POINT1 AV_CH_LAYOUT_7POINT1_WIDE AV_CH_LAYOUT_OCTAGONAL AV_CH_LAYOUT_HEXADECAGONAL AV_CH_LAYOUT_STEREO_DOWNMIX
可以看出8聲道的宏全不支持。
七聲道的宏也全不支持:
AV_CH_LAYOUT_6POINT1
AV_CH_LAYOUT_6POINT1_BACK
AV_CH_LAYOUT_6POINT1_FRONT
AV_CH_LAYOUT_7POINT0
AV_CH_LAYOUT_7POINT0_FRONT
6聲道的宏如下:
not sport:AV_CH_LAYOUT_6POINT0 AV_CH_LAYOUT_6POINT0_FRONT AV_CH_LAYOUT_HEXAGONAL
sport:AV_CH_LAYOUT_5POINT1_BACK AV_CH_LAYOUT_5POINT1 再試試其他六個聲道的。
AV_CH_LAYOUT_5POINT1_BACK時,用ac3編碼,第三個和第四個聲道和其他聲道耦合。第五個和第六個也與其他聲道耦合。各個聲道音頻跳動很大。AV_CH_LAYOUT_5POINT1聲道全耦合,跳動也很大。
ac3同樣不支持以下宏
AV_MATRIX_ENCODING_DOLBYEX 2個通道
AV_MATRIX_ENCODING_DOLBY 1個通道
AV_MATRIX_ENCODING_DPLII 1個通道
AV_MATRIX_ENCODING_DOLBYHEADPHONE 2個通道
AV_CH_LAYOUT_NATIVE 1個通道,它的意思是指指定解碼器輸出的信道順序為本機編碼器信道順序。
ac3支持下面宏
AV_MATRIX_ENCODING_NONE
AV_MATRIX_ENCODING_DPLIIX 2個通道
AV_MATRIX_ENCODING_DPLIIZ 1個通道
AV_MATRIX_ENCODING_NB 3個通道
ac3編碼后的音頻格式為fltp。
ac3不支持的音頻格式:
AV_SAMPLE_FMT_S32
AV_SAMPLE_FMT_FLT
AV_SAMPLE_FMT_S16
AV_SAMPLE_FMT_DBL
AV_SAMPLE_FMT_U8
AV_SAMPLE_FMT_NONE
AV_SAMPLE_FMT_U8P
AV_SAMPLE_FMT_S16P
AV_SAMPLE_FMT_S32P
AV_SAMPLE_FMT_DBLP
AV_SAMPLE_FMT_S64
AV_SAMPLE_FMT_S64P
AV_SAMPLE_FMT_NB
ac3支持的音頻格式:
AV_SAMPLE_FMT_FLTP
eac3支持的宏:
AV_CH_LAYOUT_5POINT1
AV_CH_LAYOUT_5POINT1_BACK
eac3不支持的:
AV_CH_LAYOUT_6POINT0
AV_CH_LAYOUT_6POINT0_FRONT
AV_CH_LAYOUT_HEXAGONAL
AV_CH_LAYOUT_6POINT1
AV_CH_LAYOUT_6POINT1_BACK
AV_CH_LAYOUT_6POINT1_FRONT
AV_CH_LAYOUT_7POINT0
AV_CH_LAYOUT_7POINT0_FRONT
AV_CH_LAYOUT_7POINT1
AV_CH_LAYOUT_7POINT1_WIDE
AV_CH_LAYOUT_7POINT1_WIDE_BACK
AV_CH_LAYOUT_OCTAGONAL
AV_CH_LAYOUT_HEXADECAGONAL
AV_CH_LAYOUT_STEREO_DOWNMIX
對于6-8聲道的布局aac支持情況如下
aac不支持的宏:
AV_CH_LAYOUT_5POINT1
AV_CH_LAYOUT_6POINT0
AV_CH_LAYOUT_6POINT0_FRONT
AV_CH_LAYOUT_HEXAGONAL
AV_CH_LAYOUT_6POINT1
AV_CH_LAYOUT_6POINT1_BACK
AV_CH_LAYOUT_6POINT1_FRONT
AV_CH_LAYOUT_7POINT0
AV_CH_LAYOUT_7POINT0_FRONT
AV_CH_LAYOUT_7POINT1_WIDE
AV_CH_LAYOUT_HEXADECAGONAL
AV_CH_LAYOUT_STEREO_DOWNMIX
aac支持的宏:
AV_CH_LAYOUT_5POINT1_BACK //解碼后音柱不正常。
AV_CH_LAYOUT_7POINT1
AV_CH_LAYOUT_7POINT1_WIDE_BACK //解碼后音柱正常
這些宏定義轉換成二進制數后,有幾個1就代表有幾個通道。
多的通道由低的通道布局組成,如AV_CH_LAYOUT_STEREO就是由AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT通道組成,這里不僅是組成關系,還有通道的順序,第一個通道就是AV_CH_FRONT_LEFT,第二個通道就是AV_CH_FRONT_RIGHT。
第四個無法顯示的聲道是AV_CH_BACK_LEFT
根據音頻格式宏,得出占幾個字節。
av_get_bytes_per_sample(AV_SAMPLE_FMT_S16)=2,av_get_bytes_per_sample(AV_SAMPLEAV_SAMPLE_FMT_S32)=4
返回值是一個單通道在一個通道布局中的第幾個聲道,注意第一個聲道是0,比如AV_CH_FRONT_RIGHT在AV_CH_LAYOUT_STEREO中的聲道數是1。
int av_get_channel_layout_channel_index(uint64_t channel_layout,uint64_t channel);
在ffmpeg4.4.1中包含這個宏,它支持22個聲道:
AV_CH_LAYOUT_22POINT2
根據通道個數,獲得默認的布局。
int64_t av_get_default_channel_layout(int nb_channels)
根據通道布局獲得對應的通道數
int av_get_channel_layout_nb_channels(uint64_t channel_layout)
DTS:即數字影院系統(Digital Theater Systems),是一種多聲道的編碼格式,但它的編碼碼率很高,為768-1536kbps,聽覺效果優于ac3,但它的壓縮比只有3:1。
ac3被廣泛用于5.1聲道,它的編碼碼率為384-448Kbps,分為左/右前置,中置/低音,左/右后置環繞。低音聲道是120Hz以下。AC-3要求的pcm輸入流的采樣頻率可以為48 kHz、 44.1 kHz、 或 32 kHz 中 的 任何 一種,而且是20bits。壓縮比是1:9~10。AC3在ffmpeg中支持的音頻格式宏只有AV_SAMPLE_FMT_FLTP,編碼后產生的音頻格式宏也是AV_SAMPLE_FMT_FLTP。ac3編碼,實測每次送進編碼器的采樣數可以是1536,根據其編碼器原理,猜測只支持這個采樣數,未實證考究。
ac3的一幀包含有6個blocks,以及一個header。header中包含ac3的類型,采樣率信息,幀長,輸入通道數等。
像MP3、AAC一樣,AC3利用聲音的掩蔽特性,使用改進的離散余弦變換(MDCT)進行壓縮。
E-AC-3支持多達15個全帶寬音頻通道,最大比特率為6.144Mb/s。音頻聲道:1.0到15.1(即從單聲道到15個全音域通道和一個低頻聲道)
Dolby Surround 7.1 格式包括8個通道,并按以下通道布局:Left(左),Centre(中),Right(右),Low-Frequency Effects (LFE)(低頻效果),Left Surround(左環繞),Right Surround(右環繞),Back Surround Left (new)(后左環繞(新的)) 和 Back Surround Right (new)(后右環繞(新的))
普通聲道向ac3編碼聲道映射表
https://bbs.csdn.net/topics/340266520?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164082489116780269890257%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164082489116780269890257&biz_id=&utm_medium=distribute.pc_search_result.none-task-community_post-2allfirst_rank_ecpm_v1~rank_v31_ecpm-16-340266520.pc_search_result_control_group&utm_term=ac3%E7%BC%96%E7%A0%81&spm=1018.2226.3001.4187
總結
- 上一篇: HaaS506 - M320快速开始
- 下一篇: 从零开始完整开发基于websocket的