FFmpeg: пропуск-filter_complex приводит к отсутствию видео в некоторых проигрывателях

#windows #video #ffmpeg #screen #video-capture

Вопрос:

Я создал не очень простую команду ffmpeg со сложным фильтром для добавления открывающих/закрывающих титров к видео. В том же процессе видео изменяется и перекодируется. Это отлично работает у всех игроков, которых я тестировал.

Когда я исключаю входы-filter_complex arg и изображения, результирующий файл воспроизводится, как и ожидалось, в VLC, но содержит только аудио (без видео) в проигрывателе Windows Media.

Все это делается в Windows 10 с использованием стандартного пакетного файла Windows.

Есть у кого-нибудь идеи, что здесь происходит? Мой ffmpeg foo очень ограничен.

 ffmpeg.exe ^
 -i "..videosfilm.mov" ^
 -y ^
 -codec:a aac ^
 -s:v 1280x720 ^
 -codec:v libx264 -preset slower -tune animation -crf 22 ..videosfilm.mov.m4v"

ffmpeg.exe ^
 -i "..videosfilm.mov" ^
 -i OpeningCredits.de.png -i ClosingCredits.de.png ^
 -filter_complex "[0:v][1:v] overlay=0:0:enable='between(t,0,3.5)',drawtext=enable='between(t,0,3.5)':fontfile=fonts/Roboto-Bold.ttf:text=Test:fontcolor=white:fontsize=104:x=(w-text_w)/2:y=(h-text_h)/2 45,drawtext=enable='between(t,0,3.5)':fontfile=fonts/Roboto-Bold.ttf:text=:fontcolor=white:fontsize=104:x=(w-text_w)/2:y=(h-text_h)/2 45 text_h 20 [tmp]; [tmp][2:v] overlay=0:0:enable='between(t,39-5.2,39)'" ^
 -y ^
 -codec:a aac ^
 -s:v 1280x720 ^
 -codec:v libx264 -preset slower -tune animation -crf 22 "..videosfilm.mov.m4v"
 

Ответ №1:

Фильтр наложения по умолчанию выводится на YUV420P, который поддерживается всеми игроками. Поэтому, когда он используется, это преобразование формата является неявным побочным эффектом.

В этом случае, похоже, что ваш ввод не является YUV420P. Таким образом, когда filter_complex опущен, преобразование в 4:2:0 не происходит, и в WMP, по-видимому, нет фильтров для декодирования форматов, отличных от 4:2:0 YUV.

Добавьте -pix_fmt yuv420p , чтобы принудительно выполнить преобразование.

Комментарии:

1. На самом деле, это была именно моя проблема. Решено, сделано, спасибо.