FFMPEG - Konwertuj wideo na timelapse

15

Korzystam z programu ffmpeg w programie Flash Builder (skrypt akcji 3), aby przekonwertować wideo na upływ czasu. Nauczyłem się, jak korzystać z setpts, aby to zrobić, ale wynikowy plik wyjściowy ma taką samą długość jak dane wejściowe (z ostatnią klatką wyświetlaną po upływie czasu), chcę, aby czas trwania został zmieniony na podstawie przekazanych ustawień do ffmpeg.

Najpierw próbuję poniżej za pomocą wiersza polecenia:

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4

Każda pomoc byłaby bardzo mile widziana!

Kanapka
źródło

Odpowiedzi:

21

Problem rozwiązany. Nie usunąłem dźwięku, więc prawdopodobnie odtwarzałem prawie pusty plik audio przez cały czas filmu.

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4

-an usuwa audio z wideo.

Kanapka
źródło
2

Więcej informacji na temat przyspieszania dźwięku. Możesz zrobić do 2x, ale możesz go oszukać, aby przyspieszyć jeszcze bardziej ( źródło ):

Przyspieszenie / spowolnienie dźwięku

Możesz przyspieszyć lub spowolnić dźwięk dzięki filtrowi audio atempo. Aby podwoić prędkość dźwięku:

ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv

Filtr atempo ogranicza się do używania wartości z zakresu od 0,5 do 2,0 (więc może spowolnić do nie mniej niż połowy oryginalnej prędkości i przyspieszyć do nie więcej niż dwukrotności wejściowej). W razie potrzeby możesz obejść to ograniczenie, łącząc ze sobą wiele filtrów atempo. Następujące z czterokrotnie większą prędkością dźwięku:

ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv

Za pomocą złożonego wykresu filtru możesz jednocześnie przyspieszyć wideo i audio:

ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv

Słońce
źródło