我正在制作一个在Android上使用FFmpeg来显示屏幕的应用程序。
我有几个问题要问你。
std::vector <AVHWDeviceType> GetSupportHwDeviceType ()
{
unsigned int idx {};
std::vector <AVHWDeviceType> hwDevTypes;
AVHWDeviceType hwDevType = AVHWDeviceType::AV_HWDEVICE_TYPE_NONE;
while ((hwDevType = av_hwdevice_iterate_types (hwDevType)) ! = AVHWDeviceType::AV_HWDEVICE_TYPE_NONE)
{
__android_log_print (ANDROID_LOG_DEBUG, __func__, "[Index% d]", idx ++);
__android_log_print (ANDROID_LOG_DEBUG, __func__,
"[Support Device Name% s]", av_hwdevice_get_type_name (hwDevType));
hwDevTypes.push_back (hwDevType);
}
return hwDevTypes;
}
我想将硬件加速与上述功能一起使用,结果我找不到任何类型。
在https://trac.ffmpeg.org/wiki/HWAccelIntro,它表示Android可以使用MediaCodec。为什么我不能使用GetSupportHwDeviceType()从Android NDK中检索任何类型?
在为Android构建FFmpeg时使用的Configure参数。
--disable-asm
--enable-cross-comile
--disable-static
--disable-programs
--disable-doc
--enable-shared
--enable-protocol=file
--enable-pic
--enable-small
--enable-mediacodec
--enable-jni
--enable-decoder=h264_mediacodec
--enable-opengl
/* The argument was not supported by ./configure --list-hwaccel in FFmpeg v4.0.3. */
--enable-hwaccel=h264_mediacodec