日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

解决FFmmpeg合成的MP4文件播放没声音

發布時間:2023/12/29 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决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有關的代碼
?

AVBitStreamFilterContext* aacbsfc = av_bitstream_filter_init("aac_adtstoasc");av_bitstream_filter_filter(aacbsfc, out_stream->codec, NULL, &pkt.data, &pkt.size, pkt.data, pkt.size, 0);av_bitstream_filter_close(aacbsfc);

因為運行的時候有提示這幾個函數過時了,要使用新的API接口,我測試了新的接口,編譯通過就是最后合成的時候有一大堆錯誤,哎,難啊

?

然后就去網上找有沒有muxing的代碼參考,發現很少示例是muxing的,其他demux,decode的倒是不少,

找到一個Tanscoding的代碼?

他是讀取視頻文件Sample.mkv,解復用抽取音視流,分別編碼為HEVC/H.265視頻流和OGG音頻流,并封裝為Sample.ts,他這里也會用到把視頻流和音頻流再合起來,但是沒有用到了bitstream_filter相關的函數,

我突發奇想,我也把相關的代碼去掉看看,去掉之后,居然能正常合成文件,然后測試音量拉高也是可以的,困擾許久的問題就這樣解決了。。。,可能雷神用的FFmepg版本比較老或者有什么其他原因吧,在我用的版本代碼中測試到會有和這個現象。

總結

以上是生活随笔為你收集整理的解决FFmmpeg合成的MP4文件播放没声音的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。