九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
AAC文件格式解析

AAC文件格式解析

(今天有了一個(gè)新任務(wù),要把RTSP的音頻流存成文件,格式是AAC的。
網(wǎng)上找了很久,也沒(méi)有找到關(guān)于AAC文件的格式。
后來(lái)請(qǐng)教了一個(gè)專門作編解碼的同事,在ISO MPEG的文檔里可能會(huì)有相關(guān)的信息。
花了很長(zhǎng)時(shí)間去找ISO的文檔,ISO是收費(fèi)的,網(wǎng)絡(luò)是免費(fèi)了,雖然難了點(diǎn),但還是找到了部分的文檔。其中辛苦不足為外人道也。
在找了個(gè)quicktime可以播放的aac文件,邊看文檔,邊分析一下,總算是基本搞定了。但是有的文檔沒(méi)找到,還有些字段不知是什么意思。不管了,反正能放了:)
 
AAC格式是frame head + frame length, 沒(méi)有文件頭。感到比較奇怪的,我覺(jué)得應(yīng)該是有文件頭的,文檔上也有adts_fixed_header,但是好像沒(méi)有頭quicktime也能放,那就先不管了吧。
參見(jiàn)ISO/IEC 11496-3 1.1 Interchange format streams
 
 
adts_frame()
{
byte_alignment()
adts_fixed_header()
adts_variable_header()
adts_error_check()
óISO/IEC ISO/IEC CD 14496-3 Subpart 4: 1998
MPEG-4 CD 14496-3 Subpart 4 / 20:09 / 22.06.98 11
for( i=0; i<number_of_raw_data_blocks_in_frame+1; i++) {
raw_data_block()
}
}
 
adts_fixed_header()
{
syncword      12 bslbf
ID        1 bslbf
layer       2 uimsbf
protection_absent    1 bslbf
profile      2 uimsbf
sampling_frequency_index  4 uimsbf
private_bit     1 bslbf
channel_configuration   3 uimsbf
original/copy     1 bslbf
home       1 bslbf
emphasis      2 bslbf
}
 
adts_variable_header()
{
copyright_identification_bit 1 bslbf
copyright_identification_start 1 bslbf
frame_length 13 bslbf
adts_buffer_fullness 11 bslbf
number_of_raw_data_blocks_in_frame 2 uimsfb
}
 
 存文件的代碼:
   static char head1[7];
   int temp = frame_len + 7;
   head1[0] = (char)0xff;
   head1[1] = (char)0xf9;
   int sr_index = rtp_aac_get_sr_index(aac_param_ptr->sample_rate);
   head1[2] = (0x01<<6)|(sr_index<<2)|0x00;
   //head1[3] = (char)0x80;  //雙聲道? a=rtpmap:97 mpeg4-generic/44100/2
   head1[3] = (char)0x40;    //單聲道? a=rtpmap:97 mpeg4-generic/44800
   head1[4] = (temp>>3)&0xff;
   head1[5] = ((temp&0x07)<<5|0x1f);
   head1[6] = (char)0xfc;
  
   fwrite(head1,1,sizeof(head1),g_file_audio);
   fwrite(frame_buf,1,frame_len,g_file_audio);
 
其中frame_buf是一幀的數(shù)據(jù),framec_len是幀長(zhǎng)度。
 
簡(jiǎn)單的說(shuō)明和困惑:
長(zhǎng)度為7個(gè)字節(jié)
 
syncword       12 bit   1111 1111 1111
ID                 1 bit     1 for mpeg audio
layer              2 bit     not sure, I set to 00
protection_absent   1 bit   set to 1
profile           2 bit   for AAC main
sampling_frequency_index   4 bit   sample rate index
private_bit    1 bit     set to 0
channel_configuration   3 bit  是不是聲道數(shù)?
在SDP中有  a=rtpmap:97 mpeg4-generic/44100/2  此時(shí)  channel_configuration = 010
a=rtpmap:97 mpeg4-generic/44800   此時(shí) channel_configuration = 001
original/copy  1 bit    set to 0
home      1 bit     set ot 0
emphasis  2bit  set to 00
copyright_identification_bit   1 bit   set to 0
copyright_identification_start  1 bit  set to 0
frame_length                     13 bit   這個(gè)長(zhǎng)度是包括head 7個(gè)字節(jié)的
最后添FC    最后兩個(gè)字段沒(méi)搞清楚
 
文檔不全,對(duì)編解碼也知之甚少,只能靠分析別人的文件和試驗(yàn)了,至少能出聲音了。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
AAC Advanced Audio Coding(高級(jí)音頻編碼)資料整理
AAC ADTS LATM 格式分析
AAC ADTS格式分析
用faad解碼AAC(ADTS封裝)
MP4(二)(轉(zhuǎn))
如何在AAC數(shù)據(jù)中獲取PTS?
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服