小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

讓Chrome的HTML5 video/audio tag支持更多種音視頻格式

 昵稱(chēng)597197 2016-01-28
隨著HTML5的發(fā)展,今后會(huì)有越來(lái)越多的應(yīng)用程序基于HTML5開(kāi)發(fā),多媒體應(yīng)用程序也不例外,HTML5新增加的video/audio tag提供了在網(wǎng)頁(yè)中直接播放音視頻的能力而無(wú)需借助任何插件,因此可以用HTML5開(kāi)發(fā)一個(gè)媒體播放器,網(wǎng)上也已經(jīng)出現(xiàn)了不少HTML5播放器例如jPlayer。但目前各家瀏覽器支持的HTML5音視頻格式種類(lèi)很有限,比如IE9只支持H.264,F(xiàn)irefox只支持VP8和Theora。Google Chrome算是支持格式最全的,支持的視頻格式包括H.264、VP8、Theora,音頻包括Vorbis、MP3、AAC、WAV。這些格式對(duì)于播放網(wǎng)絡(luò)在線(xiàn)音視頻(不算flash)基本上足夠了,但如果我們想播放本地音視頻就會(huì)遇到很多不支持的格式,比如在中國(guó)很流行的rmvb視頻,高清影片最常見(jiàn)的mkv、avi格式,這些格式目前所有瀏覽器都不支持,僅僅從這一點(diǎn)來(lái)看,目前基于HTML5的播放器還不可能代替象QQ影音、射手播放器這樣的傳統(tǒng)播放器。

有沒(méi)有可能自己給瀏覽器增加支持更多的音視頻格式?分析Google開(kāi)源瀏覽器Chromium后得知它的音視頻解碼是由FFmpeg提供的(代碼在third_party\ffmpeg\),Chrome也是這樣,所以完全可以給Chrome增加支持更多種類(lèi)的音視頻格式。


Chrome中的媒體播放架構(gòu)如下圖所示:






其中Pipeline是Google給Chrome開(kāi)發(fā)的媒體框架引擎,HTML5 video/audio tag就是由這個(gè)引擎實(shí)現(xiàn)媒體播放的,F(xiàn)Fmpeg在其中提供demuxer和decoder,因此要增加支持音視頻格式主要修改FFmpeg就可以了。


從Chromium的源碼third_party\ffmpeg\chromium\config\Chrome\linux\ia32\config.h可以得知Chrome采用的FFmpeg的配置選項(xiàng),在原有的配置選項(xiàng)后面添加如下選項(xiàng):


  1. --enable-decoder='rv10,rv20,rv30,rv40,cook,h263,h263i,mpeg4,msmpeg4v1,msmpeg4v2,msmpeg4v3,amrnb,amrwb,ac3,flv' --enable-demuxer='rm,mpegvideo,avi,avisynth,h263,aac,amr,ac3,flv,mpegts,mpegtsraw' --enable-parser='mpegvideo,rv30,rv40,h263,mpeg4video,ac3'
復(fù)制代碼


用新的配置選項(xiàng)重新配置和編譯FFmpeg,用生成的3個(gè)動(dòng)態(tài)鏈接庫(kù)avcodec-54.dll、avformat-54.dll、avutil-51.dll替換掉Chrome里面原來(lái)的,要注意用來(lái)編譯FFmpeg的Chromium源碼的版本要跟Chrome差不多,相差太大的話(huà)替換庫(kù)后可能會(huì)造成Chrome無(wú)法正常運(yùn)行。在Windows上編譯FFmpeg的方法參見(jiàn)本人的另一篇文檔《在Windows上編譯Chromium中的FFmpeg》。


這樣修改FFmpeg后在Chrome中用HTML5 video/audio tag就可以播放更多格式的音視頻了,大部分常見(jiàn)的mkv、avi、flv、mov、amr都可以播放了。但是rmvb仍然無(wú)法播放,用Visual Studio 2010跟蹤后找到了原因,原來(lái)常見(jiàn)的rmvb電影視頻編碼是RV40,音頻編碼是COOK,這兩種codec類(lèi)型在Chrome中都未被定義,在解析rmvb的時(shí)候會(huì)認(rèn)為是未知的codec類(lèi)型(kUnknownVideoCodec和kUnknownAudioCodec),為此需要修改media\base\video_decoder_config.h和media\base\audio_decoder_config.h分別在里面的枚舉類(lèi)型VideoCodec和AudioCodec中增添這兩種格式,然后還要修改media\ffmpeg\ffmpeg_common.cc,具體修改方法就不贅述了,一看代碼就知道。這樣修改以后Chrome的媒體引擎就可以識(shí)別RV40和COOK這兩種格式了,常見(jiàn)的rmvb電影也可以播放了。


可見(jiàn)要讓Chrome能播放更多格式的音視頻其實(shí)不難,當(dāng)然目前只是第一步,還有不少問(wèn)題,比如播放rmvb電影時(shí)一拖動(dòng)進(jìn)度條屏幕顯示就亂了,要想把兼容性和穩(wěn)定性做好就要下更多功夫了。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多