我是新來FFmpeg努力解碼H264數據包,它可以作爲uint8_t數組獲取。使用FFmpeg,如何解碼H264數據包
多次調查後,我覺得應該可以只是把數組就像一個AVPacket下面
AVPacket *avpkt = (AVPacket *)malloc(sizeof(AVPacket) * 1);
av_init_packet(avpkt);
avpkt->data = ct; // ct is the array
avpkt->length =....
和解碼由avcodec_decode_video2()。代碼的一部分是像
...
codec = avcodec_find_decoder(CODEC_ID_H264);
gVideoCodecCtx = avcodec_alloc_context();
gFrame = avcodec_alloc_frame();
avcodec_decode_video2(gVideoCodecCtx, gFrame, &frameFinished, packet);
...
我想我正確設置所有必需的屬性,但是,此功能僅-1 :(
我只是找到了返回-1從
漚未來= avctx-> codec->解碼(avctx,圖片,got_picture_ptr,avpkt);
在avcodec_decode_video2();
其實,我想知道是,如果我可以解碼ħ avcodec_decode_video2()包含264個數據包(無RTP頭)。
感謝您的幫助提前。
///////////添加
OK,我仍然試圖找到一個解決方案。我現在正在做的是以下
**在這個RTP流H264流被編碼FU-A
收到一個RTP包
看,如果第二個字節RTP頭部大於0,這意味着它是第一個數據包(可能會被跟蹤)
查看下一個RTP數據包是否在其第二個字節處也> 0,則表示前一幀是完整的NAL或如果這是< 0,那麼數據包應附加到前一個數據包。
刪除數據包的所有RTP頭,使其只有FU指標| FU header | NAL
嘗試avcodec_decode_video2()
玩它,但它只有返回-1 .....我應該刪除FU指標和標題太?
任何建議將不勝感激
在此先感謝。
感謝VIBGYOR,實際發送者是spydroid開源和RTP報頭看起來並不包含很多東西..它是由有效載荷類型,序列號,時間戳,同步源標識符..其中任何一個意味着視頻流信息?我不這麼認爲......我仍在努力,並會更新我的進展。 – Jun 2012-02-17 05:38:17