Wiem, że to stare pytanie, ale żadna z obecnych odpowiedzi nie jest już zalecana.
Remuxing bezstratny (wideo)
Jak zauważono w komentarzach, istnieje sposób, aby to zrobić, gdy wideo nie
musi być ponownie kodowane. Wymaga przebudowania pliku do innego formatu kontenera MKV, a następnie z powrotem do MP4. Oto przykład, który zmienia wideo na 12 klatek na sekundę:
mkvmerge --default-duration 0:12fps --fix-bitstream-timing-information 0 original-video.mp4 -o temp-video.mkv
ffmpeg -i temp-video.mkv -c:v copy slow-video.mp4
Jeśli film zawiera dźwięk można również zwolnić że się bez zmiany wysokości dźwięków, ale to nie konwersja bezstratna. W poniższym przykładzie założono, że wideo źródłowe miało 24 klatki / sekundę, więc dźwięk musiał zostać spowolniony do połowy (0,5) za pomocą filtra atempo ffmpeg .
mkvmerge --default-duration 0:12fps --fix-bitstream-timing-information 0 original-video.mp4 -o temp-video.mkv
ffmpeg -i temp-video.mkv -c:v copy -c:a aac -filter:a "atempo=0.5" slow-video-with-audio.mp4
Poradnik FFMPEG Wiki
Oto wskazówki z wiki ffmpeg . Pamiętaj, że wszystkie te opcje wymagają ponownego kodowania wideo.
Przyspieszenie / spowolnienie wideo
Możesz zmienić prędkość strumienia wideo za pomocą filtra wideo setpts. Zwróć uwagę, że w poniższych przykładach strumień audio nie jest zmieniany, więc najlepiej byłoby wyłączyć go za pomocą opcji -an.
Aby podwoić prędkość wideo, możesz użyć:
ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv
Filtr działa poprzez zmianę znacznika czasu prezentacji (PTS) każdej klatki wideo. Na przykład, jeśli na znacznikach czasowych 1 i 2 wyświetlane są dwie kolejne klatki, a chcesz przyspieszyć wideo, te znaczniki czasu muszą mieć odpowiednio wartość 0,5 i 1. Dlatego musimy je pomnożyć przez 0,5.
Zauważ, że ta metoda spowoduje upuszczenie klatek w celu osiągnięcia pożądanej prędkości. Można uniknąć pomijania klatek, określając wyższą wyjściową częstotliwość klatek niż dane wejściowe. Na przykład, aby przejść od wejścia 4 FPS do takiego, który jest przyspieszony nawet czterokrotnie (16 FPS):
ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.25*PTS" output.mkv
Aby spowolnić wideo, musisz użyć mnożnika większego niż 1:
ffmpeg -i input.mkv -filter:v "setpts=2.0*PTS" output.mkv
Gładki
Możesz wygładzić wolne / szybkie wideo za pomocą filtra wideo minterpolate. Jest to również znane jako „interpolacja ruchu” lub „przepływ optyczny”.
ffmpeg -i input.mkv -filter "minterpolate='mi_mode=mci:mc_mode=aobmc:vsbmc=1:fps=120'" output.mkv
Inne opcje obejmują slowmoVideo i Butterflow. 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