簡體   English   中英

關於fmp4編碼,如何填充mdat框和H264幀?

[英]about fmp4 encoding , how to fill the mdat box wit H264 frame?

我使用C語言將H264幀(只有I / P幀)編碼為fmp4文件。 當我填充mdat框時,我不知道如何填充幀數據。
是否直接填充(I / P)幀數據?
前4個字節需要填充幀長嗎?

我嘗試使用FFMPG對fmp4文件進行編碼,發現mdat框中的數據與原始I / P幀數據完全不同。
是否再次編碼?
我可以直接將I / P幀的數據填充到mdat框中嗎?

H.264可以采用不同的流格式。 一個叫做“附件B”,另一個叫MP4。 在“附件B”中,您的NAL單位以開始碼00 00 00 01或00 00 01為前綴。在MP4中,您的NAL單位以字節大小為前綴。

我假設您的編碼器發出“附件B”。

  1. 刪除起始碼(00)00 00 01

  2. 給NAL單位加上大小(通常為4個字節)

  3. 從流中過濾掉AUD / SPS / PPS NAL單位

  4. 將轉換后的NAL單位寫入MDAT框

  5. 根據您的SPS,PPS和長度大小創建一個AVC配置框('avcC')

  6. 將您的avcC盒子存儲在moov-> trak-> mdia-> minf-> stbl-> avc1-> avcC中

  7. 在將示例寫入mdat時-跟蹤尺寸,偏移量和幀類型以創建正確的stst,stss,stsc,stsz和stco框。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM