live555做RTSPClient客戶端如何兼容一幀中多NAL單元的攝像機

我們在使用live555作爲RTSPClient接入一款三星的H.265攝像機時出錯,回調的幀數據無法正常預覽,通過打印,看到這個回調的幀類型分別是: IIIIIIIPPPPPPPPPPPPPPPPPPPPIIIIPPPPPPP

分析問題

分析幀數據 00 00 00 01 40 00 00 00 42 00 00 00 44 00 00 00 4E 00 00 00 01 21
可以確認,這裏面沒有B幀.
絕大部分的攝像機出來的幀, 每幀數據就是一個NAL單元, 而該相機連續多個I幀其實就是多個I slice, 也就是一幀中包含了多個NAL單元。

解決問題

  1. 判斷first_slice_segment_in_pic_flag是否爲1, 來確定兼容邏輯;
  2. 如果 first_slice_segment_in_pic_flag 爲 1, 則後面的26幀都組合到一起,直到first_slice_segment_in_pic_flag又爲1,或幀類型不是26了;
  3. 如果first_slice_segment_in_pic_flag 爲0, 則獨立一個I幀 ;
  4. first_slice_segment_in_pic_flag 是26後面第二個字節的最高位;

通過這樣解析,回調出的幀數據都能正常播放了.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章