首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用来自ffmpeg的libavcodec将opus文件解码为pcm文件?

如何使用来自ffmpeg的libavcodec将opus文件解码为pcm文件?
EN

Stack Overflow用户
提问于 2020-06-02 23:35:24
回答 1查看 1K关注 0票数 3

我正在尝试使用libavcodec.So解码opus到pcm文件,我使用https://ffmpeg.org/doxygen/trunk/decode_audio_8c-example.html .And中的ffmpeg示例,我将AV_CODEC_ID_MP2更改为AV_CODEC_ID_OPUS.But,我得到一个错误。

代码语言:javascript
运行
复制
codec = avcodec_find_decoder((AV_CODEC_ID_MP2);
codec = avcodec_find_decoder(AV_CODEC_ID_OPUS);

错误:

代码语言:javascript
运行
复制
    codec ./decode_audio ./out.opus ./out.pcm                  
    [opus @ 0x7ff361800000] Error parsing Opus packet header.
    [opus @ 0x7ff361800000] Error parsing Opus packet header.
    [opus @ 0x7ff361800000] Error parsing Opus packet header.
    [opus @ 0x7ff361800000] Error parsing Opus packet header.
    [opus @ 0x7ff361800000] Error parsing Opus packet header.
    [opus @ 0x7ff361800000] Error parsing Opus packet header.

因此,我尝试将opus AV_CODEC_ID_OPUS更改为AV_CODEC_ID_MP3,然后重试。

代码语言:javascript
运行
复制
    codec ./decode_audio ./out.mp3 ./out.pcm            
    [mp3float @ 0x7fe564002000] Header missing
    Error submitting the packet to the decoder

为什么ffmpeg的例子会出错?我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-03 02:24:26

你不能这样解码作品。Mp3数据包是自定界的,而opus不是。这意味着opus需要一个容器(通常是ogg)。必须对该容器进行解析,以确定opus数据包的开始和结束位置,然后可以对其进行解码。可以使用libavformat从文件中读取AVPackets。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62155671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档