在nginx-http-flv-module中支持H.265(HEVC)

衆所周知,FLV規範不支持H.265,並且近年來各大瀏覽器都逐漸不支持Flash,Adobe也宣佈到2020年底不再支持Flash。作爲FLV相關技術的所有者,Adobe估計也沒動力更新規範來支持H.265;外加H.265標準的一些專利所有者的授權方案被指搶錢,更加打擊了很多軟件廠商的積極性。

從H.265標準出來沒多久,就有人請求Adobe在FLV規範中加入對H.265的支持:

https://community.adobe.com/t5/Flash-Player/H265-support/td-p/5657976

https://tracker.adobe.com/#/view/FP-3650828

但是很遺憾,Adobe至今沒有更新FLV規範。FFmpeg社區也曾提到,如果Adobe不更新規範,那麼他們也不會在FLV中支持H.265。

那在FLV中支持H.265有什麼難度嗎?答案是幾乎沒什麼難度,只要增加一個新的編碼ID表示H.265就可以了。國內已經有支持封裝/解封H.265的FLV的FFmpeg補丁,比較常見,不再列出,比較統一的編碼ID是12。封裝(推流)/解封(播放)的問題解決了,服務器也需要做相應的修改。除了增加一個編碼ID外,還需要提取H.265視頻編碼中一個新增的結構VPS(Video Parameter Set),播放請求到來後,要把這個結構的內容發送給播放器。

網上已有不少支持H.265視頻編碼的FLV開源方案,基本上都能運行,但是對VPS結構的解析比較粗糙。前段時間在nginx-http-flv-module的基礎上加入了對H.265的支持,測試沒有問題,測試環境如下:

OS:Debian GNU/Linux 7.8

Publisher:最新版本的FFmpeg+支持H.265視頻編碼的FLV補丁

Player:B站的開源播放器ijkplayer,支持H.265視頻編碼的FLV補丁(只支持解封,不支持封裝)

Server:nginx-http-flv-module+支持H.265視頻編碼的FLV補丁

測試截圖如下:

推流
打開播放連接
流媒體詳情1
流媒體詳情2

注意,這部分代碼沒有開源,ijkplayer的demo原生也不支持輸入網絡URL,需要修改部分代碼。有需要的可以通過下面的聯繫方式聯繫我:

郵箱:[email protected],微信:SagitArrow。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章