繁体   English   中英

使用FFmpeg API加载G.729解码器时出现问题

[英]Problems loading G.729 decoder with FFmpeg API

我使用FFmpeg API构建了一个类,以解码多个音频文件(mp3,ogg,G.729等),并将它们作为原始音频数据加载到数据结构中。 现在,例如,当我运行以下代码时:

codec = avcodec_find_decoder(AV_CODEC_ID_G729);
if (codec == NULL){
    printf("Codec not found");
    exit(1);
}

该程序确实会输出错误消息,但是如果我加载mp3或ogg编解码器,就没有问题。

因此,要仔细检查,我在终端ffmpeg -decoders执行了该ffmpeg -decoders以查看是否支持解码器(我也在线对其进行了检查)并输出:

A....D g729 G.729

我需要G.729的解码器。 我有什么想念的或者做错了什么吗? 加载此解码器是否有其他方法? 任何建议将不胜感激。

在Debian系统上安装的FFmpeg版本是2.7.1

API使用示例: https//www.ffmpeg.org/doxygen/2.7/decoding_encoding_8c-example.html

好的,因此,考虑到原始的注释顺序,我尝试了最简单的示例:

#include "libavcodec/avcodec.h"

int main() {
    avcodec_register_all();
    AVCodec *codec = avcodec_find_decoder(AV_CODEC_ID_G729);
    if (!codec) {
        fprintf(stderr, "Codec not found\n");
        exit(1);
    }
    fprintf(stderr, "Codec found\n");
    return 0;
}

并针对我的本地ffmpeg树进行了编译,效果很好:

$ /tmp/x
Codec found

因此,在您的特定情况下必须发生一些奇怪的事情。 您能否提供有关例如如何编译自编译的ffmpeg树的更多信息(特别是您的配置参数,以及“ grep 729 config.h”),这是您如何尝试运行片段的完整示例代码代码(由于缺少avcodec_register_all()而无法单独运行,但是由于您引用了api_example,因此我假设您的完整代码没有此问题,否则mp3 / ogg无法正常工作)和编译器行用于根据您的ffmpeg版本进行编译/链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM