Я тестирую ускоренный декодер vda hw ffmpeg, но пока не повезло.Пример декодирования ffmpeg с использованием ускорения vda?
командной строки Я использую это:
./ffmpeg -hwaccel vda -i ~/Downloads/big_buck_bunny_720p_surround.avi -c:v rawvideo -pix_fmt yuv420p out.yuv
(вход видео можно скачать здесь: http://mirrorblender.top-ix.org/peach/bigbuckbunny_movies/big_buck_bunny_720p_surround.avi)
, но он использует Sw декодер, вместо запрашиваемого VDA Hw декодера.
я отлажена ffmpeg.c, и обнаружили, что в функции get_format:
if (!(desc->flags & AV_PIX_FMT_FLAG_HWACCEL))
break;
desc-> флаг не установлен с AV_PIX_FMT_FLAG_HWACCEL, поэтому он пропускает Hw инициализации ускорения.
Причина в том, что pix_fmt по какой-либо причине установлен в AV_PIX_FMT_NONE, а не yuv420p, как указано в команде.
Затем я изменил команду к этому:
./ffmpeg -hwaccel vda -i ~/Downloads/big_buck_bunny_720p_surround.avi -c:v rawvideo -pix_fmt vda_vld out.yuv
но то, что я получил:
Impossible to convert between the formats supported by the filter 'format' and the filter 'auto-inserted scaler 0'
Error opening filters!
Можете ли вы показать мне пример использования FFmpeg сваливать выше видео в YUV, используя декодер vda hw?
UPDATE из ffmpeg mailist.
мне сказали, чтобы попробовать следующую команду вместо:
./ffmpeg -vcodec h264_vda -i ~/Downloads/big_buck_bunny_720p_surround.avi out.yuv
, но это то, что я получил:
./ffmpeg -vcodec h264_vda -i ~/Downloads/big_buck_bunny_720p_surround.avi out.yuv
ffmpeg version 2.6.1 Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
configuration:
libavutil 54. 20.100/54. 20.100
libavcodec 56. 26.100/56. 26.100
libavformat 56. 25.101/56. 25.101
libavdevice 56. 4.100/56. 4.100
libavfilter 5. 11.102/5. 11.102
libswscale 3. 1.101/3. 1.101
libswresample 1. 1.100/1. 1.100
[10:20:50.169] vtDecompressionDuctCreate signalled err=-8973 (err) (Could not select and open decoder instance) at /SourceCache/CoreMedia_frameworks/CoreMedia-1562.107/Sources/VideoToolbox/VTDecompressionSession.c line 1181
[h264_vda @ 0x7f9feb034600] Failed to init VDA decoder: -12473.
[avi @ 0x7f9feb00da00] Failed to open codec in av_find_stream_info
[NULL @ 0x7f9feb034600] missing picture in access unit with size 9960
[10:20:50.252] vtDecompressionDuctCreate signalled err=-8973 (err) (Could not select and open decoder instance) at /SourceCache/CoreMedia_frameworks/CoreMedia-1562.107/Sources/VideoToolbox/VTDecompressionSession.c line 1181
[h264_vda @ 0x7f9feb034600] Failed to init VDA decoder: -12473.
[NULL @ 0x7f9feb034600] missing picture in access unit with size 457
причина, я хотел бы попробовать это потому, что я хотел использовать VDA с libavcodec в первую очередь. но проблема, которую я видел, была именно выше. похоже, что ffmpeg имеет ту же проблему.