Какой формат видео лучше всего подходит для конкатенации?

Какой формат видео лучше всего подходит для конкатенации?

Я борюсь с .mp4 уже около 2 дней, пытаясь объединить серию из примерно 20 в один файл. Любые различия между файлами и это кошмар. Некоторые файлы имеют разный fps, а другие — разные соотношения.

Я хотел узнать, является ли mp4 форматом, который мне следует использовать, или есть лучший, простой в использовании формат для конкатенации. Время не проблема, мне просто нужен относительно высококачественный формат, который конкатенируется в большинстве случаев.

Если этого не существует, то любые предложения о том, как справиться с сильно различающимися свойствами файлов mp4 (я не совсем уверен, что именно может отличаться, помимо fps и соотношения между видео, что может вызвать проблему) были бы полезны.

Я использую ffmpeg, чтобы попытаться объединить файлы. Сначала я попытался использовать демультиплексор, а затем фильтр concat, однако фильтр concat оказался для меня очень сложным, и я совершенно не понимаю, как им пользоваться.

В каждом видео есть звук, в некоторых — неподвижные изображения, в других — движущиеся изображения.

решение1

Мультимедийные файлы сложны, поэтому к конкатенации предъявляется несколько требований:

  • Все объединяемые сегменты должны иметь одинаковое количество и тип потоков.
  • Все потоки должны иметь одинаковые параметры.

Поскольку каждый вход может отличаться по любому произвольному параметру, я рекомендую использовать фильтр concat. Вам придется согласовывать каждый вход с общим набором параметров с помощью фильтров. Формат входных данных не имеет большого значения, поскольку вы в любом случае собираетесь все перекодировать.

Базовый, общий пример, где main.mp4есть видео и аудио и end.mp4есть видео и нет аудио. Все остальные параметры предполагаются разными. Фильтры, используемые здесь: anullsrc, scale, pad, setsar, fps, format, aformat и concat.

ffmpeg -i main.mp4 -i end.mp4 -f lavfi -t 0.1 -i anullsrc=channel_layout=stereo:sample_rate=44100 -filter_complex "[0:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,format=yuv420p[v0];[1:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,format=yuv420p[v1];[0:a]aformat=channel_layouts=stereo:sample_rates=44100[a0];[v0][a0][v1][2:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" -c:v libx264 -c:a aac -movflags +faststart output.mp4

Есть несколько способов сделать это, и вам, возможно, придется внести коррективы на основе ваших данных или в соответствии с вашими требованиями.

Связанный контент