Я знаю, що це старе питання, але жоден із нинішніх відповідей уже не є рекомендованим способом.
Перейгравання без втрат (відео)
Як зазначається в коментарях, є спосіб зробити це, коли відео не
потрібно перекодувати. Це вимагає перемогування файлу в інший формат MKV, а потім його повторне відтворення в MP4. Ось приклад, який змінює відео на 12 кадрів / секунду:
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
Якщо відео містить аудіо, ви також можете уповільнити це, не змінюючи висоту, але це не конверсія без втрат. Наведений нижче приклад передбачає, що вихідне відео було 24 кадрів / секунду, так що звук потрібно було уповільнити до половини (0,5) швидкості за допомогою 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
FFMPEG Wiki Guidance
Це вказівки з вікі ffmpeg . Зауважте, що всі ці параметри вимагають перекодування відео.
Прискорення / уповільнення відео
Ви можете змінити швидкість відеопотоку, використовуючи встановлений відеофільтр. Зауважте, що в наступних прикладах аудіопотік не змінюється, тому в ідеалі його слід відключити за допомогою -an.
Щоб подвоїти швидкість відео, ви можете використовувати:
ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv
Фільтр працює, змінюючи часову позначку презентації (PTS) кожного відеокадру. Наприклад, якщо є два послідовних кадри, показані на часових позначках 1 і 2, і ви хочете пришвидшити відео, ці часові мітки повинні стати відповідно 0,5 і 1. Таким чином, ми повинні помножити їх на 0,5.
Зауважте, що цей метод скидає кадри для досягнення бажаної швидкості. Ви можете уникнути скинутих кадрів, вказавши більш високу швидкість кадру, ніж вхідну. Наприклад, щоб перейти від входу 4 FPS до такого, який скорочується до 4x, що (16 FPS):
ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.25*PTS" output.mkv
Щоб уповільнити своє відео, вам потрібно використовувати множник, більший за 1:
ffmpeg -i input.mkv -filter:v "setpts=2.0*PTS" output.mkv
Гладкий
Ви можете згладити повільне / швидке відео за допомогою відеофільтра Мінтерполята. Це також відоме як "інтерполяція руху" або "оптичний потік".
ffmpeg -i input.mkv -filter "minterpolate='mi_mode=mci:mc_mode=aobmc:vsbmc=1:fps=120'" output.mkv
Інші варіанти включають slowmoVideo та Butterflow. Прискорення / уповільнення звуку
Ви можете прискорити або уповільнити звук за допомогою аудіо-фільтра atempo. Щоб подвоїти швидкість звуку:
ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv
Фільтр atempo обмежений використанням значень від 0,5 до 2,0 (тому він може уповільнити його не менше ніж до половини початкової швидкості та швидкості до не більше ніж удвічі більше вхідного). Якщо вам потрібно, ви можете обійти це обмеження, з'єднавши кілька фільтрів atempo разом. Наступне, у чотири рази швидкість звуку:
ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv
Використовуючи складний фільтр, ви можете одночасно прискорити відео та аудіо:
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