Як я можу об'єднати або об'єднати два або більше файлів MP4, створюючи інший файл MP4? [дублікат]


14

Як я можу об'єднати або об'єднати 2 або більше файлів MP4 у кінцевий вихідний MP4-файл?

Я спробував у вікні DOS використовувати команду COPY (я її десь прочитав), але вона не працює добре.


Також див. Superuser.com/questions/43588/… для отримання додаткової інформації. Не впевнений, чи не класифікую це питання як дублікат.
Прорив

1
люб'язно додайте вашу ОС як тег.
tumchaaditya

Відповіді:


12

MP4Box може це зробити, хоча ви можете використовувати GUI для нього, як YAMB або My MP4Box GUI . (NB: Це не моя програма особисто, це лише назва.) Бінарні файли MP4Box для Windows доступні на цьому веб-сайті .

Приклад:

MP4Box -tmp $HOME -add vid.01.m4v \
    -cat vid.02.m4v -cat vid.03.m4v vid-out.mp4

4

Я рекомендую usind ffmpeg , який доступний для Mac OS X, Linux та Windows .

Ось хороший приклад того, як об'єднати два фільми: http://www.ffmpeg.org/faq.html#SEC27

На останньому кроці потрібно просто переконатися, що ви зробили контейнер MP4, для отриманого файлу.


Як я розумію, відповідь на FAQ ffmpeg, цього неможливо зробити з MP4 (імовірно, H.264) відео, оскільки це не один із "привілейованих форматів".
ttarchala

@ttarchala: Я б спробував, чи можна це зробити. Я раніше перетворював у MP4 з FFmpeg, але ніколи не поєднував два фільми. Також: Я хотів би зазначити, що FFmpeg дуже швидко розвивається. Те, що не працювало з однією версією, може працювати лише в наступній.
полемон

1
Не всі версії FFMPEG мають підтримку MP4. З одного боку, це запатентована технологія, і, мабуть, незаконне розповсюдження кодерів MP4 у США без сплати гонорару. Однак багато будівель можуть це зробити.
CarlF

@CarlF: Що стосується Linux та Mac OS X, це насправді не проблема. Код може розповсюджуватися вільно, тому в основному, хто будує свій власний FFmpeg, все добре. Що стосується патентування, я хочу поділитися коментарем: я зараз не знайду веб-сайт, але перший патент, який закінчився термін дії AAC (який частково визначений у MPEG-4), є у 2022 році. І це тільки перший, є ще багато, що потрібно закінчити, поки воно не стане повністю законним ...
Полемон

4

Ви можете спробувати це зробити за допомогою ffmpeg:

mkfifo temp0 temp1
ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \
ffmpeg -i input1.mp4 -c copy -bsf 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 вже існує, команда не вдасться. У наведеній вище версії використовуються іменовані канали, ви працюєте в системі, яка не підтримує тих, з якими вам доведеться використовувати проміжні файли:

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

що робити, якщо це не h264, а mpeg4?
Едісон

2

Оновлення: Просто перевірив avidemux, як я його встановив, прочитавши цю іншу відповідь. Це те, що ви шукаєте (не думав, що він може робити MP4 через свою назву…).

Я думаю, що VirtualDubMod здатний на mp4, я не користувався ним, хоча не знаю точно.

Ви можете перевірити MeGUI . Це досить складне та багатофункціональне додаток та інструменти.

Інструмент для вбудовування в контейнер (mp4 у вашому випадку) називається muxer, який, мабуть, не може їх об'єднати.

Ви можете використовувати його в поєднанні з VirtualDub. Virtualdub для об'єднання відеопотоків та muxer, щоб зробити його mp4 знову (без необхідності повторного кодування).


1

Я роблю це з mencoder, після того як перетворив їх у avi з ffmpeg

ось простий скрипт, якщо припустити, що у вас є 15 файлів, названих 01.mp4 ... 15.mp4

#!/bin/bash
for j in `seq -w 1 15`;
do
    echo converting file $j.avi
    ffmpeg -i $j.mp4 $j.avi        

    echo adding file $j.avi to list
    z="$z $j.avi"
done 

echo doing append
mencoder -oac copy -ovc copy $z -o all.avi

ура


1

Ось команда:

ffmpeg -i concat:"video1.ts|video2.ts"

Чи потрібно уникати цього характеру труби? Або я повністю неправильно читаю цю команду?
вбивця

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