2015-10-16 118 views
0

我試圖寫在C的的WebRTC應用程序的解碼器,我收到一個RTP流,我分析每一個數據包,重新排序,並把有效載荷在AVPacket,這裏描述( FFmpeg decode raw buffer with avcodec_decode_video2)。 重新排序部分沒有在這個鏈接描述,但我很確定這部分是確定的。原始緩衝區av_codec_video_2

問題是,我不知道如何給解碼器有關分辨率,pix_fmt等信息。我是否需要創建一個AVstream*並填寫它從我從rtp頭取得的所有信息?

難道有人有一段運行解碼而無需使用rtp_dec等解包一個包VP8編碼的?

在這個環節,沒有更多的信息,似乎被髮送到解碼器,它是能夠在不知道的分辨率,沒有任何頭解碼?

+0

也許我需要調用avcodec_decode_video2之前的分辨率,pix_fmt等喂編解碼器上下文,與RTP報頭或SDP數據,但我不知道如何正確地做到這一點。 –

回答

0

你不需要提供「分辨率,pix_fmt等」信息到解碼器,如解碼器從輸入AVPackets獲得的信息。

編碼器需要像分辨率這樣的信息,pix_fmt等,以產生壓縮的字節/比特流。而且,編碼器將這個(分辨率,pix_fmt等)信息嵌入到生成的比特流中。一旦解碼器按照正確的順序接收比特流,它將在解壓縮之前得出分辨率,pix_fmt信息。

也許,包秩序,你送進的解碼器在你的情況的原因。

+0

對不起,這是非常晚的答案,我使用的是一個非常老的lib版本。沒有與最近的pb。 –