НейроАгент

FFmpeg: перенос аудио в MP4 за одну команду

Узнайте, как с помощью одной команды FFmpeg перенести звуковую дорожку из одного MP4 файла в другой без перекодирования. Полное руководство с примерами и альтернативными решениями.

Вопрос

Как с помощью одной команды ffmpeg.exe перенести звуковую дорожку из одного MP4 файла в другой без перекодирования?

У меня есть два MP4 файла:

  • 1080.mp4 - видео без звука
  • 360.mp4 - видео со звуком

Мне нужно перенести звуковую дорожку из файла 360.mp4 в файл 1080.mp4 без перекодирования аудио. Я знаю, что это можно сделать в две команды:

ffmpeg -i 360.mp4 -vn -acodec copy sound.aac
ffmpeg -i 1080.mp4 -i sound.aac -c copy 1080_sound.mp4

Однако, требуется выполнить эту задачу с помощью одной команды ffmpeg, передав оба видеофайла через ключ -i и получив результат за один запуск программы.

Какую команду ffmpeg нужно использовать для переноса звуковой дорожки из одного MP4 файла в другой без промежуточных файлов и перекодирования?

НейроАгент

Используйте следующую команду для переноса звуковой дорожки из одного MP4 файла в другой без перекодирования:

ffmpeg -i 1080.mp4 -i 360.mp4 -map 0:v:0 -map 1:a:0 -c copy 1080_sound.mp4

Содержание

Основная команда

Для переноса звуковой дорожки из файла 360.mp4 в файл 1080.mp4 без перекодирования используйте:

bash
ffmpeg -i 1080.mp4 -i 360.mp4 -map 0:v:0 -map 1:a:0 -c copy 1080_sound.mp4

Эта команда объединяет видео из первого файла с аудио из второго файла, сохраняя оба потока без перекодирования.

Разбор компонентов команды

Давайте разберем каждый компонент команды:

  • -i 1080.mp4 - первый входной файл (видео без звука)
  • -i 360.mp4 - второй входной файл (видео со звуком)
  • -map 0:v:0 - взять видеопоток (v) с индексом 0 из первого файла (0)
  • -map 1:a:0 - взять аудиопоток (a) с индексом 0 из второго файла (1)
  • -c copy - копировать оба потока без перекодирования
  • 1080_sound.mp4 - выходной файл

Важно: Ключ -map позволяет точно указать, какие именно потоки из каких файлов нужно использовать в выходном файле.

Альтернативные варианты

Более краткая запись

Можно использовать более краткую форму команды:

bash
ffmpeg -i 1080.mp4 -i 360.mp4 -map 0:v -map 1:a -c copy 1080_sound.mp4

В этом случае FFmpeg автоматически выберет первый видеопоток и первый аудиопоток из указанных файлов.

Указание кодеков явно

Для большей явности можно указать кодеки отдельно:

bash
ffmpeg -i 1080.mp4 -i 360.mp4 -map 0:v:0 -map 1:a:0 -c:v copy -c:a copy 1080_sound.mp4

Это эквивалентно -c copy, но более явно показывает, что и видео, и аудио копируются без изменений.

Обработка нескольких аудиодорожек

Если в файле 360.mp4 несколько аудиодорожек, вы можете выбрать нужную с помощью индекса:

bash
# Вторая аудиодорожка (индекс 1) из второго файла
ffmpeg -i 1080.mp4 -i 360.mp4 -map 0:v:0 -map 1:a:1 -c copy 1080_sound.mp4

Чтобы просмотреть доступные потоки в файлах, используйте:

bash
ffmpeg -i 360.mp4

Это покажет все потоки с их индексами.

Проверка результата

После выполнения команды вы можете проверить результат:

bash
ffprobe 1080_sound.mp4

Эта команда покажет структуру выходного файла, включая наличие видео и аудио потоков.

Также можно проверить качество аудио с помощью:

bash
ffmpeg -i 1080_sound.mp4 -f null -

Если команда выполнится без ошибок, это означает, что файл имеет корректную структуру.

Заключение

Использование одной команды FFmpeg для переноса аудиодорожки между файлами имеет несколько преимуществ:

  1. Эффективность - нет необходимости создавать промежуточные файлы
  2. Скорость - процесс выполняется быстрее, так как нет этапа перекодирования
  3. Качество - аудио сохраняется в исходном качестве без потерь
  4. Удобство - всего одна команда вместо двух

Основная команда для вашей задачи:

ffmpeg -i 1080.mp4 -i 360.mp4 -map 0:v:0 -map 1:a:0 -c copy 1080_sound.mp4

Источники

  1. r/ffmpeg on Reddit: Adding Audio Track from one mp4 to another mp4
  2. Super User: How to use ffmpeg to rip audio from mp4 and add it to another
  3. Stack Overflow: FFMPEG mux video and audio (from another video) - mapping issue
  4. JSON2Video: FFmpeg - How to extract audio from video
  5. Mapping multiple input files - python-ffmpeg