游戏卡关逐帧复盘
凌晨 2 点,主播「夜行猫」在《只狼》弦一郎二阶段连续暴毙 17 次,弹幕都在刷「这刀怎么中的」。他把最后 3 秒的死亡回放录屏丢进工具,调速到 0.25x 逐帧看 boss 起手动作,发现是自己贪了一刀硬直没取消。0.25x 下看清了 BOSS 左手小拇指的预判抽搐,下次再打就过了。
| 分辨率 | — |
|---|---|
| 文件大小 | — |
| 输出 | — |
变速原理 / 诚实标注:本工具纯前端,采用
「设 video.playbackRate = N 变速播放 → canvas 逐帧重绘 → captureStream(视频轨 + 音频轨)→ MediaRecorder 重录」,
输出为变速 webm(画面重新编码,时长 = 原时长 ÷ N,音视频同步)。
音频随速度变调(快放升调、慢放降调,与浏览器变速一致)。
如需变速不变调或 MP4 输出,请用专业工具 / FFmpeg
(ffmpeg -i in.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" out.mp4)。
重录需保持本页面前台播放至结束。
剪辑时一段素材节奏不对,从头到尾重拖时间线太费事。这个工具用 FFmpeg 的 setpts 滤镜处理视频,0.25x 到 4x 之间任意倍数变速,输入原文件、选好倍率、点开始,几秒后下载结果。处理在浏览器本地完成,不上传任何内容到服务器。
凌晨 2 点,主播「夜行猫」在《只狼》弦一郎二阶段连续暴毙 17 次,弹幕都在刷「这刀怎么中的」。他把最后 3 秒的死亡回放录屏丢进工具,调速到 0.25x 逐帧看 boss 起手动作,发现是自己贪了一刀硬直没取消。0.25x 下看清了 BOSS 左手小拇指的预判抽搐,下次再打就过了。
初三物理老师老陈录了道浮力压轴题的讲解,讲到一半发现板书写错了,重录要 20 分钟。他把出错片段用工具减速到 0.5x,然后在错误处用画图软件叠一层修正框,再加速回 2x 拼回去。最终视频 3 分钟讲完,学生回放时 0.5x 看修正部分,2x 跳着看已知内容。
婚礼策划师小马剪接亲视频,音乐高潮在第 37 秒,但素材里新郎单膝跪地的瞬间在第 39 秒。差 2 帧,音乐和画面错位。他用工具把第 37-41 秒片段提速到 1.05x,把跪地动作挤回高潮点前 0.1 秒。4x 加速用在宾客大笑的废片上,把 3 分钟素材压到 45 秒,正好配一首歌。
小区地库剐蹭,物业给的监控录像 2 小时长,肇事车只出现了 7 秒。车主老周把录像拖进工具,直接 4x 快进到可疑时段,再切到 0.25x 逐帧看车牌。原本要盯 2 小时的素材,15 分钟就锁定了对方倒车时右后轮压过减速带的帧,车牌号清晰可见。
健身教练阿杰要教学员「引体向上肩胛下沉」的发力感。他把自己示范的 3 秒动作拍成 1080p 60fps 视频,用工具减速到 0.25x,得到 12 秒慢放。学员能看清肩胛骨从「耸肩」到「下沉」的 0.8 秒过渡,再配合 2x 快速看完整动作节奏。一堂课下来 5 个学员都找到了发力点。
| 输入 | 输出 | 说明 |
|---|---|---|
| 原视频时长 60 秒,变速倍率 2x | 新视频时长 30 秒 | 常规:典型加速场景,验证 setpts 按倍率线性缩放时长 |
| 原视频时长 60 秒,变速倍率 0.5x | 新视频时长 120 秒 | 常规:典型慢放场景,验证减速后时长翻倍 |
| 原视频时长 60 秒,变速倍率 4x | 新视频时长 15 秒 | 边界:工具支持的最大加速倍率,验证极限值下的时长计算 |
| 原视频时长 60 秒,变速倍率 0.25x | 新视频时长 240 秒 | 边界:工具支持的最小减速倍率,验证极限慢放下的时长 |
| 原视频时长 60 秒,变速倍率 1x | 新视频时长 60 秒 | 边界:1x 倍率相当于不变速,验证工具是否正确处理(不应报错或改变时长) |
| 原视频时长 60 秒,变速倍率 0.8x | 新视频时长 75 秒 | 易错:非整数倍率(0.8x),验证小数倍率计算精度(60 ÷ 0.8 = 75) |
| 原视频时长 60 秒,变速倍率 3.5x | 新视频时长 17.14 秒 | 易错:非整数倍率(3.5x),验证加速时小数倍率处理(60 ÷ 3.5 ≈ 17.14) |
1.变速参数超出工具范围
setpts=0.1 或 setpts=5.0setpts=0.25 或 setpts=4.0FFmpeg 的 setpts 滤镜本身支持任意浮点数,但本工具限定 0.25x~4x 以保证输出质量与浏览器兼容性;超出范围的参数会被拒绝或产生不可用结果。
2.忘记 setpts 是时间缩放,不是速度倍数
想 2 倍速,写成 setpts=2setpts=0.5setpts 是 Presentation Timestamp 缩放因子:值越小播放越快。2 倍速需将时间压缩一半,所以 setpts=0.5;直接写 setpts=2 会变成 0.5 倍慢速。
3.变速后音频视频不同步
只写 setpts=0.5,不处理音频同时使用 atempo=2.0 或 -af "atempo=2.0" 同步变速setpts 只调整视频时间戳,音频流仍按原速度播放。必须用 atempo 滤镜(范围 0.5~2.0)同步缩放音频时长,否则音画错位。
4.atempo 超出范围导致命令失败
想 4 倍速,直接写 atempo=4.0链式调用:atempo=2.0,atempo=2.0 或使用 rubberband 滤镜FFmpeg 的 atempo 滤镜官方限制 0.5~2.0,直接写 4.0 会报错。超过 2.0 倍需级联两个 atempo=2.0 或换用 rubberband 高质量变速。
5.输入文件路径包含空格或中文未处理
ffmpeg -i my video.mp4 ...ffmpeg -i "my video.mp4" ... 或转义空格Shell 中空格会被解析为参数分隔符,导致文件找不到。必须用双引号包裹路径或使用反斜杠转义空格,否则 FFmpeg 报 'No such file or directory'。
6.输出格式与变速不兼容
输出为 .gif 并直接使用 setpts=0.25先输出临时 MP4,再用 palettegen 转 GIF 或使用 -vf "setpts=0.25,fps=15"GIF 不支持可变帧率,直接 setpts 会导致动画卡顿或帧丢失。应固定输出帧率(如 fps=15)或先转中间格式再转 GIF。
7.变速后文件体积异常增大
4 倍速输出不指定码率,原码率 10Mbps 输出仍 10Mbps加 -b:v 2M 或使用 -crf 28 降低码率setpts 不改变编码参数,变速后时长缩短但码率不变,文件体积不会按比例缩小。需手动调整码率或 CRF 值以匹配新时长。
new_pts = original_pts × (1 / speed_factor)
new_pts变速后帧的 PTS 值original_pts原始帧的 PTS 值speed_factor速度倍数,0.25–4.0一段 10 秒视频,原始帧率 30 fps,共 300 帧。原始 PTS 序列为 0, 1/30, 2/30, … 秒。设置 speed_factor = 2.0(2 倍速),则新 PTS = 原始 PTS × (1/2.0)。第 60 帧原始 PTS = 60/30 = 2.0 秒,新 PTS = 2.0 × 0.5 = 1.0 秒。最终视频时长缩短为 5 秒,帧数不变(300 帧),但帧间距变为 1/60 秒,播放速度翻倍。
本工具仅处理视频画面变速(setpts),音频默认保持原速,因此快放时声音会变尖锐,慢放时变低沉。如果需要保持音调不变,建议先用其他工具分离音频,变速后再用音频编辑软件(如Audacity)做音调修正(时间伸缩+音高保持),最后重新合成。目前纯浏览器WASM方案暂不支持实时音频变调补偿。
卡顿通常源于原视频帧率较低(如15fps),快放后帧率不变但视觉信息密度增加,导致解码压力大。音画不同步多因音频流未做对应拉伸——本工具只改视频时长,音频时长不变,若原视频音画时长严格对齐,变速后必然错位。建议先检查原视频时长(在播放器属性里看),若音画不同步明显,可先用格式工厂等工具将音频转为与视频相同时长。
纯浏览器WASM方案受限于浏览器内存上限(通常2GB),4K视频(3840x2160)单帧约25MB,即便10秒视频也有数百MB,极易触发浏览器崩溃。建议先压缩至1080p或更低分辨率再上传。服务端Go处理版无此限制,但需自行部署。当前在线版实测稳定处理1080p、30秒以内的视频。
本工具滑块范围0.25x~4x,对应setpts参数4.0~0.25。如需更慢(如0.1x),可手动输入setpts=10.0(需懂FFmpeg命令行);更快(如8x)则setpts=0.125。但注意:极慢速下视频文件体积会膨胀(时长增加),极快速下关键帧可能丢失导致播放器无法拖动进度条。建议先用本工具确认效果,再用FFmpeg微调。
体积变化取决于变速方向和编码设置。快放(如2x):时长缩短,但FFmpeg默认保持原比特率,体积会按比例缩小(约原来50%)。慢放(如0.5x):时长翻倍,若比特率不变,体积约翻倍。本工具未做二次压缩,建议上传前用其他工具调整目标比特率(如用HandBrake的恒定质量RF值),避免慢放后文件过大。
本工具底层FFmpeg支持绝大多数常见格式(MP4、AVI、MOV、MKV、WebM等),但若视频编码为H.265(HEVC)或AV1,浏览器WASM解码可能失败——这些编码需硬件加速或专用解码器。建议先用格式工厂转码为H.264编码的MP4再上传。另外,带杜比视界或HDR元数据的视频也可能因色彩空间不兼容报错。
假设原素材用高速摄影拍摄(如240fps),想输出为30fps的常速视频,倍率 = 拍摄帧率 / 目标帧率 = 240/30 = 8x。但本工具最大4x,无法一次完成。可先用其他工具降帧率(如将240fps转为60fps),再用本工具2x加速。注意:降帧率会丢失中间帧,建议用光流法插帧工具(如Flowframes)补帧后再加速。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。