使用ffmpeg av_编解码器_视频_2解码原始缓冲区

使用ffmpeg av_编解码器_视频_2解码原始缓冲区,ffmpeg,webrtc,rtp,libav,vp8,Ffmpeg,Webrtc,Rtp,Libav,Vp8,我正试图用C语言为webrtc应用程序编写一个解码器。我收到一个RTP流,我解析每个数据包,对它们重新排序,并将有效负载放入一个AV数据包中,如下所述()。 重新排序部分没有在这个链接中描述,但我很确定这个部分是好的 问题是,我不知道如何给解码器提供分辨率、pix_fmt等信息。我是否需要创建一个AVstream*,并用我从rtp头中获取的所有信息填充它 是否有人有一段正在运行的代码,可以在不使用rtp_dec等的情况下解码VP8数据包 在这个链接中,似乎没有更多的信息发送到解码器,它是否能够在

我正试图用C语言为webrtc应用程序编写一个解码器。我收到一个RTP流,我解析每个数据包,对它们重新排序,并将有效负载放入一个AV数据包中,如下所述()。 重新排序部分没有在这个链接中描述,但我很确定这个部分是好的

问题是,我不知道如何给解码器提供分辨率、pix_fmt等信息。我是否需要创建一个
AVstream*
,并用我从rtp头中获取的所有信息填充它

是否有人有一段正在运行的代码,可以在不使用rtp_dec等的情况下解码VP8数据包

在这个链接中,似乎没有更多的信息发送到解码器,它是否能够在不知道分辨率和没有任何头的情况下解码

您不需要向解码器提供“分辨率、pix_fmt等”信息,因为这些信息是由解码器从输入数据包中导出的

编码器需要分辨率、pix_fmt等信息来生成压缩字节/比特流。并且,编码器将该(分辨率、pix_fmt等)信息嵌入生成的比特流中。一旦解码器以正确的顺序接收到比特流,它将在继续对其进行去压缩之前导出分辨率pix_fmt info


在您的案例中,可能是您馈送到解码器的数据包顺序造成的

在调用avcodec_decode_video2之前,可能我需要使用分辨率、pix_fmt等,以及来自rtp头或SDP的数据来为编解码器上下文提供信息,但我不知道如何正确地执行。很抱歉,回答得太晚,我使用的是非常旧的lib版本。最近的没有pb。