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 -codecs
lub 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)