FiLinX
![](http://forum.ru-board.com/board/avatars/Psygnosis.gif)
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Vanvanych из архивных записок: ------------------------------------------------------------------------ Если ваш выходной контейнер может обрабатывать (почти) любой кодек, например MKV, то вы можете просто скопировать как аудио, так и видеопотоки: ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv Если ваш аудио- или видеопоток длиннее, вы можете добавить опцию -shortest чтобы ffmpeg остановил кодировку после завершения одного файла. ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4 ---------------------------------------------------------------------- Объединение видео и аудио, с повторным кодированием звука: ffmpeg -i video.mp4 -i audio.wav \ -c:v copy -c:a aac -strict experimental output.mp4 ---------------------------------------------------------------------- Если ваше входное видео уже содержит аудио, и вы хотите его заменить: ffmpeg -i video.mp4 -i audio.wav \ -c:v copy -c:a aac -strict experimental \ -map 0:v:0 -map 1:a:0 output.mp4 Опция map указывает ffmpeg использовать только первый видеопоток с первого входа и первый аудиопоток со второго входа для выходного файла. ---------------------------------------------------------------------- заменить фрагмент аудиодорожки в видео, звуком из подготовленного аудио файла: Код: 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 я получал переполнение буферной очереди, что приводило к «отрывистому» выводу. ---------------------------------------------------------------------- | Всего записей: 2179 | Зарегистр. 05-05-2010 | Отправлено: 23:11 29-02-2024 | Исправлено: FiLinX, 23:29 29-02-2024 |
|