Jak dołączyć pliki wideo z terminala?


9

Próbowałem avidemux2_cli, mencoder, ffmpeg, cat .. Ale to nie zawsze działa (w większości przypadków błąd polega na tym, że kodek audio nie jest taki sam). Może wstawiłem złe opcje w poleceniach.

Więc polecenia:

cat Sample.avi rrr.avi > complete.avi
ffmpeg -i Sample.avi -i output.avi -vcodec copy -acodec copy complete.avi
mencoder -ovc lavc -oac copy Sample.avi rrr.avi -o complete.avi
avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi -append output.avi --save video.avi

Problem z kotem polega na tym, że nie wyświetla błędu, ale nie zawsze działa .. Podobnie jak w pliku complete.avi będzie dokładnie tak samo jak w przypadku Sample.avi

Fmmpeg nic nie robi. Kompletny.avi jest zawsze taki sam z Sample.avi

Błąd Mencodera: wszystkie pliki muszą mieć identyczny kodek audio i format dla kopii -oac. Tak więc plik complete.avi jest taki sam jak w przypadku Sample.avi

avidemux2_cli nie ma błędu, ale plik complete.avi jest ponownie taki sam jak w przypadku Sample.avi ..

Podsumowując, wszystkie complete.avi są takie same z Sample.avi .. Problem polega na tym, że nie mają tego samego kodeka audio (chyba). Jakieś pomysły?


1
Myślę, że musisz zmienić kodek wideo i kodek audio plików wejściowych na te same kodeki, jeśli chcesz bezpiecznie połączyć dwa filmy,
vine_user

Jak mogę to zrobić?
Leon Vitanos,

Możesz użyć mencoderz opcją -ovc i opcją -oac. Zobacz: mplayerhq.hu/DOCS/HTML/en/menc-feat-selecting-codec.html
vine_user

Odpowiedzi:


10

Jeśli chcesz bezpiecznie połączyć dwa filmy, musisz zmienić kodek wideo i kodek audio plików wejściowych na te same kodeki.

Na przykład za pomocą xvid (kodek wideo) i mp3lame (kodek audio):

sudo apt-get install mencoder libxvidcore4 libmp3lame0

możesz kodować wejściowe filmy wideo za pomocą poniższych poleceń:

mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 first.avi -o video1.avi
mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 second.avi -o video2.avi

Aby dopasować swoje filmy, możesz zmienić opcje „bitrate” itp. (A także kodeki).

Jeśli zakodowane nazwy wideo to „video1.avi” i „video2.avi”, a wyjściowa nazwa wideo to „join-video.avi”,

mencoder -ovc copy -oac mp3lame video1.avi video2.avi -o joined-video.avi 

Za pomocą tego polecenia możesz utworzyć połączony plik wideo.


2
Pomyślałem, że mencoderwzmocnię, że nazwa tego narzędzia to (np. Media ENcoder). Wiele osób utknęło przez przypadkowe wpisanie memcoder.
Val

czy rozmiary ram również nie muszą się zgadzać?
Elder Geek

4

Musiałem połączyć trzy fragmenty wideo z identycznymi kodekami. Czytając poprzednie odpowiedzi udało mi się to zrobić:

mencoder -ovc copy -oac faac 01.mp4 02.mp4 03.mp4 -o output.mp4

O wiele szybszy i prostszy niż Openshot!

Najpierw wypróbowałem opcję „-oac copy”, ale wydaje się, że kodek audio w moich filmach na to nie pozwala. Otrzymałem komunikat o błędzie zalecający „-oac pcm”. Kodek pcm nie jest jednak dobrą opcją: plik wynikowy jest bardzo duży, a 2/3 to nieskompresowany dźwięk.

Mam nadzieję że to pomoże


2
MEncoder svn r34540 (Ubuntu), zbudowany na gcc-4.7 (C) 2000-2012 MPlayer Team MPlayer został skompilowany bez libfaac. Zobacz README lub DOCS.
Philippe Gachoud

1

Rozwiązanie, które tu znalazłem , pomogło mi dołączyć bez utraty dwa pliki mp4:

sudo apt-get install gpac
MP4Box -cat part1.mp4 -cat part2.mp4 -new joinedfile.mp4

Próbowałem użyć Avidemux, ale miałem problemy z dźwiękiem w scalonym wideo.


1

Twoje pliki nie zostaną poprawnie połączone, ponieważ coś się nie zgadza.

Podobnie jak wiele innych, miałem problemy z prawidłową synchronizacją dźwięku w scalonych filmach. i chociaż MP4Box działa dobrze, jeśli klipy mają identyczne specyfikacje, w niektórych przypadkach zostałbym uderzony przez „Nie znaleziono odpowiedniej ścieżki docelowej - tworzenie nowej”, w którym to przypadku Totem (aka Wideo) nie odtwarzałby tego segmentu w połączonym pliku Po kilku próbach i błędach oraz dalszych badaniach opracowałem następującą metodę radzenia sobie z dołączaniem filmów, która do tej pory działała za każdym razem z akceptowalną (dla mnie) jakością.

Jeśli rozmiary ramek nie pasują (błędy łączenia dotyczące ścieżek wideo):

Normalizuj wideo bez zakłócania dźwięku (-c: kopia), ustawiając ograniczenia (podzielne przez 8 dla maksymalnej kompatybilności kodeka) dla niedopasowanych segmentów

Przykładowe polecenia

width=856

height=480

avconv -i input.mp4 -filter:v "scale=iw*min($width/iw\,$height/ih):ih*min($width/iw\,$height/ih), pad=$width:$height:($width-iw*min($width/iw\,$height/ih))/2:($height-ih*min($width/iw\,$height/ih))/2" -c:a copy output.mp4

Jeśli dźwięk nie pasuje (błędy łączenia dotyczące ścieżek audio):

Normalizuj dźwięk

Przetwarzaj dźwięk bez zakłócania wideo (kopiowanie c: v), tak aby wszystkie klipy pasowały do ​​żądanego kodeka, częstotliwości i przepływności za pomocą c: kodeka - częstotliwość podobna do -ar 48000 oraz i przepływność z b: 128k dla stereo (64K na kanał wydaje się dobrym celem) lub cokolwiek innego.

Przykład: avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4(zauważ, że libmp3lame jest kodekiem dla audio MP3) Możesz uzyskać listę obsługiwanych koderów avconv, wydając polecenie avconv -codecslub zawęzić listę do określonego, avconv -codecs|grep *codecname*na przykład zakodowanegoavconv -codecs|grep mp3

Teraz, gdy znormalizowaliśmy pliki, możemy do nich dołączyć. W tym przykładzie dołączę pliki za pomocą MP4Box. Jeśli go nie masz, możesz go uzyskać, wydając poleceniesudo apt-get install gpac

Połącz pliki za pomocą polecenia MP4Box file1.mp4 -cat file2.mp4 -cat file3.mp4 -cat file4.mp4 -out joinedfile.mp4(zwróć uwagę, że przed pierwszym plikiem nie ma kota, a każdy dodatkowy plik jest poprzedzony -cat, a plik docelowy poprzedza -out)

Jeśli do łączenia używasz MP4Box (zalecane dla MP4), możesz uznać, że musisz przetworzyć wszystkie klipy za pomocą avconv, czy specyfikacje wydają się pasować, czy nie, aby uniknąć błędu „Nie znaleziono odpowiedniej ścieżki docelowej - tworzenie nowej (type vide)”

Uwaga: Odkryłem, że Avidemux ma problemy z filmami zakodowanymi przy użyciu plików H.264 / AVC (na totem) z powodu ramek B jako odniesienia. Wydaje się, że powoduje to zsynchronizowanie dźwięku podczas dołączania, nawet jeśli zdecydujesz się skopiować zarówno audio, jak i wideo bez remuxu. Awarie, gdy nie wybrano trybu awaryjnego i brak synchronizacji w trybie awaryjnym

Źródła:

/superuser/547296/resizing-videos-with-ffmpeg-avconv-to-fit-into-static-sized-player

/programming/20703160/problems-with-setting-constant-bitrate-by-using-avconv

https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr

Uwaga: O ile wiem, inne formaty (kontenery) mają podobne ograniczenia dotyczące dopasowania rozmiaru klatki i szybkości dźwięku, więc może to działać również w przypadku avi, jeśli spróbujesz połączyć się za pomocą kota lub mencodera po normalizacji wideo i audio .

Opcjonalnie: Użyj hamulca ręcznego, aby w razie potrzeby ponownie zakodować połączony plik w celu uzyskania mniejszego rozmiaru, ze zmienną szybkością klatek i stałym ustawieniem jakości 25 (sugerowane ustawienia - dostosuj odpowiednio do swoich potrzeb materiałowych i jakościowych)


1

Powinieneś wpisać w ten sposób:

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output.avi --save video.avi

Jeśli chcesz dołączyć więcej plików:

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output1.avi --append output2.avi --append output3.avi --save video.avi

1

Byłem w stanie używać VLC Media Player do łączenia / łączenia wielu plików wideo. VLC można pobrać z oprogramowania Ubuntu lub można zainstalować z terminala, naciskając Ctrl+ Alt+ Ti wpisując:

sudo apt update
sudo apt install vlc

Po zainstalowaniu VLC otwórz terminal w folderze z plikami wideo, a następnie wpisz:

vlc InFile1.mp4 InFile2.mp4 --sout "#gather:std{access=file,dst=OutFile.mp4}" --sout-keep

To otwiera GUI VLC i możesz go zamknąć po połączeniu / scaleniu plików. Więcej informacji znajdziesz tutaj .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.