把视频转换为 Funscript

用 AutoScript Sync 从视频生成 funscript,只需打开视频并按下 Generate。应用会在你自己的电脑上采样帧,测量画面中运动部分的动作,在每次方向变化处把它转换为 0 到 100 的位置,并在同一文件夹中保存 <video name>.funscript。视频从不上传。

已于 2026 年 9 月 21 日对照应用代码核实。描述的是当前版本 2.121.1。

它能打开哪些视频文件

Open Video 对话框列出 MP4、MKV、AVI、MOV 和 WMV,并有 All Files 选项。拖放、Batch Generate Folder 和 Play Folder as Playlist 还支持 WebM 和 M4V。

没有固定的编解码器列表。分析时,应用通过 OpenCV 内置的 FFmpeg 解码,先请求硬件解码(使用你的显卡驱动提供的任何加速器),如果编解码器、驱动或第一帧不配合,就退回到软件解码。播放时使用 VLC,嵌入在应用自己的窗口中。所以只要该 FFmpeg 和你安装的 VLC 能读取某个文件,它就能播放和转换;我们没有测试过、也没有发布编解码器列表。

VR 视频同样可用。分析前,应用会检测左右并排或上下排列的格式,以及鱼眼或等距柱状投影,并把一只眼睛的中心视图展开成普通的平面画面。这种检测是基于少量采样帧的启发式判断。

视频经历了什么,一步一步说明

下面的一切都在你的电脑上运行。分析代码中没有任何网络调用,不会有视频、帧或缩略图通过互联网发送。

Conversion stages: decode and sample, find the moving region, measure motion, build the position trace, place points at reversals, save the .funscript Decode, sampleevery Nth frame, 320 px Find moving regionor use yours Measure motionflow, pose, depth Build position tracefuse, fill gaps Place pointsat each reversal Save .funscriptbeside the video
一次 Generate 运行的六个阶段。其中没有任何一步使用互联网。
  1. 解码并采样。Accuracy 决定分析哪些帧:Fast 为每 4 帧取 1 帧,Balanced(默认)为每 3 帧取 1 帧,High 为每 2 帧取 1 帧。无论源分辨率是多少,每个采样帧都会缩小到 320 px 宽。一个工作线程提前解码,使解码和分析同时进行。
  2. 找到运动区域。除非你自己画了区域,否则引擎会建立一张动作持续发生位置的热图,取最热的区域并向外扩展 15%。场景切换通过帧与帧之间的突变来识别。
  3. 测量动作。DIS 光流测量区域内的运动。如果安装了姿态和深度模型,身体关键点和朝向或远离镜头的读数会提供更多候选位置信号。后台还会读取视频自身的运动矢量和音轨的响度包络,每项都有时间限制,所以在长影片上它们可能只覆盖其中一部分。
  4. 建立位置轨迹。测得的运动被积分为随时间变化的位置,并与一个锚点融合,该锚点由对该视频得分最高的位置信号构建。在追踪中断的地方,会按周围行程的节奏延续运动来填补空缺,有音频节拍时还会与节拍保持一致。第二轮处理可以用完整帧率重新读取少数被标记的时段(最多四个)。
  5. 放置点。每个 2 秒窗口按动作类型标注,行程幅度随画面运动的快慢而变化,并经过你选择的强度曲线(默认为 Smoothed)。每次方向变化处放置一个点,所以没有固定的点速率。
  6. 保存。脚本写在视频旁(见下一节)。

各阶段背后的 AI 模型更深入地解释了光流、姿态和深度部分。

适合转换的视频,以及不适合的视频

由于引擎依据测得的运动工作,当你想生成脚本的动作是画面中最主要的运动并且始终可见时,效果最好。

转换效果好

  • 画面某一区域中一个清晰、重复的运动。运动热图挑出的正是这种运动。
  • 稳定的节奏。空缺填补和节奏整理依赖周围的行程,所以规律的运动能挺过短暂的中断。
  • 慢到中等的节奏。在较慢的场景中,行程幅度与手工制作的脚本接近。

转换效果差,以及该怎么办

  • 有其他东西运动得更明显。区域查找会跟随最强的运动,而那可能不是你关心的部分。用 Set Motion Region… 自己画出区域,或者用 Live Track 在视频播放时移动一个框;轨迹会以 .roitrack.json 文件保存在视频旁。
  • 动作被遮挡。追踪中断时,空缺按节奏填补而不是实测。被填补的比例会被记录下来,比例较高时质量报告会发出警告。
  • 非常快的动作。快节奏场景中行程会偏小,采样率越低越明显。试试 High,或者在时间轴上对该段使用 Amplify。
  • 长时间没有动作。动作范围之外的片头和片尾会保持静止,但在动作范围内,引擎往往会在人工会让脚本静止的地方继续生成行程。请在时间轴上删除这些点。
  • 几乎静止的视频。如果显示真实运动的采样少于 5%,应用会拒绝生成脚本,并告诉你视频看起来是静止的。

.funscript 写在哪里

<video name>.funscript
Generate 之后,以及 Batch Generate Folder 处理完每个文件之后,自动保存在视频所在的文件夹中。下次打开该视频时,应用会自动载入它。
<video name>.funscript.bak
执行 Generate 时,任何已使用该名称的脚本都会先复制到这里。只保留一个备份;下一次 Generate 会替换它。
<video name>_as_played.funscript
仅当你选择 File → Export Script (as played) 时生成:固化了你的行程设置,供其他播放器使用。
%USERPROFILE%\.autoscript_sync\logs\gen_*.json
每次 Generate 或每个批处理文件生成一份诊断报告,保留最近的 40 份。它记录视频的文件名,从不记录其所在文件夹或任何内容。

Generate + Play(即时)不会保存脚本;如果想保留它生成的内容,请使用 File → Save Funscript As…。Funscript 生成器概览介绍了运行转换的三种方式。

如何检查结果

  • 播放。在应用的播放器中带着脚本观看视频,连接或不连接设备均可。
  • 查看时间轴。留意应有动作却平直的时段、空闲时段中的行程,以及行程看起来过浅的时段。选中有疑问的时段,用 Re-analyze 以完整帧率重新分析。
  • 打开质量报告。Help → Last Generation Quality… 显示实测与填补各占多少、追踪漂移和恢复情况,每项都附带可采取的措施。只有在出现警告时它才会自动打开。
  • 检查文件。Funscript 校验器会在你的浏览器中检查 JSON、时间戳、位置和速度。
  • 绘制运行图表。Report Studio 会打开脚本及其 gen_*.json 报告,绘制行程频率、速度以及 AI 识别出的内容。它无法打开 Export Diagnostics 生成的 .zip;请先解压。

如果转换出了问题

  • 脚本跟随了错误的动作:用 Set Motion Region… 或 Live Track 手动设置区域,然后再次 Generate。新的区域意味着要重新完整分析视频,所以预计耗时与第一次运行差不多。
  • 生成非常慢:AI 可能在 CPU 上运行。按下 Check GPU,查看分析是否真的在你的显卡上运行。
  • 文件无法打开或播放:尝试换一种容器格式或重新编码;解码依赖 OpenCV 的 FFmpeg,播放依赖 VLC。
  • 设备感觉滞后:调高 Offset(−5000 到 +5000 ms,步长 50 ms,按视频记忆)。Funscript 故障排除介绍了其他播放问题。

常见问题

4K 视频比 1080p 视频耗时更长吗?

无论源分辨率如何,分析本身都在每个采样帧的 320 px 宽副本上运行(High 会对追踪区域额外进行一次 640 px 的运动测量),所以每帧的 AI 工作量几乎不变。不过解码更大的文件仍然更耗时,我们还没有发布按分辨率划分的耗时数据。

转换需要联网吗?

不需要。分析离线运行。互联网用于分析之外的事情:激活许可证、检查更新、下载模型,以及 Autoblow AI Ultra 的云端。

我可以转换整个文件夹吗?

可以,使用 File → Batch Generate Folder。它会跳过已有脚本的视频,并且不查找子文件夹。

每一帧都会被分析吗?

不会。即使 High 也是每 2 帧分析 1 帧。你可以在时间轴上选中一段,用 Re-analyze 以完整帧率重新分析。

延伸阅读

转换一个你自己的视频

免费试用可在你的电脑上运行完整应用一天;许可证一次付费 £14.99。