这个项目能做什么
op-cap 是一套 Linux 工具集,用于稳定 OBS 使用的高吞吐量 USB 采集卡。它针对廉价 HDMI 采集设备的常见故障模式:随机断连、驱动挂起、缓冲区损坏以及 OBS 崩溃。
核心思路:FFmpeg 读取物理采集设备并写入 v4l2loopback 虚拟设备(默认 /dev/video10,标记为 USB_Capture_Loop)。OBS 随后从该稳定的回环设备读取,而非直接读取硬件,因此硬件挂起只会中断 FFmpeg 数据流,监控服务会自动重启它。
README 中描述的功能:
- 自动崩溃恢复:USB 设备故障时重新启动 OBS,默认无次数限制。
- 流恢复:监控日志以检测活动流,并在崩溃后重新启动它。
- 自动重连:监视设备,在断开连接时重启数据流。
- USB 重置与驱动重新绑定,无需重启即可恢复挂起的设备。
- 性能调优:禁用 USB 自动挂起并调整电源设置,附带 udev 规则指导以实现持久化。
- HDR 处理模式(auto、force HDR + tonemap、HDR passthrough、force SDR)。
- 可选的来自 URL 或文件的叠加/水印,以及用于移除屏幕标识的 delogo 和 crop 滤镜。
- 安装期间自动检测分辨率和帧率格式。
- 针对 Nvidia、AMD 和 Intel 驱动的 Wayland 图形优化,解决显式同步和 PipeWire 问题。
安装通过 make build / make install 进行,会交互式选择采集设备并安装 systemd 服务(usb-capture-ffmpeg.service、usb-capture-monitor.service)。主机别名 sobs 和 cobs 可启动带崩溃恢复的 OBS,可选择不绑定设备或先选取一个 /dev/video* 设备。
交互式维护菜单(scripts/maintenance.sh)提供九种恢复工具:detect_device、disable_overlay、hard_reset、optimise_device、pick_delogo、repair、simulate_disconnect、uhubctl_reset 和 usb_reset。其他脚本涵盖采集验证(损坏与超时诊断及回退分辨率)、设备优化、驱动优化、自动重连、格式解析以及快速参考备忘单。
配置位于 /etc/default/usb-capture,涵盖设备路径、分辨率、帧率、输入格式、HDR 模式、叠加 URL/文件/位置/缩放、delogo 开关、缓冲区验证以及带回退分辨率的损坏阈值。
安全启动器(obs-safe-launch.sh)增加了设备健康监控、带短暂稳定延迟的崩溃重启、流自动恢复、日志捕获(位于 ~/.cache/obs-safe-launch/ 下),以及用于回环、设备、自动恢复和额外 OBS 参数的标志。USB 硬件恢复需要 sudo;可选的 sudoers 安装程序会限制哪些恢复脚本可以免密码运行。
依赖项包括 ffmpeg、v4l-utils 和 v4l2loopback-dkms,可选 uhubctl 和 slop,以及用于硬件加速的 GPU 专用驱动。
评论
0 评分人数达到10人后显示
登录后参与讨论。