我正在尝试使用 OBS 进行离线录制,但当我将其写入传统硬盘时,即使硬盘的写入速度足够快(+40MB/s),它也会出现严重滞后。我尝试在相同的设置中增加缓冲区,但它们似乎与输出 IO 无关。到目前为止,我找不到任何可以提供帮助的 OBS/ffmpeg 设置。如何解决这个问题?
日志:https://paste.fedoraproject.org/paste/L9LoUWC0VRGdxGSYESD2kw
系统信息转储:https://paste.fedoraproject.org/paste/~OrQZas9rYhaHTtEgJpVfg
日志显示了一个简单的速度测试,使用 dd(通过 WSL)和 OBS 日志显示了两个记录,唯一的区别是保存位置。如图所示,录制到 HDD(D:)滞后/丢失帧数相当多。相比之下,第一次录制到 SSD 的工作正常。请注意,OBS 没有记录skipped frames due to encoding lag
第一次录制,因为它没有出现问题。
我做到了:
- 测试几次,以便日志显示一个有代表性的示例。
- 使用不同的缓冲区大小进行编码测试,没有效果。
- 如果是 CBR,则用 CRF 而不是 CRF 进行测试。
- 尝试了较低的比特率。在 10k 比特率下已经可以看到不太严重的延迟。
要明确的是:
- 没有 CPU 瓶颈。
- 没有 HDD 整体写入速度瓶颈(60k 比特率约为 8 MB/s,还可以)。
我认为问题是:写入延迟太高而输出缓冲区太小,这可能是 OBS 或 ffmpeg 中的错误,或者只是我不知道的缺少设置。
我问了这个问题r/观察前。
更新:增加了系统信息转储和额外的记录日志信息。
答案1
如果它走路像鸭子、叫声也像鸭子……
问题在于 USB2 连接及其末端的驱动器。
虽然 USB2 比某些东西更快,但它比大多数东西慢,并且通常不足以进行任何实时媒体操作。
您的指标可能表明带宽足够,可能的原因是纯数据流没有考虑到通过该链路来回的所有通信,并且测试通常经过优化并且不代表真实世界的数据类型和情况。
USB3 驱动器可能足以满足您的要求。