2015-03-17 2 views
1

Я тестирую ускоренный декодер 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 имеет ту же проблему.

ответ

0

Я COLD по электронной почте автору libavcodec/vda_h264_dec.c который ответил со следующим сообщением:

Я не очень удивлен тем, что декодер VDA не может быть правильно inited здесь. Думаю, вам, вероятно, в конечном итоге придется перемножить ваше видео, чтобы использовать контейнер MP4 или MKV.

Я не знаю точно, что там происходит, но в соответствии с моим опытом работы с картой VDA раньше, у этой рамки было довольно несколько ограничений. Я предполагаю, что ограничение, с которым вы встречались, может быть так, что потребовалось несколько дополнительных данных видео для инициализации декодера, который сделал , он поддерживает только некоторые из контейнеров. Я забыл, что точное имя этих дополнительных данных, но AFAIK, только контейнер, совместимый с MP4, может обеспечить это.


Я также помню mp4 имеет ExtraData поле, но я не знаю, что это такое.

Я быстро попытался следующую команду, она работала:

./ffmpeg -hwaccel vda -i ~/Downloads/big_buck_bunny.mp4 -c:v rawvideo -pix_fmt yuv420p out.yuv​ 
Смежные вопросы