我想将WMA流解码为16位PCM。现在我有一个关于FFMpeg的问题-..的输出格式是什么

len = avcodec_decode_audio2(c, (int16_t *)outbuf, &outbuf_used, inbuf_ptr, size);

这是执行此任务的正确功能吗?

谢谢

最佳答案

备注:尝试在ffmpeg用户列表上询问此问题。您肯定会在那找到ffmpeg大师。

我主要使用ffmpeg编码/解码视频。要解码,“avcodec_decode_ *”是用于...解码的正确方法。您得到的是... 16位PCM。

我的意思是解码多媒体流可能很棘手,而ffmpeg是一个很低级的库。仅凭您给出的代码行就很难更精确(至少您应该对参数更精确)。

您应该注意的是,在读取多媒体流时,必须先对流进行解复用(有时,即使您的容器中只有一个流),然后再使用正确的编解码器对其进行解码。如果您已经正确地对流进行了解复用,正确地初始化了编解码器/编解码器上下文,则可以调用avcodec_decode,它将起作用:)

正如您在标记中提到的c++一样,您可以尝试使用ffmpeg的c++包装:FOBS
使用起来要简单得多,但是当然,您会失去精确的控制...

希望对您有所帮助。

关于c++ - 使用FFMpeg将WMA解码为PCM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1264596/

10-11 23:08
查看更多