2015-10-16 140 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。 –