Android 更改MediaPlayer上的缓冲区大小

Android 更改MediaPlayer上的缓冲区大小,android,Android,是否有任何方法可以更改流媒体MediaPlayer上的默认缓冲区大小?缓冲区大小将烘焙到固件中。您所能做的就是记录缓冲区的填充量,甚至只是以百分比为基础 对不起 流式传输实时内容时会出现问题,例如:实时互联网广播。作为直播内容,我无法计算任何内容,因为曲目长度是无限的,MediaPlayer中的onBuffering方法从未被调用 我的目的是根据比特率因素设置一个缓冲区,以优化资源并增加它以防止3G断开连接。嗯,我真的无法阻止3G断开连接,但我想说的是,我可以延长连接时间,让流媒体对最终用户更加

是否有任何方法可以更改流媒体
MediaPlayer
上的默认缓冲区大小?

缓冲区大小将烘焙到固件中。您所能做的就是记录缓冲区的填充量,甚至只是以百分比为基础


对不起

流式传输实时内容时会出现问题,例如:实时互联网广播。作为直播内容,我无法计算任何内容,因为曲目长度是无限的,MediaPlayer中的onBuffering方法从未被调用

我的目的是根据比特率因素设置一个缓冲区,以优化资源并增加它以防止3G断开连接。嗯,我真的无法阻止3G断开连接,但我想说的是,我可以延长连接时间,让流媒体对最终用户更加活跃

因此,我认为我可以编写一个Java代理来连接到live内容,并根据比特率设置自己的缓冲区大小,然后在MediaPlayer上将此代理作为url传递并播放内容


但在开始编写此代码之前,我想知道是否有其他方法或其他更好的技巧可以应用于MediaPlayer来解决此问题。

这可能与您的具体问题不完全相关,但可能会帮助其他人:

我只想知道缓冲区有多大。我猜这是一个固定数量的字节,而不是一个固定数量的播放时间

要获得音频/视频缓冲区大小的估计值,您可以实现一个函数来检测缓冲区何时完全填满,并使用该函数确定流媒体在启动流和缓冲区填满之间消耗了多少字节。这应该是MediaPlayer使用的缓冲区大小的指示器…

大小在frameworks/base/media/libstagefright/include/NuCachedSource2.h中设置

kDefaultHighWaterThreshold和kDefaultLowWaterThreshold在Android 2.3.7和Android 4.0.4之间上升 缓冲区大小按因子8增长,如本线程中所述

你需要一个定制的rom

安卓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,
};
如果您介意这个问题,那么您可能对bug报告感兴趣

不是真的/只是。正如我在谷歌代码中看到的,有一个方法public booleansetParameter(int-key,int-value),如果您知道key的值(我为RK设备提供了它们),就可以这样做。不幸的是,我找不到调用此方法的方法(尽管它是公共的),但我会找到它的,一定有办法做到这一点@bluewhile你找到办法了吗?没有,我哭了,因为我输掉了几笔大交易,仅仅是因为谷歌的无知。嗨,乔希,你是如何解决这个问题的,你使用了流代理吗?