您的位置:首頁 > 軟件教程 > 教程 > 如何將H.264裸流封裝為MP4文件并在網(wǎng)絡(luò)上傳輸

如何將H.264裸流封裝為MP4文件并在網(wǎng)絡(luò)上傳輸

來源:好特整理 | 時(shí)間:2024-06-29 15:49:53 | 閱讀:151 |  標(biāo)簽: T 2 K PEG 開發(fā) 網(wǎng)絡(luò)   | 分享到:

?《FFmpeg開發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》一書的“3.4.3 把原始的H264文件封裝為MP4格式”介紹了如何把H.264裸流封裝為MP4文件。那么在網(wǎng)絡(luò)上傳輸?shù)腍.264裸流是怎樣被接收端獲取視頻格式的呢?前文指出H.264流必定以“SPS幀→PPS幀→IDR幀”開頭,接下來就來驗(yàn)證是否確實(shí)

《FFmpeg開發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》一書中介紹了如何將H.264裸流封裝為MP4文件。但在網(wǎng)絡(luò)上傳輸?shù)腍.264裸流是如何被接收端獲取視頻格式的呢?本文將探討這一問題。

雷霄驊雷神編寫的H264分析器是本文使用的工具。該軟件的初始界面如下圖所示:

如何將H.264裸流封裝為MP4文件并在網(wǎng)絡(luò)上傳輸

單擊文件路徑欄右邊的打開按鈕,在彈出的文件對(duì)話框中選擇某個(gè)H.264裸流文件,再單擊界面右下角的開始按鈕,分析器便開始分析H264文件的內(nèi)容格式,分析后的結(jié)果界面如下圖所示:

如何將H.264裸流封裝為MP4文件并在網(wǎng)絡(luò)上傳輸

從分析結(jié)果可見,H.264裸流的開頭三幀果然是“SPS幀→PPS幀→IDR幀”。單擊列表中的某個(gè)幀,界面右側(cè)會(huì)顯示該幀的詳細(xì)字段信息。

然而,分析器只能讀取H.264裸流文件。如果讓分析器讀取MP4文件,就無法正常讀出各幀信息。那么流媒體服務(wù)器又是如何將MP4文件轉(zhuǎn)化為H.264裸流的呢?

以ZLMediaKit為例,它在向推流序列插入I幀時(shí)做了特殊處理,一旦出現(xiàn)I幀,就自動(dòng)插入SPS與PPS等配置幀。具體代碼在ZLMediaKit框架的ext-codec/H264.cpp,查看該源碼的H264Track::inputFrame_l函數(shù),找到以下的代碼片段,可見程序在判斷關(guān)鍵幀之后調(diào)用了insertConfigFrame函數(shù)。

找到insertConfigFrame函數(shù)的定義代碼如下,函數(shù)內(nèi)容依次插入了SPS幀和PPS幀:

由此可見,ZLMediaKit在每個(gè)關(guān)鍵幀前面都額外插入了SPS幀和PPS幀,確保H.264裸流維持著形如“SPS幀→PPS幀→IDR幀”的隊(duì)形。如果不添加SPS和PPS,客戶端在拉流時(shí)會(huì)報(bào)錯(cuò)。

只有加上SPS與PPS,客戶端才能正常拉流解析數(shù)據(jù),才能正常渲染視頻畫面。

更多詳細(xì)的FFmpeg開發(fā)知識(shí)參見《FFmpeg開發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》一書。

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

K
K
類型:角色扮演  運(yùn)營(yíng)狀態(tài):封測(cè)  語言:中文   

游戲攻略

游戲禮包

游戲視頻

游戲下載

游戲活動(dòng)

《K》是由樂次元開發(fā)的一款日系動(dòng)漫RPG游戲,游戲根據(jù)同名動(dòng)漫改編而來,高水準(zhǔn)的漫畫和音樂是這款游戲的

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號(hào)!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]

湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2024 haote.com 好特網(wǎng)