我從H.264流創建MPEG-4文件。 H.264流採用NAL格式(EG:0,0,0,1,67,...,0,0,1,68,...)。每個視頻幀以多個I幀/ P幀片段傳輸。例如:第1幀包含大約80個I幀片段,第2幀包含大約10個P幀片段。從I幀/ P幀片段創建MDAT
據我所知,MPEG-4文件的MDAT原子應該包含NAL格式的H.264流。
我想知道在將這些片段放入MPEG-4的MDAT原子之前,如何將這些片段轉換爲單個I幀。
我不想使用任何庫。
感謝您的幫助。
我從H.264流創建MPEG-4文件。 H.264流採用NAL格式(EG:0,0,0,1,67,...,0,0,1,68,...)。每個視頻幀以多個I幀/ P幀片段傳輸。例如:第1幀包含大約80個I幀片段,第2幀包含大約10個P幀片段。從I幀/ P幀片段創建MDAT
據我所知,MPEG-4文件的MDAT原子應該包含NAL格式的H.264流。
我想知道在將這些片段放入MPEG-4的MDAT原子之前,如何將這些片段轉換爲單個I幀。
我不想使用任何庫。
感謝您的幫助。
您將要將H.264 Annex B NAL流轉換爲MP4文件包。爲了做到這一點,您需要:
只要知道幀邊界,就可以形成MP4數據包。每個數據包將僅包含一個框架和和NAL單元的格式如下:
L1 L1 L1 L1 YY xx月xx ...
L2 L2 L2 L2 YY xx月xx ...
所以基本上用整數保存這個NAL單元的長度來替換每個分隔符'00 00 00 01'。
這是一個非常繁瑣的過程,但如果你想進入細節你可以學習JCodec(http://jcodec.org)的源代碼:org.jcodec.samples.transcode.TranscodeMain,org.jcodec.containers.mp4。 MP4Muxer