Mam długi film z różnymi scenami. Chcę wyodrębnić i połączyć 2 sceny z filmu (które nie zaczynają się na ramce I) za pomocą ffmpeg 2.1.4.
Jako argument, powiedz, że chcę 5 sekund od 01:00 i 02:00.
Mogę to zrobić:
ffmpeg -ss 01:00 -i in.mkv -ss 02:00 -i in.mkv -filter_complex "
[0:v]select='lt(t,5)'[v0];
[0:a]aselect='lt(t,5)'[a0];
[v0][a0][1:v][1:a]concat=n=2:v=1:a=1
" -c:a libvorbis -t 10 out.mkv
To daje mi film, który chcę, ale wybranie faktycznie zmusza ffmpeg do odkodowania całej reszty filmu. Jak mam to zrobić, aby skrócić pierwszy film zamiast go dekodować?
Wolałbym to zrobić z filtrem złożonym ffmpeg, jeśli to możliwe. Wiem, że mogę po prostu -t
najpierw przekodować osobne filmy, ale dodatkowy krok kodowania jest w moim przypadku bardzo powolny i również traci dobrą jakość tego filmu.
Nie mogę znaleźć filtra, który skraca długość pary. Czy istnieją węzły filtrów odpowiadające parametrom -t
lub -ss
?
-filter_complex
działa, aleconcat
pliki nie - tzn. Pierwszy film wygląda dobrze, ale jakość drugiego jest okropna. Uwaga: skopiowałem te polecenia dokładnie dla obu (z wyjątkiem pliku wejściowego).To powinno działać szybciej ...
Nie ma potrzeby podawania -t na wyjściu. Nie ma potrzeby dzielenia audio i wideo przed konkat.
źródło