Как объединить видео файлы с терминала?


9

Я пробовал avidemux2_cli, mencoder, ffmpeg, cat ... Но это не всегда работает (в большинстве случаев ошибка заключается в том, что аудиокодек не совпадает) Возможно, я ввел неправильные параметры в команды.

Итак, команды:

cat Sample.avi rrr.avi > complete.avi
ffmpeg -i Sample.avi -i output.avi -vcodec copy -acodec copy complete.avi
mencoder -ovc lavc -oac copy Sample.avi rrr.avi -o complete.avi
avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi -append output.avi --save video.avi

Проблема кошки в том, что она не показывает ошибку, но не всегда работает .. Как и complete.avi будет точно таким же с Sample.avi

Fmmpeg ничего не делает. Complete.avi всегда одинаков с Sample.avi

Ошибка Mencoder: Все файлы должны иметь идентичный аудиокодек и формат для -oac-копии. Таким образом, complete.avi то же самое с Sample.avi

avidemux2_cli ошибки нет, но файл complete.avi снова совпадает с Sample.avi.

Таким образом, чтобы подвести итог, все complete.avi одинаковы с Sample.avi .. И проблема в том, что у них нет одинакового аудиокодека (я так понимаю). Есть идеи?


1
Я думаю, что вам нужно изменить видеокодек и аудиокодек входных файлов на одни и те же кодеки, если вы хотите безопасно объединить два видео,
vine_user

И как я могу это сделать?
Леон Витанос

Вы можете использовать mencoderс опциями -ovc и -oac. Смотрите: mplayerhq.hu/DOCS/HTML/en/menc-feat-selecting-codec.html
vine_user

Ответы:


10

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

Например, используя xvid (видеокодек) и mp3lame (аудиокодек):

sudo apt-get install mencoder libxvidcore4 libmp3lame0

Вы можете кодировать входные видео с помощью следующих команд:

mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 first.avi -o video1.avi
mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 second.avi -o video2.avi

Чтобы соответствовать вашим видео, вы можете изменить параметры «битрейт» и т. Д. (А также кодеки).

Если имена закодированных видео - «video1.avi» и «video2.avi», а имя выходного видео - «join-video.avi»,

mencoder -ovc copy -oac mp3lame video1.avi video2.avi -o joined-video.avi 

С помощью этой команды вы можете создать объединенный видеофайл.


2
Просто подумал, что подкреплю это название mencoderутилиты (т.е. Media ENcoder). Многие люди застряли, случайно набрав memcoder.
Val

размеры рамы тоже не должны совпадать?
Старейшина Гик

4

Мне пришлось объединить три фрагмента видео с одинаковыми кодеками. Прочитав предыдущие ответы, мне удалось сделать это:

mencoder -ovc copy -oac faac 01.mp4 02.mp4 03.mp4 -o output.mp4

Гораздо быстрее и проще, чем Openshot!

Сначала я попробовал опцию «-oac copy», но кажется, что аудиокодек в моих видео этого не позволяет. Я получил сообщение об ошибке с рекомендацией -oac pcm. Кодек PCM не очень хороший вариант: результирующий файл очень большой, и 2/3 его несжатого аудио.

Надеюсь это поможет


2
MEncoder svn r34540 (Ubuntu), собранный с gcc-4.7 (C) 2000-2012 MPlayer Team MPlayer был скомпилирован без libfaac. Смотрите README или DOCS.
Филипп Гачу

1

Решение, которое я нашел здесь, помогло мне без потерь объединить два файла mp4:

sudo apt-get install gpac
MP4Box -cat part1.mp4 -cat part2.mp4 -new joinedfile.mp4

Я пытался использовать Avidemux, но у меня были проблемы со звуком в объединенном видео.


1

Ваши файлы не будут правильно соединяться, потому что что-то не совпадает.

Как и у многих других, у меня были проблемы с синхронизацией звука в объединенных видео. и хотя MP4Box работает нормально, если клипы имеют идентичные спецификации, в некоторых случаях я был бы поражен «Не найден подходящий трек назначения - создается новый», и в этом случае Totem (он же видео) не воспроизводил этот сегмент в объединенном файле После некоторых проб и ошибок и дальнейших исследований я разработал следующий метод работы с видео, который до сих пор работал с приемлемым (для меня) качеством.

Если размеры кадра не совпадают (объединяются ошибки, относящиеся к видеодорожкам):

Нормализовать видео без прерывания звука (-c: копия), установив ограничения (делимые на 8 для максимальной совместимости с кодеками) для несопоставленных сегментов

Примеры команд

width=856

height=480

avconv -i input.mp4 -filter:v "scale=iw*min($width/iw\,$height/ih):ih*min($width/iw\,$height/ih), pad=$width:$height:($width-iw*min($width/iw\,$height/ih))/2:($height-ih*min($width/iw\,$height/ih))/2" -c:a copy output.mp4

Если аудио не совпадает (объединяются ошибки, относящиеся к звуковым дорожкам):

Нормализовать звук

Обрабатывайте звук без прерывания видео (копирование c: v), чтобы все клипы соответствовали требуемому кодеку, частоте и скорости передачи битов с помощью c: кодек -ar, например, -ar 48000, и скорости передачи битов с b: 128k для стерео (64K на канал, кажется, хорошая цель) или что-то соответствует.

Пример: avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4(обратите внимание, что libmp3lame является кодеком для аудио в формате mp3) Вы можете получить список кодеров, поддерживаемых avconv, введя команду avconv -codecsили сузив, avconv -codecs|grep *codecname*например, конкретный кодavconv -codecs|grep mp3

Теперь, когда мы нормализовали файлы, мы можем присоединиться к ним. В этом примере я объединю файлы с MP4Box. Если у вас его нет, вы можете получить его, введя командуsudo apt-get install gpac

Объедините файлы с помощью команды MP4Box file1.mp4 -cat file2.mp4 -cat file3.mp4 -cat file4.mp4 -out joinedfile.mp4(обратите внимание, что перед первым файлом нет cat, каждому дополнительному файлу предшествует -cat, а целевому файлу предшествует -out)

При использовании MP4Box (рекомендуется для MP4) для присоединения вы можете обнаружить, что вам нужно обработать все клипы с помощью avconv независимо от того, соответствуют ли спецификации техническим характеристикам или нет, чтобы избежать ошибки «Не найдено подходящего целевого трека - создание нового (введите видео)»

Примечание. Я обнаружил, что Avidemux испытывает проблемы с видео, закодированными с использованием файлов H.264 / AVC (на тотем), из-за B-кадров в качестве справочного материала. Похоже, что это приводит к несинхронизированному звуку при объединении, даже если вы решили скопировать аудио и видео без использования remux. Сбои, если не выбран безопасный режим и не синхронизированы при использовании безопасного режима

Источники:

/superuser/547296/resizing-videos-with-ffmpeg-avconv-to-fit-into-static-sized-player

/programming/20703160/problems-with-setting-constant-bitrate-by-using-avconv

https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr

Примечание. Насколько мне известно, другие форматы (контейнеры) имеют аналогичные ограничения для сопоставления размера кадра и скорости звука, поэтому это может сработать и для avi, если вы попытаетесь объединиться через cat или mencoder после нормализации видео и аудио .

Необязательно: Используйте Handbrake, чтобы перекодировать объединенный файл для меньшего размера, если это необходимо, с переменной частотой кадров и постоянной настройкой качества 25 (рекомендуемые настройки - при необходимости измените их в соответствии с вашими ожиданиями по качеству материала)


1

Вы должны напечатать так:

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output.avi --save video.avi

Если вы хотите добавить больше файлов:

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output1.avi --append output2.avi --append output3.avi --save video.avi

1

Мне удалось использовать VLC Media Player для объединения / объединения нескольких видеофайлов. VLC можно загрузить из программного обеспечения Ubuntu или установить с терминала, нажав Ctrl+ Alt+ Tи введя:

sudo apt update
sudo apt install vlc

После установки VLC откройте терминал в папке с видеофайлами и введите:

vlc InFile1.mp4 InFile2.mp4 --sout "#gather:std{access=file,dst=OutFile.mp4}" --sout-keep

Это открывает графический интерфейс VLC, и вы можете закрыть его, когда файлы объединены / объединены. Вы можете найти больше информации здесь .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.