在使用FFMPEG的類庫進行編程的過程中,可以直接輸出解復用之後的的音頻數據碼流。只需要在每次調用av_read_frame()之後將得到的視頻的AVPacket存為本地文件即可。
經試驗,在分離MP3碼流的時候,直接存儲AVPacket即可。
在分離AAC碼流的時候,直接存儲AVPacket後的文件可能是不能播放的。
如果視音頻復用格式是TSMPEG2TransportStream),直接存儲後的文件是可以播放的。
復用格式是FLV,MP4等則不行。
因為FLV,MP4這些屬於“特殊容器”。經過仔細對比後發現,調用av_read_frame()後得到的AVPacket裡面的內容是AAC純數據,就是那種不包含ADTS文件頭的AAC數據。因此如果想要得到可以播放的AAC文件,需要在每個AVPacket前面加上7字節ADTS文件頭。具體的ADTS文件頭的格式我還沒有仔細研究,留在今後有時間在做研究了。
本文出自 “leixiaohua1020視音頻技術” 博客,請務必保留此出處http://leixiaohua1020.blog.51cto.com/3974648/1303851