这次不聊怎么打 osu!,聊怎么把打出来的东西剪成能发的视频。标题里写得很直白:两个 aim slop 400pp。aim 指 osu! 里快速定位光标的那类操作,slop 可以理解为随手一打但效果在线的发挥,400pp 是表现分(Performance Points)的近似段位,社区里也习惯把 pp 念成“屁屁”。所以这一串标题翻译过来就是:“一次直播里出现了两段靠瞄准拿下高 pp 的片段,我把它剪成 clip 了”。
这类片段大多数玩家都碰到过:直播间刚打完一把高 pp,想发出去,结果要翻半小时录像、拖进度条、找切点、再手动转码。素材多了以后,这种重复劳动非常消耗时间。比运气更值得复用的,是一套能反复工作的切片流程:直播时用 OBS 的回放缓冲把亮点提前“握住”,事后用 osu! 回放文件重渲染画质更高的画面,再用 ffmpeg 批量精切,最后统一转码发布。
这篇文章会把这条链路完整过一遍,包括录制端怎么配置、回放缓冲怎么用、.osr 回放文件怎么处理、ffmpeg 修剪命令怎么写、批量任务怎么组织,以及常见的翻车点和排除思路。设备要求不高:能流畅直播 osu! 的电脑基本就能跑这套流程,关键在编码器选型和分辨率设置。适合两类读者:一类是做游戏直播切片的人,另一类是手里攒了大量录屏素材、想搞半自动视频剪辑工具链的人。
1. 核心能力速览
在拆步骤之前,先把这条“osu! 直播 clip 工作流”的能力边界和工具构成列出来,方便判断它适不适合自己的场景。
| 能力项 | 说明 |
|---|---|
| 任务类型 | osu! 直播素材采集、回放重渲染、片段精切、批量转码 |
| 核心工具 | OBS Studio、osu! 稳定版/Lazer、FFmpeg、可选剪辑软件 |
| 硬件门槛 | 能正常推流或录屏 osu! 的电脑即可;转码环节优先考虑带 NVENC/AMF/Intel QSV 的显卡 |
| 显存占用 | 不固定,取决于编码器、分辨率、OBS 滤镜数量,需要本机实测 |
| 支持平台 | Windows 为主;OBS 和 FFmpeg 都提供跨平台版本 |
| 启动方式 | OBS 界面配置 + 命令行 ffmpeg;可以写成脚本一键运行 |
| API/自动化能力 | 可通过 obs-websocket 做自动化打点,FFmpeg 本身支持脚本化批处理 |
| 批量任务 | 支持:同目录素材批量粗切、精切、转码、统一命名 |
| 输出格式 | MP4、MKV + H.264/H.265 + AAC 是常见组合 |
| 适合场景 | 游戏直播切片、osu! 回放视频制作、素材库整理、日常内容发布 |
需要注意,OBS 的具体菜单结构、FFmpeg 各显卡编码器的名称会随版本变化,表格里不写死版本号,实际配置时以本机安装的版本为准。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 适用场景与使用边界
这条工作流的核心思路是“录制时不存全部,剪片时不手工翻”。它适合这些场景:
- 直播 osu! 或者其他节奏类游戏,想快速把几次高光发挥剪成短视频。
- 手里已经有大量本地录屏素材,想用命令脚本批量截取指定时间区间。
- 觉得录屏画质不够、想用 osu! 回放文件重新渲染出一版更干净的素材。
- 想把“直播记录”转成适合发布的“二次创作内容”,并且希望流程可重复。
它不适合的场景也很明显:如果你要做的是剧情向长视频、需要大量转场特效、花字包装和多层字幕的正式节目,FFmpeg 裸命令工作流会显得太原始。这类需求应该回到剪映、Premiere 或者 DaVinci Resolve 去完成。本文的定位是“快速切片和批量预处理”,不是替代全套非编软件。
使用边界这块必须多提一句。做直播切片时,优先选择自己的直播内容进行剪辑。如果素材来自他人直播、比赛转播或者多人的联机录屏,发布前要确认授权关系;背景音乐和音效同样需要留意版权。涉及人物肖像、语音的片段,也要考虑当事人的知情和授权。工具本身没有合规属性,但用工具做出来的内容是否有授权,就是你自己的责任了。
3. 环境准备与前置条件
这套工作流不依赖某个重型运行时,主要准备三端:录制端、osu! 回放端、剪辑处理端。
3.1 录制端
录制端指 OBS Studio。建议从官网安装较新的稳定版,游戏内画面捕获、窗口捕获和显示器捕获按自己的直播习惯选一种。这里优先推荐“游戏捕获”或“窗口捕获”,因为 osu! 的窗口大小固定,窗口捕获的资源开销更小。
音频方面,如果你直播时用的是麦克风、游戏声音分开的音频方案,录像里最好也保留多音轨。OBS 支持把桌面音频和麦克风分别放进不同的轨道,这一步在切片阶段很有用:想让某个片段不带解说声音,直接从音轨层面处理,而不是在画面里重混。
3.2 osu! 回放端
osu! 稳定版的回放文件是 .osr 格式,默认存放在游戏安装目录下的 replays 文件夹里。如果你用的是 Lazer,回放管理方式不太一样,导入和导出的入口也不同。无论哪个版本,建议都确认一下自己的回放文件能不能被当前客户端读取,版本不一致时回放经常打不开。
回放文件的价值在于:录像画面是压缩过的,而回放可以在游戏客户端里重放一次,你可以换皮肤、关闭点击特效、放大局部、调整光标轨迹的显示效果,再用录屏软件把回放窗口采下来。对 osu! 切片来说,这是提升画面干净度最直接的手段。
3.3 剪辑处理端
FFmpeg 是这套流程的核心执行工具。Windows 用户可以从官方构建站点或可靠的发行渠道获取,安装后记得把可执行文件路径加入系统 PATH。建议先用下面这条命令确认基本功能正常:
bash复制ffmpeg -version
如果只输出版本号而没有报错,说明基础环境可用。
另外,如果需要跑批量脚本,建议安装 Python 3。脚本里只需要 subprocess 和 pathlib 标准库,不需要额外安装第三方包。
磁盘空间按录制码率估算。以常见的 1080p 直播录像为例,码率越高文件越大;如果走 CQP 或 CRF 质量模式,文件大小会随画面复杂度波动。基本公式是:码率(Mbps) × 时长(秒) ÷ 8 = 文件大小(MB)。录制素材、粗切文件、精剪文件最好分目录存放,避免一个目录越来越难维护。
4. 直播录制与亮点捕捉
4.1 OBS 录制参数先调稳
正式直播前,先把录制参数调稳。常见做法是:
- 输出模式选“高级”。
- 编码器根据显卡选择:NVIDIA 用 NVENC,AMD 用 AMF,Intel 核显用 QSV,也可以直接用 x264 走 CPU 编码。
- 录制格式建议用 MKV,而不是 MP4。MKV 在断电或 OBS 崩溃时不容易损坏文件,后续可以无损转封装成 MP4。
- 直播推流和本地录制建议分开配置。推流码率按平台限制走,本地录制按画质需求走。
这部分不要照抄某个版本的按钮名称,OBS 版本更新较快,以实际界面为准。
4.2 用回放缓冲代替全程录屏
很多新手做切片时开着“全部录像”录一整场直播,结果一个小时直播产生几十 GB 文件,真正用到的只有十几秒。更好的办法是开启 OBS 的“回放缓冲”(Replay Buffer)。
回放缓冲的原理是:OBS 在后台持续缓存最近 60 到 120 秒的画面和声音,默认不落盘。当你按下保存快捷键时,它才把缓存内容写入文件。这把“录一整场”变成了“只保存亮点前一分钟”,硬盘压力小很多。
配置里需要做两件事:设置缓冲时长,绑定一个保存快捷键。比如打完一把 400pp 的图上显示成绩后,立刻按保存键,OBS 会把成绩结算的前 60 秒写入素材目录。
这一段是整套切片工作流里性价比最高的改进。它不增加设备成本,只是改变录制习惯,却能让素材量减少一个数量级。
4.3 回放文件重渲染
回放缓冲保存的是直播画面,画质上限由直播参数决定。如果想获得更干净的 osu! 画面,可以在打完之后立刻在 osu! 客户端里用回放重看这一段,或者找到对应的 .osr 文件,在客户端里重新播放。
回放重渲染的目的不是取代剪辑,而是生产一版“干净素材”。建议关闭 osu! 界面里的聊天、暂停提醒和多余 UI,只保留游玩画面和击打效果,再用 OBS 把回放窗口录制下来。对比录屏压缩后的画面,回放重采通常能获得更锐利的判定框和更稳定的帧率。
如果 Lazer 版本提供原生导出功能,可以直接用导出结果;如果只有 .osr 文件,就回到“播放回放 + OBS 录屏”的组合。
5. 用 FFmpeg 做精切与转码
假设你已经拿到了一个原始素材文件,无论是 OBS 直接录制,还是重渲染回放得到的录屏,下一步就是用 FFmpeg 剪出需要的片段。
5.1 精确重编码裁剪
先看最基本的裁剪命令。-ss 指定开始时间,放在 -i 前面可以快速定位,-t 指定持续时间。重编码是为了让切点精确到帧,并统一输出编码参数。
bash复制# 从素材 12 分 30 秒开始,裁剪 20 秒,重编码为 H.264 的 MP4
ffmpeg -ss 00:12:30 -i RAW_20250101_2030.mkv -t 20 \
-c:v libx264 -preset medium -crf 18 -pix_fmt yuv420p \
-c:a aac -b:a 192k \
clip_aim_400pp.mp4
-crf 18 是画质相对较高的档位,数值越小画质越好、文件越大。正式发布前可以先用 23 左右测试体积和画质的平衡。
5.2 无损快速粗切
如果你是先从一段长视频里挑多个候选片段,第一轮可以用流复制模式快速切,速度非常快,不重新编码所以没有画质损失:
bash复制# 流复制模式,几乎不消耗 CPU,适合大批量粗选
ffmpeg -ss 00:12:30 -i RAW_20250101_2030.mkv -t 20 \
-c copy -avoid_negative_ts make_zero rough_cut_01.mkv
缺点也很明确:切点会被对齐到最近的关键帧,精确度不如重编码。所以“先用流复制粗筛,再用重编码精修”是比较好的搭配。
5.3 硬件加速转码
如果你的显卡支持 NVENC、AMF 或 QSV,FFmpeg 可以调用硬件编码器,速度比 x264 快很多。NVIDIA 环境下常见写法是 h264_nvenc:
bash复制# 使用 NVIDIA NVENC 加速编码,注意编码器名以 ffmpeg -encoders 输出为准
ffmpeg -ss 00:12:30 -i input.mkv -t 20 \
-c:v h264_nvenc -preset p5 -cq 23 -pix_fmt yuv420p \
-c:a aac -b:a 192k output.mp4
不确定本机支持哪些编码器时,先运行 ffmpeg -encoders 查看列表。硬件加速编码在批量任务里体验差距很大,建议优先确认。
5.4 音频简单处理
如果录制时游戏声音和麦克风混在同一根音轨,切片后声音没有大问题就不用处理。但如果你希望去掉麦克风杂音、降低噪声,可以在重编码裁剪时加一个音频滤波器:
bash复制# 音频高通滤波 80Hz 以下,低通滤波 12kHz 以上,去除部分低频噪声和高频杂音
ffmpeg -i input.mp4 -c:v copy -af "highpass=f=80,lowpass=f=12000" -c:a aac output.mp4
实际操作时滤波参数需要听感调整,不要照搬;高切太多会让游戏高频音效发闷。
6. 批量切片的工程化组织
当素材量多起来后,手工敲命令就不现实了。把任务拆成“输入清单 + 脚本执行 + 输出目录”,批量处理就会稳定很多。
6.1 目录结构
建议按下面的方式组织素材目录:
text复制osu_clips/
├── raw/ # 原始录制文件
├── rough/ # 粗切结果
├── final/ # 精剪输出
├── replays/ # .osr 回放文件
└── script/ # 批处理脚本
所有原始录制文件只进 raw 目录,粗切结果放 rough,最终发布版本放 final。这样即使剪辑脚本改坏了,原始文件也不会被覆盖。
6.2 Python 批量裁剪脚本
下面是一个最小可用的 Python 脚本模板。它遍历一个列表,对每个条目调用 FFmpeg 裁剪,并输出日志。你可以把它改成读取 CSV 时间戳文件,也可以加入失败重试逻辑。
python复制# 批量切片脚本,核心是调用 FFmpeg 子进程
import subprocess
from pathlib import Path
clips = [
{"input": "raw/20250101_2030.mkv", "start": "00:12:30", "duration": "20", "name": "aim_1"},
{"input": "raw/20250101_2030.mkv", "start": "00:31:40", "duration": "18", "name": "aim_2"},
]
for c in clips:
out = Path("final") / f"{c['name']}.mp4"
cmd = [
"ffmpeg", "-y",
"-ss", c["start"],
"-i", c["input"],
"-t", c["duration"],
"-c:v", "libx264", "-crf", "18", "-preset", "medium",
"-c:a", "aac", "-b:a", "192k",
str(out)
]
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode == 0:
print(f"完成 {out}")
else:
print(f"失败 {out}: {result.stderr[-500:]}")
脚本里的 -y 参数会在输出文件已存在时自动覆盖,避免重复运行时报错中断。
6.3 从长视频里自动查找候选片段
如果你没有用回放缓冲,只有一整段数小时的直播录像,可以用 FFmpeg 的静音检测功能辅助定位“可能有亮点”的片段。思路是:直播过程中,如果玩家安静下来、游戏声音突然变弱,往往对应结算界面或者关键场景切换。
bash复制# 检测音量低于 -30dB 且持续 5 秒以上的位置,输出时间点
ffmpeg -i raw_input.mkv -af "silencedetect=noise=-30dB:d=5" -f null -
输出里的 silence_start 和 silence_end 就是候选时间点。这个方法不精确,但可以帮你把几小时的素材缩小到几个候选区间,再结合时间戳清单做精切。
6.4 接入直播自动化打点
OBS 可以通过 obs-websocket 暴露控制接口,直播时如果按下某个组合键,自动触发回放缓冲保存并写入自定义文件前缀。这已经超出了本文的纯 FFmpeg 范围,但对高频切片创作者来说是进阶方向。需要说明的是,obs-websocket 的版本和协议联动方式会发生变更,接入前要查阅当前版本的接口文档。
7. 资源占用与性能观察
如果你观察这套流程的资源占用,重点看三个环节:录制环节、FFmpeg 转码环节、批量并行环节。
7.1 录制环节
OBS 录制时,CPU 占用主要来自画面合成和音频处理,编码器负载取决于你选的是 x264 还是硬件编码器。x264 的 medium 档位在 1080p 下会明显增加 CPU 占用;NVENC 等硬件编码器则把压力转移到 GPU 上,CPU 占用显著下降。
如果电脑已经开到游戏,还要直播推流,优先使用显卡硬件编码器,给游戏留出足够的 CPU 余量。注意,显存占用不是固定值,画面分辨率、滤镜数量、OBS 预览窗口都会影响显存使用,必须以本机任务管理器或 GPU 监控工具读数为准。
7.2 FFmpeg 转码环节
FFmpeg 转码时,x264 编码器是 CPU 密集型任务;跑批量任务时如果并发数过高,会导致 CPU 满载、系统卡顿。先测试单条任务,摸清耗时之后,再决定是串行跑还是限制并发数跑。
使用 NVENC 编码时,显存占用会比 CPU 编码低很多,但 GPU 的编码器是有独立硬件单元的,占用编码器资源不等于高显存占用。监控时重点看 NVIDIA-SMI 里的 encoder 使用率,而不是只看显存。
7.3 如何降低资源占用
想降低资源占用,可以按优先级做这几件事:
- 录制时用 MKV 格式,避免录制中断损坏文件,省掉反复重录的成本。
- 用回放缓冲替代全程录屏,从根本上减少待处理的素材量。
- FFmpeg 批量任务不要全量并发,建议串行或双线程。
- 剪辑阶段先用
-c copy粗切,最后只对最终片段重编码。 - 老电脑可以把 osu! 回放重渲染的分辨率降到录屏分辨率,减少 OBS 采集压力。
8. 常见问题与排查方法
运行这套流程时,最常遇到的问题集中在录制损坏、切点不准、音画不同步和回放版本不兼容。整理成一个排查表:
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 录制文件打不开 | 录制中断、视频格式损坏 | 查看 OBS 日志;尝试用播放器打开 | 录制格式改为 MKV,后期转封装为 MP4 |
| 音画不同步 | 长时间录制导致时间戳漂移 | ffprobe 查看音视频流时间信息 | 分段录制;用 FFmpeg 的 -itsoffset 微调偏移 |
| 切出来的片段画质差 | 粗切使用了流复制,精度对齐关键帧 | 检查 -c copy 输出文件 |
需要精确切点对齐时改用重编码 |
| FFmpeg 报错 Unknown encoder h264_nvenc | 显卡驱动或 FFmpeg 版本不支持 NVENC | 运行 ffmpeg -encoders 查看编码器列表 |
更换支持 NVENC 的 FFmpeg 构建版本 |
| 回放文件 .osr 打不开 | osu! 客户端版本与回放版本不兼容 | 确认回放来源版本 | 使用原版本客户端重放,或转成录屏素材 |
| 回放缓冲快捷键没有反应 | OBS 未开启回放缓冲功能 | 检查 OBS 设置页面和热键绑定 | 重新开启回放缓冲并绑定热键 |
| 批量脚本跑到一半失败 | 输出文件已存在或来源路径错误 | 查看脚本打印的错误日志 | 脚本加 -y 参数;检查输入文件名 |
| 磁盘写入跟不上导致录屏丢帧 | 机械硬盘写入速度不足 | 观察 OBS 丢帧统计 | 换到 SSD 分区录制,降低录制码率 |
以上排查项是通用思路,具体报错信息可能随 OBS 和 FFmpeg 版本变化,遇到问题先看日志,这是最快的定位方式。
9. 最佳实践与发布前检查
工具链能跑通之后,稳定性比功能丰富更重要。下面几条是这套流程用得顺手的前提。
9.1 先小参数测试
不要在直播时直接切换一套全新配置。建议先用手机或录屏软件录一段 10 分钟的 osu! 练习,跑通“录制到裁剪到输出”全流程,确认 FFmpeg 命令在当前电脑上能正常工作。第一次用 NVENC 编码的人,尤其要先验证编码器名称和输出文件能否被播放器正常打开。
9.2 保留原始素材
粗切文件、精剪文件都可以删,但 raw 目录里的原始录制和 replays 目录里的 .osr 回放文件尽量保留。一次剪辑没剪好,重新跑一遍脚本的成本很低,但如果原始文件被覆盖或删除,再想重剪就麻烦了。
9.3 文件名包含时间信息
osu! 的切片经常需要对应到某一天、某一场直播的某一个片段。建议文件名统一为“年月日_开始时间_片段名”,例如 20250101_2030_aim_400pp.mp4。批量脚本里生成这种名称比事后手动改名可靠得多。
9.4 导出参数按发布平台调整
发布到不同平台,码率、分辨率、帧率要求都不太一样。通用做法是导出 1080p、30 或 60fps、H.264 + AAC 的 MP4。如果平台支持 H.265,体积会更小但兼容性会差一些。建议在输出前用 FFmpeg 做一次响度标准化,避免游戏场景音量忽高忽低:
bash复制# 响度标准化到常见短视频平台的 -14 LUFS 附近,仅处理音频,视频流直接复制
ffmpeg -i input.mp4 -c:v copy -af "loudnorm=I=-14:TP=-1.5:LRA=11" output.mp4
9.5 发布前做授权检查
发布切片内容之前,花两分钟确认三件事:素材来源是否是你自己的直播内容;背景音乐、游戏音乐是否在平台版权允许范围内;如果拍到了其他人的语音或画面,是否获得了同意。这三点确认完,再进入发布流程。
10. 总结与下一步
这套 osu! 直播切片工作流里,最值得先试的是 OBS 回放缓冲加 FFmpeg 批处理。回放缓冲让你从“录全场”变成“只存亮点”,FFmpeg 批量脚本让你从“手工剪”变成“清单执行”。
第一步先验证回放缓冲能否稳定保存片段,第二步把 5.1 的裁剪命令跑通,第三步把 6.2 的脚本改成自己的素材路径。三步跑完,你就拥有了一个能反复使用的最小切片工作流。
最容易踩的坑有三个:录制格式选错导致文件损坏、FFmpeg 使用流复制导致切点不精确、.osr 回放文件版本不兼容打不开。这三点在本文的排查表里都有对应解法。
后续想再升级,可以往三个方向走:接入 obs-websocket 在直播过程中自动打点,用 whisper 之类工具给片段自动生成字幕,或者写一个基于音频响度的自动候选片段识别脚本。先把自己本地素材的切片流程跑顺,再考虑整套自动化,会比一开始上复杂框架稳得多。
