Я хочу использовать кодер 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