Допустим, у меня есть образец видео с именем "samplevideo"
и образец аудио с именем "sampleaudio"
. Я хочу заменить звук образца видео на образец аудио, начиная с 5 до 12 секунд. До отметки 5 секунд видео-аудио не изменится, затем запускается пример звука и длится 7 секунд.
Я попытался придумать команду ffmpeg, которая решает эту проблему:
ffmpeg -i samplevideo.mp4 -i sampleaudio.aac -ss 20 -map 0:v -map 1:a -c:v copy output.mp4
Проблема:
Он обрезает видео, начиная с отметки 20 секунд. Я хочу сохранить видео и исходный аудиопоток до тех пор, пока он не достигнет нужной отметки времени, а затем использовать sampleaudio до желаемого времени окончания.
Буду признателен за любую помощь.
От исследование проблемы, Просматривая:
https://superuser.com/questions/708125/add-audio-at-specific-time-in-video-using-ffmpeg
Вы можете попробовать как:
ffmpeg -i samplevideo.mp4 -itsoffset 00:00:20 -i sampleaudio.aac -map 0:v -map 1:a -c:v copy -async 1 output.mp4
Если все еще не работает, проверьте другие предложения по результатам исследования.
Вам нужно соединить аудио с помощью filtergraph. Попробуй это:
ffmpeg -i samplevideo.mp4 -i sampleaudio.aac \
-filter_complex "[1:a]asendcmd='5.0 astreamselect map 1;\
12.0 astreamselect map 0',\
[0:a]astreamselect=inputs=2:map=0[aout]"
-map 0:v -map [aout] -c:v copy output.mp4
Изменен -filter_graph на -filter. Получил эту ошибку: ошибка.
извините, надо читать filter_complex
. -filter
работает, только если у вас есть только 1 вход и 1 выход.
Я попробовал это с filter_complex, как вы сказали. Но ожидаемого результата не получил. Выходной звук видео приглушается через 5 секунд и длится до конца. Ожидаемый результат: образец звука должен быть слышен через 5-12 секунд. Вот журнал Если вам нужно, ссылка на входные и выходные файлы, указанные в ссылке журналов.
Итак, синтаксис START-END
в документации не работает, попробуйте отредактированную версию, где теперь выдаются 2 команды.
Просто используйте amix с выборочным отключением звука.
ffmpeg -i samplevideo.mp4 -i sampleaudio.aac \
-filter_complex "[0:a]volume=0:enable=between(t\,5\,12)[a0];\
[1:a]atrim=0:7,adelay=5s:all=1[a1];\
[a0][a1]amix=normalize=0:duration=first[aout]"
-map 0:v -map [aout] -c:v copy output.mp4
Используйте ffmpeg 5.0
Предоставленная вами команда отключает звук видео до указанного смещения. Я хочу, чтобы звук не менялся. Пробую другие решения.