我從IP攝像頭處理H.264 RTP流。我使用的相機將每個I幀分成幾個NAL單元,每個單元都被分成RTP包(開始和結束標誌確定每個單元的尺寸,而不是幀的尺寸)。確定RTP流中H.264 I幀的末端
我怎麼能知道幀傳輸何時完成,並且我有足夠的數據來解壓縮它?由於幀由多個單元組成 - 標誌不能用於確定其結束。
我工作的大多數攝像機將每幀分割爲RTP包,其中標誌確定幀的開始和結束。所以我從這個等待結束標誌的數據包中解壓縮數據 - 這裏是一個完整的框架。
NAL單元,我從這個攝像頭獲取的順序是:
[NAL_UT_SPS]序列參數集+
[NAL_UT_PPS]圖片參數集
[NAL_UT_SEI補充增強信息
[NAL_UT_IDR_SLICE] I幀圖像數據的部件#1
[NAL_UT_IDR_SLICE]部分#2 e口幀圖象數據
[NAL_UT_IDR_SLICE]零件編號的I幀的3圖象數據
[NAL_UT_SLICE]第一P幀
[NAL_UT_SLICE]第二P幀
[ NAL_UT_SLICE]第三P幀
...
從該序列很明顯,我可以結合[NAL_UT_SPS] + [NAL_UT_PPS] + [NAL_UT_SEI] + 3 * [NAL_U T_IDR_SLICE]合併爲一個I幀,我將最近饋送給解碼器。但是,我怎樣才能確定有多少圖片數據部分?我如何知道何時收到#X部分它不是序列中的最後一個?
任何想法?
謝謝您的回答。實際上,我強烈需要將NAL單元組合到相應的框架中。我需要的是關於如何確定幀中最後一個NAL單元的一些信息。我從這臺相機獲得的數據在上面編輯的問題中。 – paft 2013-02-25 06:18:49