我发现这个例子
ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv
但是我有一个视频想加速 60 倍,而不仅仅是 2 倍。
答案1
只需乘以速度因子的倒数即可。
ffmpeg -i input.mkv -filter:v "setpts=PTS/60" output.mkv
这不会影响音频速度。用于-an
在输出中不包含音频。
一种更快的方法,但可能会产生音频意外的结果(暂停或异步):
ffmpeg -itsscale 0.01666 -i input.mkv -c copy output.mkv
其中0.01666
以1/60
十进制表示。
答案2
如果您还想加快音频速度,您需要执行以下操作:
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2[a]" -map "[v]" -map "[a]" output.mkv
文档:https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video
如果您想将速度乘以 2,上述命令有效。如果您想乘以任意值x
(0 到 100 之间),参数将变为:
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=1/<x>*PTS[v];[0:a]atempo=<x>[a]" -map "[v]" -map "[a]" output.mkv
例如,如果你想乘以 1.15,命令是
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.87*PTS[v];[0:a]atempo=1.15[a]" -map "[v]" -map "[a]" output.mkv
答案3
答案4
对我来说,setpts
与 一起使用atempo
会使音频速率较低(并且音调较低)。最终对我有用的是:
#!/bin/sh
# Note: First use ffprobe to get the audio rate.
# Adjust below if it's not 48000.
# The example below increases the speed of audio and video
# rate by a factor of 4 (adjust as needed).
# Sources:
# https://superuser.com/questions/1261678/how-do-i-speed-up-a-video-by-60x-in-ffmpeg
# https://stackoverflow.com/questions/53374590/ffmpeg-change-tone-frequency-pitch-audio
ffmpeg -i $1 -filter:v "setpts=PTS/4" -af "asetrate=48000*4,aresample=48000" out.mp4