有没有办法在流媒体MediaPlayer
上更改默认缓冲区大小?
缓冲区大小已经内置在固件中。您所能做的就是关注缓冲区填充的程度,而即使如此,也仅限于按百分比计算。
很抱歉!
大小设置在frameworks/base/media/libstagefright/include/NuCachedSource2.h
kDefaultHighWaterThreshold和kDefaultLowWaterThreshold在Android 2.3.7和Android 4.0.4之间有所增加,缓冲区大小增加了8倍,如此线程所述: Android - MediaPlayer Buffer Size in ICS 4.0
您需要一个自定义ROM。
Android 2.3.7
enum {
kPageSize = 65536,
kHighWaterThreshold = 5 * 1024 * 1024,
kLowWaterThreshold = 512 * 1024,
// Read data after a 15 sec timeout whether we're actively
// fetching or not.
kKeepAliveIntervalUs = 15000000,
};
安卓4.0.4
enum {
kPageSize = 65536,
kDefaultHighWaterThreshold = 20 * 1024 * 1024,
kDefaultLowWaterThreshold = 4 * 1024 * 1024,
// Read data after a 15 sec timeout whether we're actively
// fetching or not.
kDefaultKeepAliveIntervalUs = 15000000,
};
如果你在意这个问题,那么你可能会对这个故障报告感兴趣 https://code.google.com/p/android/issues/detail?id=29870
public boolean setParameter(int key, int value)
。如果你已经知道了key的值(我对RK设备有这些值),那么你就可以用它来实现这个目标。不幸的是,尽管该方法是public的,但我找不到调用它的方法,但我会找到的,一定有办法! - paulgavrikov