用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
中执行,以查看是否支持解码器(我也在线检查了)并输出:
A....D g729 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 foundn");
exit(1);
}
fprintf(stderr, "Codec foundn");
return 0;
}
并针对我的本地ffmpeg树编译它,并且运行良好:
$ /tmp/x
Codec found
所以,在你的特定情况下一定发生了一些奇怪的事情。你能提供更多的信息,例如你如何编译你的自编译的ffmpeg树(特别是,你的配置参数,也做"grep 729 config.h",你如何试图运行你的代码的完整示例代码(它不会自己运行,因为它缺少avcodec_register_all(),但因为你提到api_example我假设你的完整代码没有这个问题,否则mp3/ogg将不起作用),和编译器行用来编译/链接它到你的ffmpeg版本。
相关文章:
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- 如何从WIC解码器确定自上而下/自下而上?
- QtCreator with C 库中的链接器问题
- 无法在 HEVC 解码器上设置输出类型 IMFTransform
- OpenGL 相机移动程序顶点着色器问题
- GNURADIO UHD库链接器问题(C++).
- 连接无线电流和 MP3 解码器
- h264_cuvid编解码器未找到
- C++17 编解码器在将标准::字符串转换为标准::字符串时抛出"bad conversion"
- std::filesystem::directory_迭代器链接器问题(C++17)
- CMake Qt建立在Windows链接器问题之上
- 如何使用 ffmpeg 将 3840 nb_samples编码为请求 1024 的编解码器
- FFMPEG:为什么当我调用av_codec_next()时,我所有的编解码器都没有显示出来
- OpenCV 检查计算机上是否安装了视频编解码器 (C++)
- FFMPEG 解码器似乎会丢帧
- 直接显示通用媒体解码器
- OpenCV:FFMPEG:编解码器 ID 12 和格式 'mp4 / MP4 不支持标记
- 超级强大-导出到文件与混合器和解码器问题(不同的sampleRates和samplesPerFrame)
- OpenCV videoWriter编解码器问题
- 用FFmpeg API加载G.729解码器的问题