Наложение изображения на видео и приостановка видео и звука на определенный интервал

Наложение изображения на видео и приостановка видео и звука на определенный интервал

Можно ли приостановить аудио и видео в течение периода наложения? После того, как аудио приостановлено, можно ли добавить новую звуковую дорожку только в течение этого интервала? оставшееся время исходного аудио должно воспроизводиться.

Например,

Я использую ffmpeg для наложения нескольких изображений в видео с помощью указанной ниже команды:

ffmpeg -i 2.mp4 -i gloves.png -i socks.png -filter_complex "[1:v]scale=320:240 [ovrl]; [0:v][ovrl]overlay=y=Hh:enable='between(t,3,8)'[v1];[2:v]scale=320:240 [ovrl1];[v1][ovrl1]overlay=y=Hh:enable='between(t,15,20)'[v2]" -map "[v2]" -map 0:a -c:a копировать outputVideo.mp4

Теперь мне нужно приостановить видео и звук на 3–8 секунд и воспроизвести новый звук в течение этих 3–8 секунд, а затем продолжить воспроизведение старого звука в течение оставшегося времени.

Пожалуйста, помогите мне с этим.

решение1

Чтобы приостановить аудио и видео, вы можете либо loopзапустить потоки, либо сместить PTS.

Циклические потоки

loop=loop={len_frames}:size=1:start={pos_frames},setpts=N/FRAME_RATE/TB

Здесь {len_frames}— длина цикла в кадрах, а {pos_frames}— позиция паузы в кадрах. Вы можете рассчитать эти числа, получив частоту кадров видео и умножив ее на выбранную длину и временную метку в секундах.

То же самое касается аудиочасти, для которой вам нужно использовать aloopи asetpts, соответственно, и частоту дискретизации в Гц. Кроме того, вам нужно отключить звук, установив volume=0.

Зацикленные видео- и аудиопотоки будут длиннее оригиналов, и вы затем сможете отобразить наложение на них.

Поскольку такие команды довольно сложны в составлении, я написалПрограмма на Pythonкоторый вставляет индикатор «буферизации» во время паузы видео и аудио. Вы можете проверить, как генерируются команды циклаздесь.

Смещение для PTS

См. Gyan'sответь здесь, который по сути делает:

setpts='PTS+gte(T\,{start_time})*({shift}/TB)'

в сочетании с -vsync vfr, где {start_time}— время смещения кадров, а {shift}— примененный сдвиг.

Сдвиг звука

Что касается воспроизведения звука в течение определенного временного интервала, вы можетеиспользуйте -itsoffsetопцию вводачтобы компенсировать его начало.

Или вы смещаете PTS аудиопотока на фиксированную величину с помощью фильтра asetpts.

Связанный контент