Использование ffmpeg h264_amf в C ++ - PullRequest
0 голосов
/ 06 июля 2018

Я хочу использовать кодер h264_amf в моем коде C ++. В инструменте командной строки FFmpeg я могу написать
ffmpeg -i in_to_tree_1080p50.y4m -c:v h264_amf out.mp4
И это прекрасно работает для меня, но когда я пытаюсь найти этот кодировщик с помощью avcodec_find_encoder_by_name, я не могу его найти. Мой полный код:

static AVCodec* select_codec() {
  static std::array<const char*, 6> codecs = {
    "h264_nvenc",
    "h264_amf",
    "h264_omx",
    "h264_v4l2m2m",
    "h264_vaapi",
    "h264_videotoolbox",
  };

  for (const char* name : codecs) {
    if (auto* codec = avcodec_find_encoder_by_name(name)) {
      std::cout << "Using " << name << " encoder" << std::endl;
      return codec;
    }
  }

  std::cout << "Using default h264 encoder" << std::endl;
  return avcodec_find_encoder(AV_CODEC_ID_H264);
}

int main() {
  select_codec();
  return 0;
}

Выход этой функции всегда Using default h264 encoder. Я сделал что-то не так?

Моя конфигурация:

  • FFmpeg 4.0
  • Windows 10 x64
  • MSVC17 (141 набор инструментов)
  • Radeon RX 470 Graphics

1 Ответ

0 голосов
/ 09 июля 2018

Вы должны вызвать av_register_all () перед avcodec_find_encoder_by_name () и avcodec_find_encoder ().

...