Dołączanie do H264 * bez * ponownego kodowania

39

Mam dwie połowy jednego przedstawienia w dwóch plikach .MP4, zakodowanych w H264. Chciałbym dołączyć do nich bez ponownego kodowania.

czy to możliwe?

Udało mi się utworzyć połączone wideo jako plik Quicktime (.mov) za pomocą Quicktime Pro, ale wtedy Quicktime Pro nie przekonwertuje go z powrotem na format .MP4 bez ponownego kodowania. Może to być spowodowane tym, że po przejrzeniu pliku .mov dwa filmy wideo H264 są tam nadal oddzielone jako pojedyncze „obiekty”.

Walczę też z MPEG StreamClip, nie osiągając prawdziwego rozwiązania. Ale mogłem coś przeoczyć.

Pamiętaj, że nie mam tego samego problemu z plikami MPEG2. Mogę na przykład wyeksportować je do kontenera .MPEG lub pliku .TS, a następnie dołączyć je bez ponownego kodowania przy użyciu MPEG Streamclip.

Wszelkie sugestie mile widziane, najlepiej przy użyciu oprogramowania Mac.

jdmuys
źródło
1
Oczywiście filmy muszą mieć te same aspekty, aby połączyć je bez ponownego kodowania (taki sam rozmiar, szybkość transmisji itp.). Powinieneś być w stanie to zrobić w VirtualDubMOD: otwórz MP4, a następnie Dołącz segment .
Synetech,

Odpowiedzi:

41
ffmpeg -i q.mp4 -c copy -bsf h264_mp4toannexb q.ts

ffmpeg -i r.mp4 -c copy -bsf h264_mp4toannexb r.ts

ffmpeg -i "concat:q.ts|r.ts" -c copy -bsf aac_adtstoasc qr.mp4

Jak połączyć plik FLV w jeden

Steven Penny
źródło
Co jeśli jest to m4v (nie h264 mp4), jakiego bsf należy użyć?
Edison,
2
Skończyłem -bsf aac_adtstoascpolecenia concat
Csaba Toth
Musiałem pominąć wszystkie -bsfargumenty, a potem zadziałało to dla mnie.
KittMedia,
Robiąc to na MacOS 10.13.3, pominąłem wszystkie -bsf xxxrzeczy z dobrymi wynikami. Jednak za drugim razem, gdy próbowałem, druga połowa połączonego filmu była zepsuta. Okazuje się, że z nieznanych przyczyn hamulec ręczny zakodował dwie połówki o różnych szerokościach (640 vs. 636). W obu przypadkach użyłem tego samego ustawienia wstępnego. W każdym razie wróciłem i ponownie użyłem hamulca ręcznego w pierwszej połowie, która teraz pasuje do drugiej połowy. Ponownie połączony film był w porządku. Wskazówka: exiftool wyświetli wszystko o pliku mp4 / m4v.
Jamie Cox,
15

MP4Box zrobi to za Ciebie:

MP4Box -cat File01.m4v -cat File02.m4v File-joined.m4v

MP4Box jest wieloplatformowy i działa na OSX, jednak wypróbowałem to na Ubuntu Linux z filmami H264 stworzonymi przez Handbrake dla iPhone 4S.

Działa to dość szybko, ponieważ pliki nie są ponownie kodowane.

thinkOfaNumber
źródło
1
Działa świetnie. Użyj, sudo apt-get install gpacaby go zainstalować. Możesz użyć tego wiersza poleceń, jeśli chcesz dołączyć wiele plików:MP4Box $(for file in single*m4v; do echo -cat $file; done) joined.m4v
guettli,
2

Wybór kodeka Quicktime MP4 ma tryb „pass-through”.

Oto pełny szczegółowy przepis na dołączenie dwóch filmów MP4 H264 za pomocą Quicktime. Pamiętaj, że Quicktime X nie jest jeszcze wystarczająco zaawansowany, więc użyj Quicktime 7 (opcjonalna instalacja w systemie Snow Leopard):

  1. Otwórz dwa filmy H264 w Quicktime 7. Załóżmy, że są one nazwane video1.mp4 i video2.mp4.
  2. Pracując na video1.mp4, wybierz Wszystkie, a następnie Kopiuj.
  3. Przełącz na video2.mp4, upewnij się, że „kursor” znajduje się na początku filmu, a następnie Wklej. Spowoduje to wstawienie zawartości video1.mp4 z przodu video2.mp4.
  4. Ten krok jest prawdopodobnie opcjonalny . „Zapisz jako” zmodyfikowane wideo2.mp4. Będzie można zapisywać tylko w formacie .mov. Zapisałem jako samodzielny film, ale przypuszczam, że film referencyjny też by działał. Użyłem nazwy pliku „video.mov”.
  5. Wybierz „Eksportuj” z menu pliku, aby wyeksportować video.mov do połączonego pliku H264. „Eksportuj” do wyboru to „Film do MPEG-4”. Ustawienie wstępne nie jest ważne, wybrałem „LAN / Intranet”. Ustawienie wstępne nie jest ważne, ponieważ zastępujemy je w następnym kroku.
  6. Kliknij „Opcje”, aby przejść do okna dialogowego ustawień. W panelu Wideo wybrano „Format wideo” jako „H.264”. Kliknij menu, wybierz „Przekaż”. Zgodnie z oczekiwaniami wszystkie pozostałe opcje zostaną wyłączone.
  7. Kliknij OK, a następnie Zapisz i obserwuj, czy połączony plik jest zapisywany z prędkością dysku twardego.

Możesz także użyć SimpleMovieX , edytora wideo shareware, który dokładnie reklamuje to jako funkcję.

jdmuys
źródło
1
Zakładam, że zapisywanie w mov będzie wymagało niestety jakiejś formy ponownego kodowania.
Csaba Toth
0

Myślę, że powinno to być możliwe, chociaż dwie części mogą wymagać „tych samych” określonych sposobów (rozdzielczości itp.), Aby połączenie mogło działać. Wygląda na to, że tak będzie prawdopodobnie w twojej sytuacji.

Możesz wypróbować to narzędzie: http://www.smlabs.net/tsmuxer_en.html ... Nie korzystałem z niego, ale zawiera on listę dołączanych plików jako część zestawu funkcji, a H.264 jest jednym z obsługiwanych kodowań.

Zac Thompson
źródło
Dzięki za link. Nie mogłem tego wypróbować, ponieważ strona twierdzi, że ten program nie obsługuje Snow Leopard. Co więcej, właśnie znalazłem działające rozwiązanie, używając tylko Quicktime (patrz moja odpowiedź). Ponadto, chociaż nie wiem w tym przypadku, niektóre narzędzia reklamują dołączanie do pliku wideo, ale robią to z pełnym ponownym kodowaniem, co w najlepszym przypadku jest mylące.
jdmuys
Przepraszam; Źle odczytałem ten fragment na stronie. Cieszę się, że znalazłeś prostsze podejście - wydawało się dziwne, że konieczne byłoby uzyskanie do tego specjalnego narzędzia.
Zac Thompson,
0

Użyj mkvtoolnix . Następnie otwórz „mkvtoolnix-gui.exe” (w Windows 8.1 64bits znajduje się w: C: \ Program Files \ MKVToolNix \ mkvtoolnix-gui.exe). Dodaj pierwszy plik. Następnie wybierz ten pierwszy plik i kliknij prawym przyciskiem myszy „dołącz pliki” i wybierz pliki, które chcesz scalić. Może zmienić folder docelowy i nazwę pliku. Następnie kliknij „Rozpocznij multipleksowanie”.

Erb
źródło