FFmpeg avcodec_find_encoder(AV_CODEC_ID_OPUS)和avcodec_find_decoder(AV_CODEC_ID_OPUS)都返回NULL

时间:2014-02-07 22:20:28

标签: ffmpeg

我使用的FFmpeg很好,因为如果我使用AV_CODEC_ID_PCM_U8和其他一些带有avcodec_find_encoder和avcodec_find_decoder的CODEC,它就可以工作。

有人知道为什么finder编码器函数总是用AV_CODEC_ID_OPUS返回NULL吗?

2 个答案:

答案 0 :(得分:2)

你需要检查三件事:

  • 您的fmpeg是否使用opus decodec编译? ffmpeg -decoders | grep libopus说什么?
  • 你打电话给av_register_all吗?
  • 您的机器上是否存在libopus,是否与ffmpeg预期的版本相同(我会尝试使用strace / ltrace)?

默认情况下不编译libopus:

ffmpeg-2.1.3> ./configure --help | grep opus
  --enable-libopus         enable Opus decoding via libopus [no]

因此您需要指定--enable-libopus(当然还有工具链中的libopus)

答案 1 :(得分:0)

一旦你的ffmpeg lib有--enable-libopus,你也可以使用 avcodec_find_decoder_by_name("libopus")avcodec_find_encoder_by_name("libopus")