Mam plik wideo MP4 z wieloma ścieżkami audio. Chciałbym usunąć resztę utworów i zatrzymać tylko jeden. Jak mam to zrobic?
video-editing
tshepang
źródło
źródło
Odpowiedzi:
Najpierw uruchom,
ffmpeg -i file.mp4
aby zobaczyć, które strumienie istnieją w twoim pliku. Powinieneś zobaczyć coś takiego:Następnie uruchom,
ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4
aby skopiować strumień wideo i drugi strumień audio donew_file.mp4
.źródło
Option map (set input stream mapping) cannot be applied to input file file.mp4 new_file.mp4 -- you are trying to apply an input option to an output file or vice versa. Move this option before the file it belongs to.
: aby to naprawić, po prostu zmień odpowiednio kolejność argumentów:ffmpeg -i file.mp4 -map 0:0 -map 0:2 -acodec copy -vcodec copy new_file.mp4
-c copy
mieć identyczne strumienie audio, wideo, ale także napisy:ffmpeg -i input.mp4 -map 0:0 -map 0:2 -c copy output.mp4
.Powiązany problem - usunięcie wszystkich ścieżek audio z pliku mp4 można wykonać w ten sposób:
źródło
The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.
Ale dodałem te flagi i nadal są takie same ...?Zidentyfikuj numery strumieni:
Użyj,
-map _file_:_stream_
aby wybrać strumienie do przetworzenia i wyjściapatrz: https://ffmpeg.org/ffmpeg.html#Advanced-options
źródło
Możesz spróbować,
avidemux
który obsługuje tylko jeden plik audio wewnętrznie (i dlatego zmusza cię do wybrania jednej konkretnej ścieżki). Nigdy nie próbowałem tego z .mp4, ale działa z innymi formatami.źródło
Użyłem Avidemux (GUI) kilka razy i ffmpeg (konsola).
W Avidemux wybierasz „Audio” -> „Wybierz ścieżki” w menu głównym; następnie zapisz wideo jako nowy plik.
Co ciekawe, w niektórych przypadkach Avidemux produkował „lepszą” wydajność niż ffmpeg.
na wszelki wypadek Avidemux i ffmpeg znajdują się w standardowym repozytorium Linux Fedory. (Jestem pewien, że są one również standardem w innych wersjach Linuksa).
źródło
-vn
lub-an
usunie wszystkie ścieżki wideo lub audio. Dostarczenie-vn -acodec copy
usunie wideo;-an -vcodec copy
usunie cały dźwięk.-vcodec copy
określa, że ffmpeg powinien wykonać prostą kopię istniejącej ścieżki wideo (i nie przetwarzać jej / kodować). Jeśli go nie określisz, nadal będzie działać, ale ffmpeg może ponownie zakodować istniejącą ścieżkę wideo, a operacja zużyje więcej procesora i może potrwać znacznie dłużej.źródło
Korzystanie z avidemux w wierszu poleceń.
(W Avidemux GUI, jak opisano w https://unix.stackexchange.com/a/85834/4319 powyżej, po prostu zaznacz / odznacz ścieżki audio i zapisz plik. (Wszystko jest kopiowane do nowego AVI.))
Sprawdziłem, jakie projekty są zapisywane jako projekcje SpiderMonkey lub TinyPy dla moich działań, i okazało się, że projekt SpiderMonkey (JavaScript) nie ma akcji wyboru ścieżki audio, których potrzebowałem, ale projekt TinyPy (Python) miał im.
Usunąłem wszystko, co nie było ze sobą powiązane (kilkanaście niepotrzebnych linii), i oto, co mam w swoim
some_series.py
:Opuszcza ścieżkę 1, ale upuszcza ścieżkę 0.
Następnie uruchomiłem konwersję wsadową wielu plików za pomocą polecenia takiego jak ten:
Kopiuje wszystko, ale upuszcza wszystko oprócz potrzebnej ścieżki audio.
Sposób uruchamiania avidemux z wiersza poleceń nauczyłem się od https://www.avidemux.org/admWiki/doku.php?id=tutorial:batch_processing , chociaż nie wspominają o skryptach Python, tylko JS ( co nie działało dla mnie).
źródło
Jeśli nie masz nic przeciwko temu, że program jest GUI, dzięki edytorowi wideo Blendera możesz to zrobić i wiele więcej.
źródło
ffmpeg
Program został zastąpionyavconv
.avconv
ma bardzo podobne użycie doffmpeg
, dlatego wszystkie polecenia w tym poście mogą wyglądać następująco:Kliknij ten link, aby zainstalować,
avconv
jeśli korzystasz z systemu Ubuntu.źródło
FFMPEG może być dla Ciebie pomocnym rozwiązaniem.
źródło