使用 ffmpeg av_codec_video_2 解码原始缓冲区

decode raw buffer with ffmpeg av_codec_video_2

我正在尝试用 C 编写一个 webrtc 应用程序的解码器。我收到一个 RTP 流,我解析每个数据包,重新排序,并将有效负载放入 AVPacket 中,如此处所述(FFmpeg decode raw buffer with avcodec_decode_video2). link 中没有描述重新排序部分,但我很确定这部分没问题。

问题是,我不知道如何为解码器提供有关分辨率的信息,pix_fmt 等。我是否需要创建一个 AVstream* 并用我从 rtp header?

是否有人有一段 运行 代码可以解码 VP8 数据包,而无需使用 rtp_dec 等进行解包?

在这个link中,似乎没有更多的信息发送给解码器,是否可以在不知道分辨率和没有任何header的情况下解码?

您不需要将 "resolution, pix_fmt etc." 信息提供给解码器,因为解码器会从输入的 AV 数据包中获取这些信息。

编码器需要诸如分辨率、pix_fmt 等信息来生成压缩的 byte/bit-stream。并且,编码器将此(分辨率,pix_fmt 等)信息嵌入到生成的比特流中。一旦解码器以正确的顺序接收到比特流,它就会在继续解压缩之前导出分辨率,pix_fmt 信息。

可能是您提供给解码器的数据包顺序导致了您的情况。