Как объединить видеопоток из одного файла и аудиопотоки из другого?

Вопрос или проблема

Ситуация: Я закодировал файл h.264 input_original.mkv в h.265 output_hevc.mkv

После долгого процесса кодирования я понял, что выбраны неправильные аудиопотоки.

Мне нужно получить новый output_hevc_2.mkv, который будет основан на копии видеопотока из output_hevc.mkv и сопоставленных аудиопотоках из input_original.mkv

Это технически возможно?

П.с. Я видел эту ссылку ffmpeg-adding-re-encoding-audio-stream-on-video-file

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

В случае, если вам нужно указать аудио/видео/субтитры потоки

ffmpeg -hide_banner \
-i "input_0.mkv" \
-i "input_1.mkv" \
-map 0:v:0  \
-map 1:a:0  \
-map 1:a:4  \
-map 0:s:0  \
-map 0:s:2  \
-c copy \
"result_output.mkv"

Это объединит видеопоток из input_0.mkv и выбранные аудиопотоки и субтитры из input_1.mkv в result_output.mkv

Ответ или решение

Для выполнения задачи объединения видеопотока из одного файла и аудиопотоков из другого файла, можно использовать утилиту ffmpeg, которая является мощным инструментом для обработки мультимедийных файлов. Рассмотрим изучение данной задачи детально.

Шаги:

  1. Подготовка к процессу:
    Убедитесь, что у вас установлена последняя версия ffmpeg. Это важно, так как каждая новая версия включает улучшения и новые функции, которые могут быть полезными в вашей работе.

  2. Изучение файлов:
    Начнем с изучения потоков, доступных в ваших исходных файлах. Для этого воспользуйтесь командой:

    ffmpeg -i input_original.mkv
    ffmpeg -i output_hevc.mkv

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

  3. Составление команды ffmpeg:
    Ваша задача заключается в том, чтобы скопировать видеопоток из файла output_hevc.mkv и аудиопотоки из файла input_original.mkv. Структура команды будет выглядеть следующим образом:

    ffmpeg -hide_banner \
    -i "output_hevc.mkv" \
    -i "input_original.mkv" \
    -map 0:v:0  \         # Копируем первый видеопоток из output_hevc.mkv
    -map 1:a:0  \         # Копируем первый аудиопоток из input_original.mkv
    -map 1:a:1  \         # Вы можете добавить любые дополнительные аудиопотоки, например второй аудиопоток
    -c copy \
    "output_hevc_2.mkv"

    В данной команде:

    • -map 0:v:0 указывает на видео из первого входного файла (в данном случае это output_hevc.mkv).
    • -map 1:a:0 и -map 1:a:1 указывают на аудиопотоки из второго входного файла (input_original.mkv). В вашем случае, вы можете настроить количество аудиопотоков на основе вашего анализа.
  4. Запуск команды и итог:
    После составления команды, просто запустите её в терминале. ffmpeg объединит заданные потоки и создаст новый файл output_hevc_2.mkv, содержащий правильный видеопоток и аудиопотоки.

  5. Проверка результата:
    После завершения работы ffmpeg, рекомендуется проверить новый файл на наличие необходимых потоков. Для этого снова используйте команду ffmpeg -i для анализа output_hevc_2.mkv.

Заключение:

Используя ffmpeg, вы можете легко и эффективно объединять видеопотоки и аудиопотоки из разных файлов. Тщательный анализ доступных потоков и правильное использование параметров -map позволит вам получить именно тот результат, который вы ожидаете. Если у вас есть дополнительные сложности, более специфические команды ffmpeg могут помочь вам решить узкие задачи.

Прибудьте на LinkedIn или других платформах для обсуждения мультимедийной обработки, чтобы получать дополнительные советы и рекомендации по работе с аудио и видео файлами.

Оцените материал
Добавить комментарий

Капча загружается...