解决FFmmpeg合成的MP4文件播放没声音
目錄
前言
一、問題是什么?
二、進行測試
1.測試ffmpeg.exe
2.測試MP4文件
3.發現問題
三、解決問題
找到一個Tanscoding的代碼?
前言
之前使用FFmpeg庫合成H264文件和aac文件為MP4文件,最近發現了一個問題
?
一、問題是什么?
把合成的Mp4文件上傳到網頁客戶端,發現后臺用ffmpeg.exe程序升高音量后的文件,直接音量沒有了,但是原文件使用播放器播放的時候視頻音頻正常,這就有點奇怪了。
二、進行測試
1.測試ffmpeg.exe
用另外的MP4文件進行音量處理,沒有影響聲音,那ffmpeg.exe應該是沒啥問題的
2.測試MP4文件
把MP4文件下載到一臺普通安卓機里面,發現也是沒有聲音的,所以這里就要懷疑一下MP4文件格式是否有問題了
3.發現問題
既然Mp4文件存在問題,聯想到了合成MP4的時候遇到了一個提示
[AVBSFContext @ 0x2baf00] Codec 'h264' (28) is not supported by the bitstream filter 'aac_adtstoasc'. Supported codecs are: aac (86018)?
這里說和H264不支持比特流過濾器 aac_adtstoasc,支持的編解碼器有:aac,所以合成的時候選擇的聲音格式不對
三、解決問題
沒辦法,只能再找資料,看看是哪里的問題,
一開始先懷疑是不是版本有問題,因為很多代碼是參考的雷神之前的視音頻復用器(muxer)的代碼,可能是和雷神用的庫版本不一樣,試了兩個不同的版本,還是有這句提示,而且程序還會到最后的時候掛掉
然后修改?bitstream_filter有關的代碼
?
因為運行的時候有提示這幾個函數過時了,要使用新的API接口,我測試了新的接口,編譯通過就是最后合成的時候有一大堆錯誤,哎,難啊
?
然后就去網上找有沒有muxing的代碼參考,發現很少示例是muxing的,其他demux,decode的倒是不少,
找到一個Tanscoding的代碼?
他是讀取視頻文件Sample.mkv,解復用抽取音視流,分別編碼為HEVC/H.265視頻流和OGG音頻流,并封裝為Sample.ts,他這里也會用到把視頻流和音頻流再合起來,但是沒有用到了bitstream_filter相關的函數,
我突發奇想,我也把相關的代碼去掉看看,去掉之后,居然能正常合成文件,然后測試音量拉高也是可以的,困擾許久的問題就這樣解決了。。。,可能雷神用的FFmepg版本比較老或者有什么其他原因吧,在我用的版本代碼中測試到會有和這個現象。
總結
以上是生活随笔為你收集整理的解决FFmmpeg合成的MP4文件播放没声音的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作业总结:磨皮滤镜(双边滤波bilate
- 下一篇: java学生理财系统_A450基于JAV