Замедление видео с частотой 960 к / с с помощью ffmpeg (setpts не работает)
Я пытаюсь замедлить видео, записанное на телефоне Android в 960fps
, Я нашел много предыдущих постов и блогов, которые в основном говорят одно и то же, что вам нужно изменить "метку времени презентации" (оч). Я также нашел официальную документацию, которая говорит то же самое. Командная строка в основном выглядит так:
ffmpeg -i input.mp4 -filter:v "setpts=4*PTS" -r 30 -y output.mp4
Я скопировал видеофайл с помощью Android Filter Transfer, и когда я использую приведенную выше командную строку, он работает, чтобы замедлить его, но в результате получается нестабильный. Выход из ffmpeg
также указывает, что он дублирует кадры:
frame= 687 fps=103 q=-1.0 Lsize= 4454kB time=00:00:22.80 bitrate=1600.1kbits/s dup=515 drop=0 speed=3.42x
Бег ffprobe
на файл показывает это:
ffprobe version 3.1.1 Copyright (c) 2007-2016 the FFmpeg developers
built with Apple LLVM version 7.3.0 (clang-703.0.31)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.1.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-lda
libavutil 55. 28.100 / 55. 28.100
libavcodec 57. 48.101 / 57. 48.101
libavformat 57. 41.100 / 57. 41.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 47.100 / 6. 47.100
libavresample 3. 0. 0 / 3. 0. 0
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'VID_20161030_213810.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2016-10-30 16:08:14
location : +17.3874+078.3395/
location-eng : +17.3874+078.3395/
com.android.version: 6.0.1
com.android.capture.fps: 120.000000
Duration: 00:00:05.73, start: 0.000000, bitrate: 14991 kb/s
Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 1280x720, 13859 kb/s, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 90k tbn, 180k tbc (default)
Metadata:
creation_time : 2016-10-30 16:08:14
handler_name : VideoHandle
Это, кажется, обнаруживает, что видео 30 fps
вместо 960 fps
Вероятно, поэтому он заполняется дублирующими кадрами, а не использует существующие кадры.
Я записываю видео на Lenovo Z2 Plus (AKA Zuk Z2). Если я воспроизводлю видео с помощью встроенного плеера на низкой скорости, оно выглядит очень плавным, поэтому кадры определенно присутствуют. Может ли кто-нибудь помочь мне понять правильный путь? Файл доступен здесь (около 10 МБ), на случай, если кто-то захочет его попробовать.
Обновление: воспроизведение видео в режиме slo-mo на телефоне, записанном на другом телефоне. Обратите внимание, насколько плавными и медленными становятся искры, что невозможно, если исходное видео составляет 30 кадров в секунду.