Muszę skrócić pierwsze 1 lub 2 sekundy z serii nagrań FLV o różnych, nieokreślonych długościach. Znalazłem wiele zasobów do wyodrębnienia określonego czasu trwania z filmu (np. 30-sekundowe klipy), ale żadnych do kontynuowania do końca filmu.
Obie te próby dają po prostu skopiowaną wersję wideo, bez pożądanego przycinania:
ffmpeg -ss 2 -vcodec copy -acodec copy -i input.flv output.flv
ffmpeg -ss 2 -t 120 -vcodec copy -acodec copy -i input.flv output.flv
Drugą myślą było: może gdybym określił długość przekraczającą to, co było możliwe, to po prostu doszłoby do końca. Nie ma kości.
Wiem, że to nie jest problem z kodekami lub używaniem sekund zamiast kodu czasowego, ponieważ następujące działały:
ffmpeg -ss 2 -t 5 -vcodec copy -acodec copy -i input.flv output.flv
Jakieś inne pomysły? Jestem otwarty na używanie innych (opartych na Windows) narzędzi wiersza poleceń, jednak zdecydowanie faworyzuję ffmpeg, ponieważ już go używam do tworzenia miniatur i jestem z nim zaznajomiony.
Jeśli to pomoże, moje filmy będą miały mniej niż 2 minuty.
AKTUALIZACJA:
Przeszedłem na używanie Mencodera ( http://www.mplayerhq.hu/ ), ponieważ wygląda na to, że ffmpeg nie osiągnie tego bez dodatkowego hakowania.
Składnia Mencodera służąca do osiągnięcia tego, co postanowiłem zrobić, to:
mencoder.exe -ss 2 -oac copy -ovc copy input.flv -o output.flv
mencoder
przykład, powyżej; lubffmpeg
przykład poniżej?Odpowiedzi:
Próbować:
Myślę, że parametr wejściowy powinien być pierwszy.
źródło
-i
) podczas kopiowania, a nawet transkodowanie ze starszą wersją FFmpeg, wykorzystuje wyszukiwanie klatek kluczowych. Jest to znacznie szybsze, ale poświęca dokładność. Jeśli użyjesz go jako parametru wyjściowego, proces jest potencjalnie znacznie wolniejszy (wejście jest dekodowane klatka po klatce nawet dla odrzuconych części), ale dokładny. Chociaż pytanie jest stare, myślę, że powinna to być zaakceptowana odpowiedź.Okazuje się tego polecenia będzie przyciąć film od 2 sekund na, zgodnie z oczekiwaniami:
Problem dotyczył interwału klatki kluczowej w input.flv. Został ustawiony na 5 sekund, co dało 3 sekundy wartości czarnych klatek na początku filmu (5 - 2 = 3). Od tego czasu zmieniłem interwał klatki kluczowej na 1 sekundę, chociaż 2 sekundy prawdopodobnie przyniosą pożądane rezultaty w moim przypadku.
AKTUALIZACJA: Zaktualizowano kolejność
-i
i-ss
parametry według odpowiedzi Dave'a, którą zaakceptowałem na kredyt.źródło
-vcodec copy -acodec copy
wszystkich poleceń edycyjnych. Ponowne kodowanie zapobiegło pojawieniu się czarnych klatek na początku mojego filmu lub braku cięcia we właściwym miejscu (różnica sekundy bez ponownego kodowania przekładała się na prawie 5-sekundową różnicę w filmie). Więc skończyło się na wymianie-vcodec copy
z-vcodec libx264 -crf 0
.-vcodec copy
ponieważ wycinek nie zaczyna się od klatki kluczowej. Dostawałem nieruchomy obraz lub czarny obraz przez N sekund do następnej klatki kluczowej. Jeśli faktycznie ponownie koduję, a nie kopiuję, działa to zgodnie z oczekiwaniami. Więc chociaż moje wejście i wyjście to zarówno H264, nadal musiałem przekodować (używając-vcodec libx264
zamiast-vcodec copy
).-i
Powinny pochodzić przed-ss
.Użyj -ss i -to przed -i w ten sposób:
źródło
Aktualizując tę odpowiedź, od 2019 r. Polecenie jest teraz:
źródło