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

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

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

13
Також див. втрати якості "> superuser.com/questions/43588/… для отримання додаткової інформації. Не впевнений, що я б класифікував це питання як дублікат.
додано Автор Will, джерело
люб'язно додати вашу ОС як тег.
додано Автор tumchaaditya, джерело

6 Відповіді

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

Приклад:

MP4Box -tmp $HOME -add vid.01.m4v \
    -cat vid.02.m4v -cat vid.03.m4v vid-out.mp4
12
додано

Ви можете спробувати зробити це за допомогою 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
4
додано
Що робити, якщо це не h264, а mpeg4?
додано Автор Babu Sundar, джерело

Я б рекомендував usind ffmpeg , доступний для Mac OS X, Linux та = "http://ffmpeg.arrozcru.org/autobuilds/" rel = "nofollow noreferrer"> Windows .

Here's a good examaple on how to concatenate two movies: http://www.ffmpeg.org/faq.html#SEC27

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

4
додано
Оскільки я розумію, що дано відповідь на ffmpeg FAQ, це неможливо зробити за допомогою відео MP4 (імовірно H.264), оскільки це не один з "привілейованих форматів".
додано Автор Aaron, джерело
Не усі збірки FFMPEG мають підтримку MP4. З одного боку, це запатентована технологія і, можливо, незаконно розповсюджувати кодери MP4 у США без сплати збору. Проте багато збірок можуть це зробити.
додано Автор CarlF, джерело
@ttarchala: Я намагаюся, якщо це можна зробити. Я перетворив у MP4 з FFmpeg раніше, але ніколи не об'єднав два фільми. Також: хотілося б відзначити, що FFmpeg має дуже швидкий розвиток. Те, що не працювало з однією версією, може працювати лише в наступному.
додано Автор Shurvir Mori, джерело
@CarlF: Що стосується Linux і Mac OS X, це не проблема. Код може бути вільно розповсюджений, тому в основному, хто б будував власний FFmpeg, все добре. Що стосується патентування, я хотів би поділитися коментарем: я не знайду сайт від руки прямо зараз, але перший патент, який закінчиться для AAC (який частково визначено в MPEG-4), знаходиться в 2022 році. тільки перший, ще багато чого потрібно закінчити, поки не буде повністю законним ...
додано Автор Shurvir Mori, джерело

Ось команда:

ffmpeg -i concat:"video1.ts|video2.ts"
1
додано
Чи потрібно уникати цього символу труби? Чи я цілком неправильно розумію цю команду?
додано Автор Gaia, джерело
його потрібно було втекти. ой.
додано Автор rogerdpack, джерело

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

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

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

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

Ви можете використовувати його в поєднанні з VirtualDub. Virtualdub для об'єднання відеопотоків, і мультиплікатора, щоб зробити його 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
додано