瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因

手機瀏覽器網頁視頻播放不了是什么原因,瀏覽器網頁視頻無法播放 。小編來告訴你更多相關信息 。

瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因

文章插圖
瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因

文章插圖
優酷黑屏
嘗試本地播放一個MP4,也是黑屏 。
瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因

文章插圖
瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因

文章插圖
播MP4黑屏
嘗試進入youtube,看看google自家的視頻能否播放 。果然,Google自家的視頻網站播放是OK的,嘗試播放一個VP9編碼的webm視頻,播放也是OK的 。很顯然,是編譯的瀏覽器默認不支持MP4封裝h264編碼的視頻,默認只支持google自家的web封裝的VP9編碼視頻 。
瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因

文章插圖
瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因

文章插圖
youtube視頻播放OK
瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因

文章插圖
瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因

文章插圖
VP9編碼地webm視頻播放正常
現在的目標是讓編譯的chrome.exe 支持MP4播放 。
分析過程:
網上找了一番,很多人說chromium編譯默認不編譯ffmpeg,所以播放不了MP4視頻 。這里整理網友幾種解決方案:
1) 有人建議將ffmpeg編譯對應編碼庫(一堆的dll庫)放到chrome.exe目錄下
這里有難處:ffmpeg版本如何和chrome.exe對應起來,自己在Windows上編譯個ffmpeg也是很費勁 。
2) 有人建議將官方發布的chrome對應的ffmpeg的dll拷貝過去,但實際上近段時間官方的chrome安裝包里面根本沒有ffmpeg相關的dll(商業版的chrome壓根就有沒有用過ffmpeg還是將ffmpeg靜態編譯進其他dll,我們無法確定)
新發現:
發現一個編譯參數可以將chrome以組件形式編譯(即is_component_build = true),默認編譯第三方庫,第三方庫都是靜態編譯到其他dll中去 。打開這個開關,發現編譯后有一個叫ffmpeg.dll,但這個ffmpeg.dll才3M,不是我們常見的ffmpeg官方編譯的一堆dll 。這個dll到底是真正包含了ffmpeg的dll,還是只是對ffmpeg的一個接口適配層呢?我們查看ffmpeg.dll導出的符號表(windows上稱為導出表),發現ffmpeg對外的接口,都在這個符號表中 。很顯然ffmpeg默認是已經編譯好了 。只是chrome可能某些開關沒有打開,導致chrome無法真正將ffmpeg的API用起來 。
瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因

文章插圖
瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因

文章插圖
ffmpeg.dll導出的符號表
問題解決:
終于找到這個開關 。編譯前配置生成工程增加proprietary_codecs = true ffmpeg_branding = “Chrome\”這2個宏即可,再次編譯生成chrome.exe,播放MP4,播放youku等視頻網站都OK了 。
【瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因】
瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因

文章插圖
瀏覽器網頁視頻無法播放 手機瀏覽器網頁視頻播放不了是什么原因

文章插圖
h264編碼的MP4播放OK
更多更詳細信息請關注公眾號:AV_Chat

    推薦閱讀