破解 LAV Splitter 以使用普通的旧缓冲

破解 LAV Splitter 以使用普通的旧缓冲

MPC-HC 中的流视频缓冲区太小,无法在用户偏好设置中进行扩展。

答案1

破解 LAV Splitter 以使用普通的旧缓冲

LAV Splitter 用于获取某些媒体播放器(例如 MPC-HC)中的网络数据。LAV 缓冲区(又称数据包队列)不是以数据量来衡量的,而是以数据包(或帧,这里不确定)来衡量的。无论如何,由于网络吞吐量受数据量限制,队列中的数据包数量会乘以factor变量,您播放的视频(实际上是音频部分)质量越高,该变量就越大。这提供了可变长度的缓冲区,但是您无法真正控制大小,如果您的 WiFi 速度很慢,您可能会遇到播放不流畅的情况。

以下指南通过消除数据包限制并采用臭名昭著的“最大队列内存”设置来改变 LAV 缓冲区的工作方式(臭名昭著,因为您可能已经尝试过将此设置从默认的 256 MB 增加,但无济于事,就像您之前的许多人一样)。

32 位指令

  1. mpc-hc/LAVFilters/LAVSplitter.ax在以下位置打开文件十六进制编辑器你的选择。
  2. 查找并用 替换唯一的69 C5 5E 01 00 00字节序列69 C5 FF FF 00 00
  3. 打开 LAV Splitter 设置并设置最大队列内存到 256 MB。这个值足以处理不稳定的 WiFi,而更高的值可能会导致不稳定(对我来说超过 1 GB)。但您可以随意尝试这个值。

细节

我们正在改变m_dwQueueHigh = MAX_PACKETS_IN_QUEUE * factor;[1] 行,其中#define MAX_PACKETS_IN_QUEUE 350[2] 改为m_dwQueueHigh = 65535 * factor;。这一变化有效地消除了factor限制,最大队列内存设置将不再受其限制。

如何测试?

答案来找出你的缓冲区现在有多大。你正在寻找这个Buffers: [0] <buffer-size-in-frames>/<buffer-size-in-KB> KB值。

什么时候这还不够呢?

这个 hack 基本上将缓存限制扩大了 187 倍(65535 / 350 )。在大多数情况下,这已经足够了,限制因素是你在最大队列内存。在极少数情况下,情况可能并非如此

  • 如果您播放很长的视频,缓存的帧数65535 * factor可能会低于视频文件中所有帧的数量。
  • 如果你播放质量很低的视频,frame size in MB * 65535 * factor可能会低于你的最大队列内存

factor范围从2120(来源)。

相关内容