Mam wiele filmów i muszę umieścić przed nimi obraz na około 5 sekund, ale dodawanie go ręcznie i renderowanie za każdym razem potrwa naprawdę długo, więc pytam, czy można to zrobić za pomocą ffmpeg i czy mógłby mi pomóc, ponieważ nie mam doświadczenia z ffmpeg. Znalazłem już niektóre polecenia, ale żadne z nich nie działało. Ten na przykład.
ffmpeg -itsoffset 5 -i in.mp4 -r 25 -loop 1 -i intro.png -filter_complex "[1:v] fade=out:125:25:alpha=1 [intro]; [0:v][intro] overlay [v]" -map "[v]" -map 0:a -acodec copy out.mp4
Odpowiedzi:
Możesz wykonać prostą nakładkę obrazu, używając następującej składni:
overlay=25:25
oznacza, że chcemy ustawić obraz 25px w prawo i 25px w dół, zaczynając od lewego górnego rogu (0: 0).enable='between(t,0,20)'
oznacza, że chcemy, aby obraz wyświetlał się między sekundą 0 a 20.[0:v][1:v]
oznacza, że chcemy, aby pierwszy plik wideo, który importujemy-i
, w naszym przypadku input.mp4 lub jak ffmpeg go widzi, plik wejściowy wideo numer 0, aby znajdował się pod plikiem wejściowym wideo 1, w naszym przypadku image.png.:v
oznacza tylko, że chcemy wideo 0 i wideo 1.[0:a]
oznaczałoby to, że chcemy pierwszej importowanej ścieżki audio. Który również pochodziłby z input.mp4, ale wskazywałby na ścieżkę audio zamiast ścieżki wideo w pliku mp4.Jeśli chcesz określoną jakość / ustawienia obrazu, a nie ustawienia wybrane przez ffmpeg, dodaj obraz i / lub opcje kodowania dźwięku, których chcesz użyć. Domyślnym koderem wideo będzie x264. Sprawdź przewodnik kodowania H.264, aby sprawdzić możliwe ustawienia.
Polecenie
-acodec copy
/-c:a copy
, które masz w swoim poleceniu fe, po prostu ponownie użyłoby dźwięku z pliku źródłowego. Chociaż oczywiście nie można tego zrobić z wideo (w tym przypadku), należy go transkodować, ponieważ tworzymy nowe źródło wideo.Jeśli chcesz transkodować dźwięk, usuń
-c:a copy
część. Może być konieczne jawne określenie kodera, np-c:a aac -strict experimental
. Więcej informacji można znaleźć w przewodniku kodowania AAC .źródło