H.264規定,通過在兩個零字節後添加'3'字節(「仿真預防」),應該轉義兩個零字節的序列。MP4中的仿真預防字節
這是逃避規則正確的MP4文件格式?
問題後面跟着調試ffmpeg的結果。我試圖打開下列文件:
https://www.dropbox.com/s/vrdy8z96pohh7ah/live_video_fragment_1.mp4?dl=0
VLC播放,但不ffmpeg的。 ffmpeg的顯示了很多的錯誤,第一個是(與日誌級別調試):
AVC: Consumed only 41 bytes instead of 796
調試到FFmpeg的表明,它試圖將H.264解碼中解析MOOF盒上卻失敗https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/h264.c#L312
解析traf
框之前的4個字節(表示其大小)時,它將「003」字節理解爲仿真阻止字節,並且因此導致所有解析無序。
那麼,這是ffmpeg的錯誤行爲(它不應該把它理解爲仿真預防)?或者該文件包含錯誤,並且該字節應該被轉義?
謝謝。我仍然不確定這是一個ffmpeg錯誤,也許該文件包含錯誤。出於某種原因,ffmpeg認爲樣本數據從MOOF框的開始處開始,我猜測該文件只是缺少片段數據起始偏移量的值。仍然檢查它。如果你可以告訴我哪個盒子應該包含這個開始偏移量,它將非常有幫助。謝謝! – MaMazav
其實我覺得我發現了錯誤。 TRUN框缺少一個data_offset值,因此data_offset從MOOF框的開始被認爲是零。 – MaMazav