Prawdopodobnie nie masz klatki kluczowej na 3 sekundowym znaku. Ponieważ klatki inne niż klatki kluczowe kodują różnice w stosunku do innych klatek, wymagają one wszystkich danych, zaczynając od poprzedniej klatki kluczowej.
W kontenerze mp4 możliwe jest cięcie bez klatki kluczowej bez ponownego kodowania przy użyciu listy edycji. Innymi słowy, jeśli najbliższa klatka kluczowa przed 3s ma wartość 0, skopiuje wideo zaczynając od 0 i użyje listy edycji, aby powiedzieć graczowi, aby zaczął odtwarzać 3 sekundy.
Jeśli używasz najnowszej wersji ffmpeg od git master, zrobi to za pomocą listy edycji po wywołaniu za pomocą podanego polecenia. Jeśli to nie działa, prawdopodobnie używasz starszej wersji ffmpeg lub twój odtwarzacz nie obsługuje list edycji. Niektóre odtwarzacze zignorują listę edycji i zawsze odtwarzają wszystkie multimedia w pliku od początku do końca.
Jeśli chcesz wycinać dokładnie zaczynając od klatki kluczowej i chcesz, aby grała od wybranego miejsca na odtwarzaczu, który nie obsługuje list edycji, lub chcesz upewnić się, że wycięta część nie znajduje się w pliku wyjściowym (na przykład jeśli zawiera poufne informacje), możesz to zrobić, ponownie kodując, aby klatka kluczowa była dokładnie w żądanym czasie rozpoczęcia. Ponowne kodowanie jest domyślne, jeśli nie zostanie określone copy
. Na przykład:
ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4
Podczas ponownego kodowania możesz również chcieć uwzględnić dodatkowe opcje związane z jakością lub określony koder AAC. Aby uzyskać szczegółowe informacje, zobacz Podręcznik kodowania x264 ffmpeg dla wideo i Podręcznik kodowania AAC dla audio.
Ponadto -t
opcja określa czas trwania, a nie czas zakończenia. Powyższe polecenie zakoduje 8 s wideo zaczynając od 3 s. Aby rozpocząć od 3s i zakończyć od 8s użyj -t 5
. Jeśli używasz aktualnej wersji FFmpeg można również wymienić -t
ze -to
w powyższym poleceniu do końca w określonym czasie.