Jak mogę połączyć dwa pliki MP4 bez utraty jakości?

51

Mam dwa wysokiej jakości pliki mp4, które składają się z dwóch części tego samego programu.

Chcę scalić je razem w jeden plik i zwykle używam VirtualDub do scalania moich plików ... Ale wydaje się, że nie obsługuje mp4.

Jakie są dostępne alternatywy (zwłaszcza te, które nie wymagają ponownego kodowania)?

Paolo Bergantino
źródło
Zobacz także stackoverflow.com/questions/7333232/…
rogerdpack

Odpowiedzi:

41

Zwykle używam VirtualDub do scalania moich plików, ale wydaje się, że nie obsługuje MP4. Jakie są alternatywy?

Avidemux . To jest jak VirtualDub, tylko z więcej obsługiwanych formatów i wbudowanymi kodekami i filtrami. Zawsze korzystam z tego preferencyjnie; łączy pliki AVC + AAC.MP4 (bez przekodowywania) dla mnie w porządku.

Aby dołączyć do nich w AviDemux:

  1. Plik -> Otwórz -> Wybierz plik
  2. Plik -> Dołącz -> Wybierz plik
  3. Ustaw wszystko na Kopiuj
  4. Plik -> Zapisz -> Nazwa pliku
  5. Czekać..

Według forów AViDemux ten proces łączenia jest bezstratny ( http://www.avidemux.org/smf/index.php?topic=9467.0 )

Bobin
źródło
tak, wydaje się doskonale nadawać do utrzymywania synchronizacji audio z wideo, podczas gdy inne osoby, które odpowiedzą na to pytanie, są wątpliwe w tym IMHO.
djangofan,
1
Próbowałem użyć Avidemux do połączenia dwóch plików, ale dźwięk nie był zsynchronizowany.
GiddyUpHorsey
Problemy z synchronizacją mogą wystąpić, gdy ilość dostępnego materiału audio nie odpowiada długości ramek wideo lub występuje uszkodzenie strumienia. Możesz to naprawić za pomocą funkcji „stream fix” VideoRedo lub ProjectX.
Bobin
1
Ale ta metoda zadziałała: superuser.com/a/255566/1780 Brawo!
Christopher Galpin
4
Jeśli używasz AviDemux do połączenia dwóch plików Mp4, nie zapomnij wybrać opcji Mp4 Demux w lewym dolnym rogu. W przeciwnym razie może spróbować przekonwertować go na avi!
28

Możesz to zrobić za pomocą 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

To niczego nie koduje ponownie, umieszcza je w nowym kontenerze strumienia transportowego, co ułatwia ich konkatenację, a następnie konkatenuje je z powrotem do MP4. Jeśli output.mp4 już istnieje, polecenie zakończy się niepowodzeniem. Powyższa wersja używa nazwanych potoków, jeśli korzystasz z systemu, który nie obsługuje tych plików, musisz użyć plików pośrednich (takich jak 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
zła
źródło
czy ktoś może wyjaśnić, jak to się robi avconvzamiast ffmpeg? Udało mi się ukończyć pierwsze dwa kroki, ale ostatni nie rozpoznaje opcji-absf
bo
@becko Zobacz moją edycję. Teraz powinieneś użyć specyfikatora strumienia (patrz tutaj libav.org/avconv.html#Advanced-options ).
slhck
2
+1 tylko na przyszłość, można podstawić avconvza ffmpegw powyższych poleceń i będzie działać.
becko
15

Demultiplekser Concat

Demuxer konkat został dodany do ffmpeg 1.1. Jeśli twoja wersja ffmpeg jest stara, pobierz najnowszy statyczny plik binarny tutaj: http://www.ffmpeg.org/download.html

Instrukcje

Utwórz plik mylist.txtze wszystkimi plikami, które chcesz połączyć w następującej formie (linie zaczynające się od myślnika są ignorowane):

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

Pamiętaj, że mogą to być ścieżki względne lub bezwzględne. Następnie możesz zakodować swoje pliki za pomocą:

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

Możliwe jest wygenerowanie tego pliku listy za pomocą bash dla pętli lub za pomocą printf. Jedna z poniższych opcji wygeneruje plik listy zawierający każdy * .wav w katalogu roboczym:

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

Źródło: ffmpeg wiki

erik
źródło
8

YAMB wraz z MP4BOX to dobra opcja.
Pobierz oba i rozpakuj je (nie wymaga instalacji, a razem mają około 5 MB), w YAMB wybierz Ustawienia i ustaw ścieżkę folderu MP4box.
Aby dołączyć do plików MP4 wybierz Edycja> Kliknij, aby dołączyć obsługiwane ...

Eran
źródło
1
Wydaje się, że to najlepsze rozwiązanie, zachowując format kontenera .mp4, który wydawałby się autorowi bardziej atrakcyjną opcją ^^
Oskar Duveborn 19.09.2009
1
Po trudnościach użyłem tej konfiguracji: MP4Box_path = E: \ Software \ Video Editing \ Yamb-2.1.0.0_beta2 \ MP4Box \ MP4Box.exe w celu scalenia 4 500 MB plików MP4 wygenerowanych z AVIDemux. Nie działało. Program po prostu siedział przez 45 minut, nic nie robiąc, aż w końcu się poddałem.
djangofan
1
miałem problem z użyciem tej metody z powodu problemów z synchronizacją dźwięku. to był koszmar ... nie próbowałem tego ponownie.
djangofan,
6

SUPER © (Uproszczony uniwersalny koder i renderer) zapewnia następujący dodatkowy proces wyjściowy:

Każdy obsługiwany wejściowy plik multimedialny może być przetwarzany:

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

oczywiście MP4 jest obsługiwanym formatem.

SUPER © jest darmowy.


źródło
5
Interfejs użytkownika jest najstraszniejszy, jaki widziałem w życiu. Nie żartuję, to po prostu okropne. Podkreślam to jeszcze raz: nie mogę wymienić gorszego interfejsu, mówię poważnie, nigdy nie widziałem niczego poniżej „progu SUPER”.
Camilo Martin
5

Spróbuj użyć kontenera wideo Matroska.

Po pierwsze potrzebujesz mkvtoolnix . Pobrać i zainstalować go, a następnie trzeba odpalić mkvmerge GUI (chyba że lubisz narzędzi wiersza polecenia, które jest w porządku przez mnie - choć może chcesz wyglądać w pliku odcinek łączący z dokumentacją mkvmerge ).

Dodaj swój pierwszy plik, klikając „dodaj”. Następnie kliknij „dołącz” i otwórz drugi plik. Ustaw plik wyjściowy, kliknij „Rozpocznij multipleksowanie” na dole i gotowe!

Jeśli kontener nie jest odpowiedni do twoich potrzeb, możesz go ponownie zakodować lub spróbować przekonwertować na inny format ... Chociaż MKV jest bardzo ładnym kontenerem!

Przełom
źródło
to musi być zmiksowane? nie mogę się połączyć bez muxowania?
djangofan
Cóż, jeśli używasz kontenera MKV, technicznie ty remuxing go. Spróbuj, nie ma kary w czasie rzeczywistym ...
Przełom
1

Jeśli możesz odtwarzać je w systemie / mieć zainstalowany kodek, Windows Movie Maker może być najszybszym (i darmowym) sposobem na połączenie tych dwóch plików. Następnie możesz użyć Virtualdub, aby przekonwertować na inny format.

William Hilsum
źródło
Audacity wydaje się być dla plików audio. To jest plik wideo.
Paolo Bergantino,
Więc przepraszam, źle przeczytałem, po prostu zobaczyłem część MP i mój mózg choć śmiałością.
William Hilsum,
Edytujesz odpowiedź ...
William Hilsum,
AFAIK, Movie Maker nie obsługuje mp4, a konwersja na inny format oznacza utratę jakości, którą pytanie określa jako niepożądane.
Eran
Próbowałem MovieMakera na Windows7 i dźwięk nie synchronizuje się podczas łączenia plików MP4 w WMV. Ta opcja nie działa.
djangofan
1

Innym rozwiązaniem jest Open Video Joiner . Ma również efekty przejścia.

wprowadź opis zdjęcia tutaj

harrymc
źródło
Jest to jednak shareware. a za 30 $ łączenie plików wideo nie jest tanie
Eran
Mówi się, że jest darmowy. Przepraszam, jeśli mnie wprowadzono w błąd.
harrymc