3

Я хочу добавить аудио к видео на определенную продолжительность. Теперь до / после этой предполагаемой продолжительности должно воспроизводиться оригинальное аудио видео; и в запланированное время должен воспроизводиться только вставленный звук.

Я видел Overlay Audio, но он накладывается поверх оригинального аудио. Я уже пробовал -itsoffset но он отключает звук.

Вот графическое описание того, что я хочу сделать именно Что я хочу сделать

Любая помощь приветствуется.

1 ответ1

5

Используйте atrim, asetpts и concat :

ffmpeg -i video.mkv -i audio.mp3 -filter_complex \
"[0:a]atrim=end=12,asetpts=PTS-STARTPTS[aud1]; \
 [1:a]atrim=30:42,asetpts=PTS-STARTPTS[aud2]; \
 [0:a]atrim=start=24,asetpts=PTS-STARTPTS[aud3]; \
 [aud1][aud2][aud3]concat=n=3:v=0:a=1[aout]" \
-map 0:v -map "[aout]" -c:v copy -c:a libfdk_aac output.mp4
  • Первый atrim получает первые 12 секунд аудио с первого входа (video.mkv).
  • Второй atrim получает секунды 30-42 от второго входа (audio.mp3).
  • Третий atrim получает секунды 24-го конца звука от первого входа (video.mkv).
  • Затем concat объединяет эти сегменты в один аудиопоток.
  • Видео копируется в поток, а не перекодируется в этом примере.
  • Без asetpts я получал переполнение очереди буфера, что приводило к "рывковому" выводу. См. Документацию atrim для получения дополнительной информации.

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