Как запустить ffmpeg, чтобы создать видео в формате mp4, которое будет воспроизводиться по кругу, и mp3, которое будет играть на фоне?

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

Я пытался сделать что-то, что казалось мне относительно простым с ffmpeg.

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

MP4 короткий, MP3 длинный. MP4 без звука.

Я хочу создать видео, которое будет проигрывать MP4 в цикле, одновременно проигрывая MP3 (только один раз) в фоновом режиме. Таким образом, длина нового видео равна длине MP3.

Я попробовал много разных команд с ffmpeg, но ничего не работает. Я всегда получаю короткое видео без звука.

Вот последняя команда, которую я попробовал, это ближе всего к тому, что я предполагал должно сработать:

ffmpeg -stream_loop 1 -i silent-video.mp4 -i audiofile.mp3 -c:v copy -c:a aac -b:a 192k -preset:v fast output_video_with_multiple_video_loops.mp4

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

Для решения задачи, которую вы описали, мы намерены использовать ffmpeg для создания видео, в котором короткий MP4 файл зацикливается, а длинный MP3 файл воспроизводится в фоне. Давайте детально разберем, как это сделать правильно.

Шаг 1: Подготовка исходных файлов

У нас есть:

  • Беззвучное видео: silent-video.mp4
  • Длинный аудиофайл: audiofile.mp3

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

Шаг 2: Использование команды ffmpeg

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

ffmpeg -stream_loop -1 -i silent-video.mp4 -i audiofile.mp3 -filter_complex "[0:v]loop=loop=-1:size=1:start=0,setpts=N/(FRAME_RATE*TB),format=yuv420p[v]" -map "[v]" -map 1:a -shortest -c:v libx264 -c:a aac -b:a 192k output_final.mp4

Разбор команды:

  • -stream_loop -1 -i silent-video.mp4: Мы используем -stream_loop -1, чтобы зациклить видео бесконечно.
  • -i audiofile.mp3: Загрузка аудиофайла.
  • -filter_complex: Этот параметр позволяет нам применять несколько фильтров к дорожкам.
    • [0:v]loop=loop=-1:size=1:start=0: Зацикливание видеодорожки.
    • setpts=N/(FRAME_RATE*TB): Рассчитываем временные метки для корректного воспроизведения.
    • format=yuv420p: Устанавливает формат видео. Формат yuv420p обеспечивает максимальную совместимость с видеоплеерами.
    • [v]: Обозначает выходное видео после применения фильтров.
  • -map "[v]": Соответствие выхода обработанного видео фильтрам.
  • -map 1:a: Копирование аудиодорожки.
  • -shortest: Эта опция гарантирует, что результирующее видео завершится одновременно с завершением аудиотрека.
  • -c:v libx264: Кодек для видео, обеспечивающий компрессию и совместимость.
  • -c:a aac -b:a 192k: Кодек и битрейт для аудиодорожки.

Шаг 3: Запуск команды

Запустите команду в терминале на вашем компьютере, убедившись, что вы находитесь в директории с файлами silent-video.mp4 и audiofile.mp3. Этот процесс создаст выходное видео output_final.mp4, длительность которого будет соответствовать длине аудио.

Данный подход позволит вам успешно интегрировать обе дорожки, получив качественное видео с зацикленным содержимым и синхронизированным аудио.

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

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