0

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

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

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

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

4

1 回答 1

0

您不需要提供“分辨率、pix_fmt 等”。解码器的信息,因为这些信息是由解码器从输入 AVPackets 派生的。

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

您提供给解码器的数据包顺序可能是您的原因。

于 2015-12-19T00:02:04.757 回答