Здесь мы предполагаем, что видеофайл еще не содержит аудиопоток, и вы хотите иметь тот же формат вывода (здесь, MP4), что и формат ввода.
Вышеприведенная команда перекодирует аудио, поскольку MP4 не могут переносить аудиопотоки PCM. Вы можете использовать любой другой нужный аудио кодек, если хотите. См. Руководство по кодированию AAC для получения дополнительной информации.
Если ваш аудио- или видеопоток длиннее, вы можете добавить -shortestопцию, чтобы ffmpeg прекратил кодирование после завершения одного файла.
Копирование аудио без перекодирования
Если ваш выходной контейнер может обрабатывать (почти) любой кодек - например, MKV - тогда вы можете просто скопировать аудио и видео потоки:
я не думаю, что контейнеры mp4 могут иметь аудио потоки WAV. Попробуйтеffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
Люк
1
Я использую это, и он заменяет оригинальное аудио из входного аудио. Что если я хочу объединить входное аудио с аудио входного видео?
Икбал Малик
Очень милые командные строки ...
Чандра Накка
Отлично, я использовал ffmpeg -i video.mp4 -i audio.wav \ -c: v copy -c: aac -strict экспериментальный вывод.mp4 для объединения MP3 с WAV-файлом ... => mp4 5 минут, рендеринг 30 секунд ..Спасибо
сонида
12
Поскольку мне не разрешено писать комментарии к первому ответу с моей репутацией, добавление здесь, потому что у меня была эта проблема при кодировании webms. Если ваш аудиопоток, например, длиннее, чем видеопоток , вам придется его обрезать, иначе у вас будет последний видеокадр в виде неподвижного изображения и звука.
Чтобы обрезать любой поток, вы можете использовать -ss [чч: мм: сс] -t [сс] перед каждым из -i «file.ext».
-ss [...] определит начальную точку для резки
-t [...] определит длину сегмента в секундах.
Здесь действительно нет необходимости описывать, как использовать командную строку. Это в значительной степени подразумевает, что пользователи смогут понять это. Тем более что на аскере указан FFmpeg. Все таки -shortestтег очень изящный. Намного проще, чем в ответе @ user136036.
Кэт
3
Это перекодирует все, что, вероятно, не то, что нужно.
Попробуйте использовать mencoder (да, он основан на ffmpeg, но вы никогда не знаете). Я использую -audiofileаргумент. Я обычно использую ffmpeg, поэтому примите этот совет с щепоткой соли.
И, если вы используете Windows, Mediacoder (больше не к сожалению, с открытым исходным кодом) работает ... это в основном оболочка для многих кодировщиков gnu и нескольких несвободных.
Ответы:
Объединение видео и аудио с перекодированием аудио
Посмотрите этот пример, взятый из этой записи в блоге, но обновлен для более нового синтаксиса. Должно быть что-то с эффектом:
Здесь мы предполагаем, что видеофайл еще не содержит аудиопоток, и вы хотите иметь тот же формат вывода (здесь, MP4), что и формат ввода.
Вышеприведенная команда перекодирует аудио, поскольку MP4 не могут переносить аудиопотоки PCM. Вы можете использовать любой другой нужный аудио кодек, если хотите. См. Руководство по кодированию AAC для получения дополнительной информации.
Если ваш аудио- или видеопоток длиннее, вы можете добавить
-shortest
опцию, чтобы ffmpeg прекратил кодирование после завершения одного файла.Копирование аудио без перекодирования
Если ваш выходной контейнер может обрабатывать (почти) любой кодек - например, MKV - тогда вы можете просто скопировать аудио и видео потоки:
Замена аудиопотока
Если ваше входное видео уже содержит аудио, и вы хотите заменить его, вам нужно указать ffmpeg, какой аудио поток взять:
map
Опция делает FFmpeg использовать только первый поток видео с первым входом и первого звукового потока со вторым входом для выходного файла.источник
ffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
Поскольку мне не разрешено писать комментарии к первому ответу с моей репутацией, добавление здесь, потому что у меня была эта проблема при кодировании webms.
Если ваш аудиопоток, например, длиннее, чем видеопоток , вам придется его обрезать, иначе у вас будет последний видеокадр в виде неподвижного изображения и звука.
Чтобы обрезать любой поток, вы можете использовать -ss [чч: мм: сс] -t [сс] перед каждым из -i «file.ext».
-ss [...] определит начальную точку для резки
-t [...] определит длину сегмента в секундах.
Пример:
источник
-shortest
чтобы отрезать конец.-open командная строка (windows + r -> cmd-> enter)
- затем перейдите в папку, где у вас есть аудио и видео файл
применить этот cmd
Введите .... вы получите новый файл с именем outPutFime.mp4 (объединенный файл аудио и видео)
источник
-shortest
тег очень изящный. Намного проще, чем в ответе @ user136036.Это сработало для меня:
источник
Попробуйте использовать mencoder (да, он основан на ffmpeg, но вы никогда не знаете). Я использую
-audiofile
аргумент. Я обычно использую ffmpeg, поэтому примите этот совет с щепоткой соли.И, если вы используете Windows, Mediacoder (больше не к сожалению, с открытым исходным кодом) работает ... это в основном оболочка для многих кодировщиков gnu и нескольких несвободных.
источник