2014-06-26 60 views
0

我需要在h264字節流中找到任何(I/B/P)新幀。如何在h264中找到任何I/B/P幀?

我聽說NAL頭,但我有這樣一個奇怪的河流:

00 00 00 01 09 F0 00 00 00 01 
67 64 00 1E AC B2 01 40 5F F2 
E0 22 00 00 07 D2 00 01 D4 C0 
1E 2C 5C 90 00 00 00 01 68 EB 
C3 CB 22 C0 00 00 01 06 05 FF 
  1. 什麼是平均值×09 0XF0 00 00 00 01之間?
  2. 如何檢測新幀(任何I/B/P)?

回答

2

從哪裏開始。

首先0x09 0xF0是一個訪問單元分隔符。這是你的框架的開始。但請注意,這是一個可選的NALU,並且可能不存在於所有幀中。其次,一個幀可以由多個片組成,每個片可以是I/P/B類型。所以有可能找到一個包含所有三種切片類型的幀。我可以詳細瞭解如何確定切片類型,以及如果沒有AUD存在,如何查找幀的開始。但是這兩個主題都非常大,並且應該(並​​且可能)有自己的Stack Overflow問題。

+0

看起來你真的明白h264編碼是如何工作的,也許你對我的問題有一個答案:我必須寫mpeg-ts muxer,並且需要設置PTS(沒有DTS, - 流沒有b幀)。 我可以簡單地生成它,還是我需要解析h264?順便說一下,我的輸出流中不需要音頻 - 如果它很重要。 – user3652819

+0

AVC比特流不包含任何時間戳,因此您可以生成自己的時間戳。但是,您應該檢查SPS for VUI參數,並且如果設置了fixed_frame_rate_flag,您的pts應該正好增加90000 *((2 * num_units_in_tick)/ time_scale)。除非幀被丟棄。 – szatmary