1

Я работаю над видео с альфа-каналом, который будет объединен с фоновым видео в заданной позиции (например, [100,100]). Вы можете сделать это с помощью:

ffmpeg -i НАЗАД -i OVER -filter_complex [0] [1] оверлей = 100:100 ВЫХОД

Но я хотел бы проверить результат без необходимости генерировать все видео, а затем воспроизводить его.

Я пробовал VLC, но его единственный вариант наложения - поместить изображение (даже не анимированное) поверх видео. Я не знаю, есть ли в MPC-HC шейдер, который бы мне подошел, но я его не нашел (а шейдеры, даже самые простые, обычно требуют процессора). То же самое происходит и с Avisynth: игра резкая и выглядит еще хуже (я полагаю, это потому, что Avisynth работает с и выводит несжатое видео).

Есть ли способ смотреть получившееся видео на лету, имея возможность перейти к любой его точке и использовать разумное количество процессорного времени?

2 ответа2

1

Я отвечаю себе:

Я нашел связанный с этим вопрос, и я подумал, что могу передать ffmpeg в ffplay. Он работает частично (вы можете смотреть объединенное видео), но вы не можете искать (и он душит процессор).

ffmpeg -i BACKGROUND -i OVERLAY -filter_complex [0][1]overlay=100:100 -f matroska - | ffplay -

Но я даже не думал, что можно использовать ffplay , и, хотя ffplay принимает только одну опцию -i , пересматривая фильтры ffmpeg , я наткнулся на фильтр movie (почти не используемый с ffmpeg, потому что вы можете добавить несколько опций -i ), который предоставляет способ добавить больше входов. После некоторых тестов я смог сделать то, что хотел:

ffplay -i BACKGROUND -vf "movie=OVERLAY[ov]; [in][ov]overlay=100:100"

(Если вы используете Windows и OVERLAY - это имя с пробелами, вы можете заключить его в '' .)

С помощью этой командной строки вы можете искать полученное видео, не используя заметных дополнительных процессоров (просто щелкните правой кнопкой мыши на изображении - вы перейдете к проценту в файле, соответствующему доле ширины).

Плюсом является то, что если вам нужны некоторые дополнительные параметры в окончательной кодировке с помощью ffmpeg, они могут быть обнаружены с помощью ffplay.

1

Если вы генерируете фрагментированный MP4, вы можете просматривать видео во время его кодирования. Вы можете искать только те точки, которые уже были закодированы во время загрузки файла. Так что, если вы хотите искать дальше, перезагрузите его позже.

Основной синтаксис

ffmpeg -i input -<encoding parameters> -movflags +frag_keyframe+separate_moof+omit_tfhd_offset+empty_moov out.mp4

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .