视频变速

0.25x~4x 变速(setpts)

420 次访问
VIDEO SPEED

视频变速

0.5x / 2x 等倍速调整 · 保持 / 不保持音调

FFmpeg 命令行(推荐)

视频处理涉及复杂的解码 / 编码 / 滤镜操作,桌面 FFmpeg(开源 / 免费)是业界事实标准。安装 5 分钟,运行如下命令一次解决:

# 2x 加速(保留音频,音调同步加速) ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4 # 0.5x 慢动作 ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" output.mp4 # 仅视频变速(去除音轨) ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4

桌面 FFmpeg 安装

macOS

brew install ffmpeg

用 Homebrew,5 秒安装

Linux

sudo apt install ffmpeg # 或 sudo dnf install ffmpeg

Debian/Ubuntu/Fedora

Windows

下载 Gyan FFmpeg builds

解压后将 bin 目录加入 PATH

Docker

docker run --rm -v $PWD:/work \ jrottenberg/ffmpeg -i input.mp4 ...

无需本地安装

操作步骤

步骤 1:安装 FFmpeg

按上方系统对应的命令安装。验证:ffmpeg -version 应输出版本号。

步骤 2:复制本页面提供的命令

input.mp4 改为你的实际视频文件路径。

步骤 3:在视频所在目录运行

用终端 (Terminal / cmd / PowerShell) 切到视频所在目录,粘贴命令并回车。

步骤 4:等待处理完成

短视频几秒,长视频几分钟。输出文件出现在同目录。

提示

atempo:音频倍速 0.5-100x。超过此范围用链式 atempo=2.0,atempo=2.0=4x。

关于本工具

了解工具定位 · 使用场景 · 对比优势

将视频播放速度调整为 0.25 倍到 4 倍。剪辑师快速预览素材、学习者逐帧分析教程、创作者制作快慢镜头效果,无需重新编码即可完成。视频文件在浏览器本地处理,不上传服务器。

使用场景

🎬

短视频节奏调整

短视频创作者在剪辑口播或 Vlog 时,常遇到原片语速过慢、观众流失率高的问题。使用 1.2x-1.5x 加速,能在不改变音高(需配合音频变速)的前提下让视频节奏更紧凑,3 分钟素材压缩到 2 分钟,完播率提升。同时 0.5x 慢放可用于展示产品细节或表情特写,无需额外拍摄。

🎓

网课倍速学习

学生或备考者观看录播课程时,讲师语速偏慢、废话多。用 1.5x-2x 加速,1 小时课程 40 分钟学完,节省时间用于刷题。遇到难点段落临时切回 0.75x 慢放,逐句理解公式推导。无需下载视频到本地,浏览器直接处理,不占存储。

🏋️

运动动作慢放分析

健身爱好者或教练录制深蹲、硬拉等动作后,用 0.25x-0.5x 慢放逐帧观察膝盖角度、杠铃轨迹是否偏移。原速 10 秒的动作慢放至 40 秒,肉眼可见发力顺序错误,避免因动作不规范导致的慢性损伤。

🎮

游戏高光时刻变速

游戏玩家录制击杀集锦时,想突出关键操作(如闪避、连招)。将 1 秒内的快速操作慢放至 0.25x(4 秒),配合后续加速跳过跑图部分,形成节奏对比。无需专业剪辑软件,上传片段直接输出变速后视频,适合发朋友圈或短视频平台。

📹

会议回放快速浏览

职场人回看 1 小时会议录像时,用 2x-4x 变速快速扫过寒暄、沉默段落,遇到讨论决议时切回 1x 正常听取。4x 下 1 小时视频 15 分钟看完,提取关键结论。工具纯前端处理,不上传服务器,适合涉密会议内容。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (Kapwing)传统方法 (Premiere Pro)
数据隐私纯浏览器,零上传上传到服务器处理本地文件,不联网
处理速度1 秒内完成5-10 秒(含上传/下载)数分钟(含渲染导出)
离线可用是,完全离线否,必须联网是,需安装软件
大小限制无,仅受浏览器内存限制免费版 250MB无,受硬盘空间限制
收费免费免费版有水印,付费 $16/月付费,订阅 $22.99/月
注册无需注册需注册账号需注册并激活许可证
操作门槛打开即用,无需学习需简单学习界面需专业剪辑知识

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 上传 MP4/MOV/AVI 视频文件,单文件 ≤ 500MB,支持多文件同时上传
  2. 在「速度」下拉框中选择 0.25x、0.5x、1.5x、2x、3x 或 4x 倍率
  3. 点击「开始变速」按钮,FFmpeg 在服务端执行 setpts 滤镜处理
  4. 处理完成后,点击视频右侧「下载」按钮保存变速后的文件

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
0.5x播放时长变为原始 2 倍,画面慢放典型场景:慢动作回放,0.5x 是常用慢放倍率
2x播放时长变为原始 0.5 倍,画面快进典型场景:快速浏览视频内容,2x 是常用快放倍率
0.25x播放时长变为原始 4 倍,极慢动作边界 case:工具支持的最低倍率,画面极慢
4x播放时长变为原始 0.25 倍,极速快进边界 case:工具支持的最高倍率,画面极快
1x播放时长不变,原始速度边界 case:1x 为原始速度,输出无变化
0x输入值超出范围,请使用 0.25x ~ 4x易错 case:用户误输入 0x,工具会提示范围
5x输入值超出范围,请使用 0.25x ~ 4x易错 case:用户输入超过 4x 的倍率,工具会提示范围

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 输出文件名与输入文件名相同

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

FFmpeg 不允许覆盖正在读取的文件;同文件名会导致写入失败或文件损坏,必须指定不同输出名

2. setpts 参数值超出 0.25x~4x 范围

错误
setpts=0.1*PTS  或  setpts=5*PTS
修复
setpts=0.5*PTS  或  setpts=2*PTS

工具限速范围 0.25x~4x,超出此范围的 setpts 系数(如 0.1→10x 加速)会导致音画不同步或工具拒绝执行

3. 忘记同时调整音频速度

错误
ffmpeg -i input.mp4 -filter:v "setpts=2*PTS" output.mp4
修复
ffmpeg -i input.mp4 -filter:v "setpts=2*PTS" -af "atempo=0.5" output.mp4

setpts 只改变视频帧速率,不改变音频;单独变速视频会导致音画不同步,必须配合 atempo 调整音频

4. atempo 参数值超出 0.5~2.0 范围

错误
atempo=0.25  或  atempo=4.0
修复
atempo=0.5  或  atempo=2.0

FFmpeg atempo 滤波器仅支持 0.5~2.0 倍速;超出范围报错,需通过链式调用实现更大范围(如 atempo=2,atempo=2 实现 4x)

5. 输入文件路径包含空格未加引号

错误
ffmpeg -i my video.mp4 -filter:v "setpts=0.5*PTS" out.mp4
修复
ffmpeg -i "my video.mp4" -filter:v "setpts=0.5*PTS" out.mp4

Shell 将空格视为参数分隔符;不加引号会导致 FFmpeg 将 'my' 和 'video.mp4' 视为两个参数,引发 'No such file' 错误

6. 使用 setpts 但未指定视频流

错误
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
修复
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4

-vf 是 -filter:v 的别名,两者等价;但若输入文件含多个视频流,需用 -filter:v:1 等指定具体流,否则默认只处理第一个

7. 加速后输出文件编码参数缺失导致体积异常

错误
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -c copy output.mp4
修复
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -c:v libx264 -crf 23 output.mp4

-c copy 会复制原始编码流,但 setpts 改变了帧率,复制编码流会导致时间戳错乱;必须重新编码视频流

8. 变速后未考虑帧率变化导致播放卡顿

错误
ffmpeg -i input.mp4 -filter:v "setpts=4*PTS" output.mp4
修复
ffmpeg -i input.mp4 -filter:v "setpts=4*PTS,setpts=N/FRAME_RATE/TB" output.mp4

setpts 只缩放时间戳,不改变容器帧率;慢放时帧率不变但内容变慢,某些播放器会卡顿;需配合 fps 或 setpts 二次修正帧率

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

T_new = T_original / speed_factor

变量说明

  • T_new — 变速后的视频时长(秒)
  • T_original — 原始视频时长(秒)
  • speed_factor — 变速倍率,范围 0.25~4

示例

一段 120 秒的视频,以 2x 倍率加速。则 T_original=120,speed_factor=2,T_new = 120 / 2 = 60 秒。输出视频时长缩短为 60 秒。

适用范围

适用于 FFmpeg setpts 滤镜实现的均匀变速,倍率在 0.25~4 之间。倍率超出范围或需要非均匀变速(如慢动作后加速)时不适用。

原理图

原始视频用户上传 / 选择FFmpeg setpts 滤镜0.25x ~ 4x 变速纯浏览器端 WASM 执行变速后视频预览 / 下载关键参数说明• 速度系数 = 目标时长 / 原始时长(setpts 直接作用于 PTS)• 0.25x = 时长变为 4 倍,4x = 时长变为 1/4• 音频默认跟随变速(音调同步变化),不单独处理音频流
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import subprocess
import os

# 使用 FFmpeg setpts 滤镜实现视频变速
input_file = "input.mp4"
output_file = "output_2x.mp4"
speed_factor = 2.0  # 2x 加速

# setpts: 视频时间戳缩放,PTS = 原PTS / speed_factor
# 音频需同步调整:atempo 滤镜(范围 0.5~2.0,超范围需级联)
filter_video = f"setpts={1/speed_factor}*PTS"
filter_audio = f"atempo={speed_factor}" if 0.5 <= speed_factor <= 2.0 else None

if filter_audio:
    cmd = [
        "ffmpeg", "-i", input_file,
        "-filter_complex", f"{filter_video};{filter_audio}",
        "-c:v", "libx264", "-c:a", "aac",
        output_file
    ]
else:
    # 超范围时只处理视频,音频静音或丢弃
    cmd = [
        "ffmpeg", "-i", input_file,
        "-vf", filter_video,
        "-an",  # 丢弃音频
        "-c:v", "libx264",
        output_file
    ]

subprocess.run(cmd, check=True)
print(f"生成 {output_file}")
package main

import (
	"fmt"
	"os/exec"
	"strconv"
)

func main() {
	input := "input.mp4"
	output := "output_0.5x.mp4"
	speed := 0.5 // 0.5x 慢放

	// setpts: PTS = PTS / speed,慢放时 speed<1 导致 PTS 增大
	pts := 1.0 / speed
	filter := fmt.Sprintf("setpts=%f*PTS", pts)

	// 音频 atempo 范围 0.5~2.0,0.5x 在范围内
	audioFilter := fmt.Sprintf("atempo=%f", speed)

	cmd := exec.Command("ffmpeg",
		"-i", input,
		"-filter_complex", filter+";"+audioFilter,
		"-c:v", "libx264",
		"-c:a", "aac",
		output,
	)

	if err := cmd.Run(); err != nil {
		panic(err)
	}
	fmt.Println("生成 " + output + ",速度 " + strconv.FormatFloat(speed, 'f', 2, 64) + "x")
}
// 纯前端模拟:用 Canvas 和 AudioContext 实现简单变速(非 FFmpeg)
// 实际工具使用 WASM FFmpeg,此处演示核心逻辑

function changeSpeed(videoUrl, speed, callback) {
  const video = document.createElement('video');
  video.src = videoUrl;
  video.onloadedmetadata = () => {
    // 设置 playbackRate 实现变速(0.25~4.0)
    video.playbackRate = speed;
    video.play();
    callback(null, video);
  };
  video.onerror = (e) => callback(e);
}

// 示例:2x 加速播放
changeSpeed('input.mp4', 2.0, (err, el) => {
  if (err) {
    console.error('加载失败', err);
    return;
  }
  console.log('播放速度:', el.playbackRate); // 2.0
});

常见问题

9 个高频疑问

视频变速后声音也变调了,能保持原声吗?
当前工具只做视频画面变速(FFmpeg setpts),音频会跟随画面一起变速,导致声音变调(慢放变低沉、快放变尖锐)。如果需要保持原声,需要后续用音频分离工具把原音轨提取出来,再合成回去。如果只是想要倍速播放但不影响音调(类似播放器的“保持音调”功能),本工具不支持,建议改用播放器软件(如 PotPlayer、VLC)的倍速播放功能。
为什么我上传的 4K 视频变速后导出速度特别慢?
变速处理需要逐帧重新编码,4K 视频分辨率高、数据量大,会显著增加处理时间。实测 1 分钟 4K/30fps 视频,在普通浏览器 WASM 环境下变速可能需要 3-5 分钟。建议先降低分辨率(如压缩到 1080p)再变速,或改用后端 Go 处理模式(如果工具支持)。另外,浏览器端处理受限于内存,超过 500MB 的视频可能直接卡死。
变速范围为什么是 0.25x 到 4x?能更慢或更快吗?
这个范围是基于 FFmpeg setpts 滤镜的实际可用区间。低于 0.25x(如 0.1x)会导致视频帧率低于 1fps,播放时画面严重卡顿甚至不同步;高于 4x(如 8x)则帧率过高,大部分播放器无法流畅播放,且肉眼基本看不清内容。如果确实需要极端变速,建议分两步:先本工具变速到 0.25x,再用视频剪辑软件二次变速,但画质损失会叠加。
变速后视频时长怎么算?比如 2 分钟视频 2 倍速变成多久?
时长 = 原时长 ÷ 倍率。2 分钟(120 秒)视频 2 倍速后 = 60 秒;0.5 倍速后 = 240 秒。注意:工具输入的倍率是“速度倍数”,不是“时长倍数”,所以 2x 是变快(时长减半),0.5x 是变慢(时长翻倍)。如果输入倍率后得到的时长不如预期,先确认输入的是速度倍数还是时间百分比。
变速后视频画质会变差吗?
变速本身不降低画质,因为 setpts 只是改变帧的时间戳,不重新压缩画面。但输出编码时若选择了低码率或低分辨率选项(不同工具有差异),画质会受损。本工具默认保持原分辨率与原编码参数(H.264 中等码率),画质损失可忽略。如果发现变速后画面模糊,检查是否选择了“高质量”输出模式(如有),或原视频本身码率就低。
支持哪些视频格式?MP4、MOV、AVI 都可以吗?
支持常见的视频容器格式:MP4、MOV、AVI、MKV、FLV、WebM 等。但注意:编码格式比容器更重要。如果视频是 H.265(HEVC)编码,浏览器端可能无法解码,需改用后端模式处理。最稳妥的是 H.264 编码的 MP4 文件。如果上传后工具无反应或报错,先用格式转换工具把视频转成 H.264/MP4 再试。
工具能批量处理多个视频吗?一次只能上传一个?
当前版本一次只处理一个视频文件,不支持批量上传。如果需要批量变速,可以逐个上传处理,但浏览器端每次处理会占用大量内存,连续处理多个大视频可能导致浏览器崩溃。建议每个视频处理完成后先关闭页面释放内存,再处理下一个。如果经常需要批量处理,推荐用桌面端软件(如 FFmpeg 命令行写脚本)更高效。
视频变速后画面卡顿、不流畅,是什么原因?
常见原因有两个:一是原视频帧率太低(如 15fps),慢放后帧与帧间隔拉大,卡顿感明显;二是浏览器处理能力不足,尤其 4x 快放时帧率飙升,播放器跟不上。解决方法:慢放前先用工具把视频帧率提升到 30fps 或 60fps(插帧),快放时降低输出帧率到原帧率的一半。本工具不包含插帧功能,卡顿问题需外部软件配合。
变速后的视频能直接用于抖音/快手吗?有什么限制?
可以,但注意平台对视频时长和帧率有要求。抖音推荐时长 15-60 秒,帧率 25-30fps。如果原视频 3 分钟 2 倍速后变成 1.5 分钟,在抖音 60 秒限制内,需进一步剪辑。快放后帧率可能超过 30fps(如 30fps 视频 4x 后变 120fps),抖音会强制重新压缩,画质可能下降。建议变速后导出时手动限制帧率 ≤30fps,并控制在平台时长范围内。
选择 打开 +新窗口 esc关闭