Как объединить 2 видео MP4 для вывода определенного битрейта?

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

У меня есть 2 видео в формате MP4.

Что я хочу сделать, так это ускорить первое видео до скорости 110% (без изменения высоты звука), а затем соединить его со вторым видео (которое останется с нормальной скоростью), и я хочу, чтобы результирующее видео имело битрейт 2,5. Мбит/с (поскольку Wistia сказала мне, что это должно быть минимумом для моей загрузки).

В настоящее время моя первая попытка приводит к видео, где вторая часть полностью искажена и показывает ярко-зеленый цвет и т. д. Моя вторая попытка (шаг 4) приводит к видео с общим битрейтом всего 1645 кбит/с.

Шаг 1:

В Adobe Premiere Pro CC 2017 я экспортировал 2 видео, каждое из которых использовало следующие настройки:

Frame Rate: 30
Field Order: Progressive
Aspect: Square Pixels (1.0)
Profile: Main
Bitrate Encoding: CBR
Target Bitrate [Mbps]: 2.5
Audio Format: AAC
Audio Codec: AAC
Sample Rate: 48000 Hz
Bitrate [kbps]: 320

Шаг 2.

ffmpeg -i video1.mp4 -filter_complex "setpts=PTS/1.1;atempo=1.1" -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 2.5M -minrate 2.5M -maxrate 2.5M -bufsize 5M video1_faster.mp4

Шаг 3. Создайте текстовый файл такого содержания:

file 'video1_faster.mp4'
file 'video2.mp4'

Шаг 4 (первая попытка).

ffmpeg -f concat -safe 0 -i ffmpeg_concat_list.txt -c copy final.mp4

Шаг 4 (вторая попытка) (с перекодированием).

ffmpeg -i video1_faster.mp4 -i video2.mp4 -filter_complex "[0:v] [0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" -b:v 2.5M -minrate 2.5M -maxrate 2.5M -bufsize 5M final.mp4

Что я делаю неправильно? Спасибо.

Два отдельных файла в порядке? Какая версия ffmpeg?
@rogerdpack Да.version N-82889-g54931fd Copyright (c) 2000-2016 the FFmpeg developers built with gcc 5.4.0 (GCC)
пару лет, git master "может" работать лучше, кто знает...

Ответы (2)

Шаг 4 (первая попытка) будет работать, если вы перекодируете второе видео так же, как и первое (без фильтров).

Что происходит, так это то, что помимо разницы во времени между выходом CC и ffmpeg (что приведет только к ошибкам синхронизации), x264 создает поток высокого профиля с другим набором параметров, чем кодировщик CC. Перекодируйте второе видео с помощью ffmpeg, и ваши файлы должны совпадать. Кроме того, вы можете ускорить в CC и экспортировать 1-е видео.

Вау, эта простая мысль как-то ускользнула от меня. Спасибо. Несмотря на то, что я настоятельно предпочитаю избегать повторного кодирования, когда это возможно, я мог бы согласиться в этом сценарии, поскольку я не нашел лучшего решения. PS По моему опыту, FFmpeg лучше, чем Adobe Premiere Pro CC 2017, ускоряет видео при сохранении высоты звука. Премьера прозвучала довольно плохо, на удивление.
Экспортируйте аудио отдельно и фильтруйте+кодируйте+мультиплексируйте его с видео со скоростью CC. Тогда не нужно перекодировать видео.

Это, казалось, работало (примерно *):

ffmpeg -i video1_faster.mp4 -i video2.mp4 -filter_complex "[0:v] [0:a] [1:v] [1:a]  concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 2.5M -minrate 2.5M -maxrate 2.5M -bufsize 5M final.mp4

Обратите внимание, как я пропустил -c:v libx264 -x264-params "nal-hrd=cbr"часть в «Шаг 4 (вторая попытка)» в моем вопросе выше.

* Это уменьшило битрейт аудио до 103 кбит/с, хотя битрейт аудио 2 входных файлов был 317 кбит/с и 127 кбит/с. Поэтому мой следующий проект будет заключаться в том, чтобы попытаться выяснить, как улучшить Шаг 2, чтобы сохранить битрейт аудио исходного файла, а затем улучшить Шаг 4, чтобы снова сохранить битрейт аудио.

Я определенно предпочел бы принять чей-то (лучший) ответ.

Я бы не стал обращать особого внимания на рекомендации по битрейту Wistia или большинства других сайтов. Они выпускаются для массовой аудитории и предназначены для безопасного использования, поскольку большинство потребительских и даже профессиональных видеоредакторов не имеют кодировщиков, которые хорошо работают с VBR. Это не относится к x264/5 и ffmpeg/fdk AAC. Если это выглядит и звучит хорошо, все в порядке.
@Gyan Наверное, это правда. В данном случае это было не руководство для публики, а результат обсуждения по электронной почте между мной и службой поддержки Wistia, поскольку мое видео не работало хорошо на разных устройствах, и их указание состояло в том, чтобы повторно загрузить видео хотя бы раз. 2500кбит/с.