SPS PPS介紹


H.264碼流第一個 NALU 是 SPS(序列參數集Sequence Parameter Set)

H.264碼流第二個 NALU 是 PPS(圖像參數集Picture Parameter Set)

H.264碼流第三個 NALU 是 IDR(即時解碼器刷新)

 

H.264的SPS和PPS串,包含了初始化H.264解碼器所需要的信息參數,包括編碼所用的profile,level,圖像的寬和高,deblock濾波器等。

 

 

vlc沒有收到pps和sps

問題 packetizer_h264 packetizer warning: waiting for SPS/PPS

是因為解碼器只是在第一次執行編碼的時候,才編碼出 SPS、PPS、和I_Frame; 
h264 packetizer has set so, that it sends sps/pps only first keyframe,
 I'm trying to figure what breaks if that is changed so sps/pps is written in every keyframe.

解決辦法:
1、編碼器編碼出每個關鍵幀都加上SPS、PPS ,據說通常情況編碼器編出的 SPS、PPS是一樣的,所以這種方法耗費資源。
2、在服務器接收到客戶端請求時,發送第一個package 加上 SPS、PPS。
具體如下:
1、在 VideoOpenFileSource 添加一個變量 isFirstFrame;
2、構造時初始化 isFirstFrame = true;
3、在int VideoOpenFileSource::readFromBufferChain() 修改如下:
1 if(isFirstFrame == true)
2 {
3 memcpy(fTo, h264_header, sizeof(h264_header)); /* h264_header = pps +sps*/
4 offset = sizeof(h264_header);
5 framesize = BufferChain_get(fInput.video_bufs, fTo + offset);
6 offset += framesize;
7 isFirstFrame = false;
8 printf("this is the first fime\n");
9 sleep(1);
10 }
11 else
12 {
13 framesize = BufferChain_get(fInput.video_bufs, fTo + offset);
14 offset += framesize;
15 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM