Як я можу об'єднати два файли mp4 без втрати якості?


51

У мене є два високоякісні mp4 файли, які складаються з двох частин одного шоу.

Я хочу об'єднати їх разом в 1 файл, і я зазвичай використовую VirtualDub для об'єднання моїх файлів ... Але він, схоже, не підтримує mp4.

Які альтернативи є (особливо такі, які не потребують повторного кодування)?


Відповіді:


41

Зазвичай я використовую VirtualDub для злиття своїх файлів, але він, схоже, не підтримує mp4. То які альтернативи існують?

Авідемукс . Це як VirtualDub, лише з підтримкою більшої кількості форматів та вбудованих кодеків та фільтрів. Я завжди використовую це в перевазі; він приєднується до файлів AVC + AAC.MP4 (без перекодування) для мене добре.

Щоб приєднатися до них у AviDemux:

  1. Файл -> Відкрити -> Вибрати файл
  2. Файл -> Додаток -> Виберіть файл
  3. Встановити все на Копіювати
  4. Файл -> Зберегти -> Ім'я файлу
  5. Зачекайте ..

Відповідно до форумів AViDemux, цей процес приєднання є без втрат ( http://www.avidemux.org/smf/index.php?topic=9467.0 )


так, це, здається, чудово справляється зі збереженням аудіосинхронізації з відео, тоді як відповіді інших людей на це питання сумнівні в цьому IMHO.
djangofan

1
Я намагався використовувати Avidemux, щоб з'єднати два файли разом, але звук не синхронізувався.
GiddyUpHorsey

Ви можете отримати проблеми із синхронізацією, коли кількість доступного аудіоматеріалу не відповідає довжині відеокадрів або є пошкоджений потік. Ви можете це виправити за допомогою функцій "виправлення потоку" VideoRedo або ProjectX.
bobince

1
Але цей метод спрацював: superuser.com/a/255566/1780 Ура!
Крістофер Гальпін

4
Якщо ви використовуєте AviDemux для приєднання двох файлів Mp4, не забудьте вибрати параметр Mp4 Demux у лівому нижньому куті. В іншому випадку він може спробувати перетворити його на avi!

28

Це можна зробити за допомогою ffmpeg:

mkfifo temp0 temp1
ffmpeg -i input0.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y temp1 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp0|temp1" -c copy -absf aac_adtstoasc output.mp4

Це нічого не перекодує, він розміщує їх у новому контейнері транспортного потоку, що полегшує їх об'єднання, а потім об'єднує їх у MP4. Якщо output.mp4 вже існує, команда не вдасться. У наведеній вище версії використовуються названі труби, якщо ви використовуєте систему, яка не підтримує ті, з якими вам доведеться використовувати проміжні файли (наприклад, Windows):

ffmpeg -i input0.mp4 -c copy -bsf:v h264_mp4toannexb temp0.ts
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb temp1.ts
ffmpeg -i "concat:temp0.ts|temp1.ts" -c copy -bsf:a aac_adtstoasc output.mp4

хтось може пояснити, як це робиться avconvзамість ffmpeg? Мені вдалося виконати перші два кроки, але останній не визнає варіант-absf
бекко

@becko Дивіться мою редакцію. Тепер слід використовувати специфікатор потоку (див. Тут libav.org/avconv.html#Advanced-options ).
slhck

2
+1 просто на майбутнє, ви можете замінити avconvна ffmpegв зазначених вище команд , і він буде працювати.
бекко

15

Конкомат деміксер

Конкретний демуксер був доданий до ffmpeg 1.1. Якщо ваша версія файлу ffmpeg застаріла, отримайте найновіший статичний двійковий код звідси: http://www.ffmpeg.org/download.html

Інструкції

Створіть файл mylist.txtіз усіма файлами, які ви хочете об'єднати, у такій формі (Рядки, що починаються з тире, ігноруються):

# this is a comment
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'

Зауважте, що це можуть бути як відносні, так і абсолютні шляхи. Тоді ви можете кодувати свої файли за допомогою:

ffmpeg -f concat -i mylist.txt -c copy output

Можна генерувати цей список списку за допомогою bash для циклу або за допомогою printf. Будь-який із наступних може створити файл списку, що містить кожен * .wav у робочому каталозі:

for f in ./*.wav; do echo "file '$f'" >> mylist.txt; done
printf "file '%s'\n" ./*.wav > mylist.txt

Джерело: ffmpeg wiki


8

YAMB разом з MP4BOX - хороший варіант.
Завантажте і розпакуйте їх (не потрібна установка, і разом вони близько 5 Мб), у YAMB виберіть Налаштування та встановіть шлях папки MP4box.
Для приєднання файлів mp4 виберіть Редагування> Клацніть, щоб приєднатися до підтримуваного ...


1
Здається, найкраще рішення, зберігаючи формат контейнера .mp4, який видасться авторові більш привабливим варіантом ^^
Оскар Дювеборн,

1
Після труднощів я використав цю конфігурацію: MP4Box_path = E: \ Software \ Video Editing \ Yamb-2.1.0.0_beta2 \ MP4Box \ MP4Box.exe, щоб спробувати об'єднати 4 файли MP4 500MB, генеровані з AVIDemux. Це не спрацювало. Програма просто сиділа там 45 хвилин, нічого не роблячи, поки я нарешті не здався.
djangofan

1
У мене виникли проблеми з використанням цього методу через проблеми з синхронізацією аудіо. це був кошмар ... не намагаючись знову.
djangofan

6

SUPER © (Спрощений універсальний кодер програвача та рендер) забезпечує наступний додатковий процес виводу:

Будь-який підтримуваний вхідний мультимедійний файл може бути оброблений:

      o Join Format-Identical Files.
      o Mux Video & Audio Streams.
      o DeMux Extract Streams. 

звичайно, MP4 - це підтримуваний формат.

SUPER © - безкоштовна програма.


5
Його інтерфейс користувача - це найстрашніше, що я бачив у своєму житті. Я не жартую, це просто жахливо. Я ще раз наголошую на цьому: я не можу назвати гірший інтерфейс, я серйозно ставлюсь до цього, я ніколи не бачив нічого нижче "порогу SUPER".
Каміло Мартін

5

Спробуйте використовувати контейнер для відео Matroska.

По-перше, вам потрібен mkvtoolnix . Завантажити та встановити його, то вам необхідно запустити GUI mkvmerge (якщо вам подобається інструменти командного рядка, яка мене влаштовує - хоча ви можете захотіти поглянути на файл секцію , що зв'язує в документації mkvmerge ).

Додайте перший файл, натиснувши "додати". Потім натисніть кнопку "додати" і відкрийте другий файл. Встановіть вихідний файл, натисніть кнопку "Почати муксинг" внизу, і ви йдете!

Якщо контейнер не підходить для ваших потреб, ви можете перекодувати його або спробувати перетворити його в якийсь інший формат ... Хоча MKV - це дуже милий контейнер!


це має бути змішаним? я не можу приєднатися без придушення?
djangofan

Що ж, якщо ви використовуєте контейнер MKV, технічно ви його повторно відтворюєте. Спробуйте, немає реального часу покарання ...
Прорив

1

Якщо ви можете відтворити їх у вашій системі / встановити кодек, Windows Movie Maker може зробити найшвидший (і безкоштовний) спосіб приєднати два файли. Потім ви можете використовувати Virtualdub для перетворення в інший формат.


Здається, зухвалість для аудіофайлів. Це відеофайл.
Паоло Бергантіно,

Так вибачте, я неправильно прочитав, щойно побачив частину депутата та мій мозок, хоч і зухвалий.
Вільям Гілсум


AFAIK, Movie Maker не підтримує mp4, а перетворення в інший формат означає втрату якості, яке питання визначає як небажане.
Еран

Я спробував MovieMaker на Windows7, і звук не синхронізується під час приєднання MP4-файлів до WMV. Цей варіант не буде працювати.
djangofan

1

Ще одне рішення - Open Video Joiner . Це також робить перехідні ефекти.

введіть тут опис зображення


Це, однак, безкоштовне програмне забезпечення. і за 30 $ це не дешево просто злити відеофайли
Еран,

Казали, що це безкоштовно. Вибачте, якщо мене ввели в оману.
harrymc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.