MPC-HC 中的流视频缓冲区太小,无法在用户偏好设置中进行扩展。
答案1
破解 LAV Splitter 以使用普通的旧缓冲
LAV Splitter 用于获取某些媒体播放器(例如 MPC-HC)中的网络数据。LAV 缓冲区(又称数据包队列)不是以数据量来衡量的,而是以数据包(或帧,这里不确定)来衡量的。无论如何,由于网络吞吐量受数据量限制,队列中的数据包数量会乘以factor
变量,您播放的视频(实际上是音频部分)质量越高,该变量就越大。这提供了可变长度的缓冲区,但是您无法真正控制大小,如果您的 WiFi 速度很慢,您可能会遇到播放不流畅的情况。
以下指南通过消除数据包限制并采用臭名昭著的“最大队列内存”设置来改变 LAV 缓冲区的工作方式(臭名昭著,因为您可能已经尝试过将此设置从默认的 256 MB 增加,但无济于事,就像您之前的许多人一样)。
32 位指令
mpc-hc/LAVFilters/LAVSplitter.ax
在以下位置打开文件十六进制编辑器你的选择。- 查找并用 替换唯一的
69 C5 5E 01 00 00
字节序列69 C5 FF FF 00 00
。 - 打开 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
范围从2
到120
(来源)。