我正在使用带有avcodec的OPUS来编码声音,并使用我自己的协议进行流式传输。
到目前为止,它与MP2编解码器一起工作,但当我切换到OPUS时,我遇到了这个问题:
[opus @ 1b06d040] Error parsing the packet header. 我想与MP2不同的是,我需要为我的OPUS编码数据流生成一个报头,但我不知道如何生成。
有人能给我解释一下怎么做吗?谢谢。
发布于 2015-10-01 02:49:04
这个错误来自ff_opus_parse_packet()失败,它处理原始的opus数据包头,规范称之为'TOC‘(对于目录)字节和可选的子帧长度。这意味着libavcodec找不到预期的数据包持续时间。
因此,您的自定义协议可能损坏了数据,返回了错误的数据长度,或者您没有正确地将opus数据包从成帧层中分离出来。
如果你不想,你不需要发明你自己的协议。有两个既定的设计:RFC 7587中记录了用于交互使用(如延迟很重要的实时聊天)的Opus over RTP。对于HTTP流,用于记录、回放的文件存储和其他使用Ogg容器的应用程序,文档here。这两种方法都有libavformat的实现。如果您对细节感兴趣,请参阅rtpenc.c、oggenc.c和oggparseopus.c。
https://stackoverflow.com/questions/30562131
复制相似问题