Jak wykadrować (czas bez obrazu) plik wideo MP4

17

Szukam aplikacji, która pomogłaby mi odciąć fragmenty pliku MP4 wydajnie i bezstratnie .

np. czy jest coś, co pozwala mi znaleźć klatkę kluczową i skopiować partię między tą a inną klatką kluczową, bez konieczności ponownego kodowania partii (powolna i stratna) i bez utraty synchronizacji AV?

Przez mp4 rozumiem wideo H264 + audio AAC w kontenerze MP4

Przed h264 dni Avidemux był do tego doskonałym narzędziem, ponieważ możesz ponownie użyć oryginalnych zakodowanych strumieni, co oznacza brak strat i zajmuje tylko kilka sekund, aby utworzyć przyciętą wersję, ale w h264 jest beznadziejny - otwarcie jednego daje dwie opcje: użyj trybu awaryjnego (który znacznie traci synchronizację AV) lub użyj niebezpiecznego trybu, który natychmiast go zawiesza.

AFAIK, Openshot, Kdenlive, Pitivi itp. Zrobią to przez dekodowanie i przekodowywanie (powolne i stratne).

Wydaje się to proste (prawdopodobnie pokazuje tutaj mój brak wiedzy!), Więc zastanawiałem się, czy coś mi umknęło.

artfulrobot
źródło
Jeśli chcesz odciąć
v010dya
2
superuser.com/questions/377343/... odnosi się dobrze i oferuje podobne rozwiązanie do tego poniżej, ale dodaje kilka dobrych informacji.
pbhj

Odpowiedzi:

24

ffmpeg

ffmpeg -i source.mp4 -ss 00:00:00 -t 00:00:00 -vcodec copy -acodec copy splice.mp4

To zajmie source.mp4 i, używając tych samych kodeków audio i wideo i nie obniżając jakości, zajmie -t czas po -ss czas rozpoczęcia wideo i wyśle ​​splice.mp4

Należy pamiętać, że czas jest bardzo wrażliwy na formatowanie (powyżej jest jedno przykładowe formatowanie). Również w niektórych dystrybucjach ffmpegzostał zastąpiony przez avconv. Po prostu uruchom powyższe polecenie i zamień słowo ffmpeg na avconv, aby rozwiązać ten problem.

Kolejne doskonałe źródło informacji na ten temat. (Dzięki @pbhj)

EarthmeLon
źródło
3
Znakomity. Zauważ, że nie możesz skrócić -ssargumentu, tzn. 9:00Przez 9 minut należy wyrazić, ponieważ w 00:09:00przeciwnym razie jest on dyskretnie ignorowany. Myślę, że ta odpowiedź powinna zostać zaktualizowana do użycia avconv, zgodnie z ostrzeżeniem ffmpeg. Dzięki.
artfulrobot
Na marginesie, to ostrzeżenie po prostu pokazuje, że masz zainstalowany avconv, a nie ffmpeg, więc twój plik wykonywalny ffmpeg jest tak naprawdę tylko opakowaniem wokół avconv i to opakowanie może wkrótce zostać wycofane. Gdybyś miał zainstalowany ffmpeg, ale nie avconv, nie dostałbyś tego ostrzeżenia. Nie ma to oznaczać, że sama ffmpeg jest przestarzała (chociaż najnowsze wersje Ubuntu zdecydowały się domyślnie instalować avconv zamiast ffmpeg).
thomasrutter
5

W Ubuntu 16.04 odpowiednik ffmpeg jest polecenieavconv

Aby zainstalować, uruchom:

sudo apt-get install libav-tools

Przykład wiersza polecenia, aby przyciąć wideo według czasu:

avconv -i originalFile.ogv -ss 00:00:00 -t 00:00:10 -vcodec copy -acodec copy croppedFile.ogv
AlejandroVD
źródło
Niedostępne w późniejszych wersjach Ubuntu.
Lolmaus - Andrey Mikhaylov