更改MediaPlayer上的缓冲区大小

有没有办法在流媒体MediaPlayer上更改默认缓冲区大小?

  • Android组件展示/视觉指南
  • Google Developer Console中的“等待更新”是什么意思
  • AutoCompleteTextView onItemSelectedListener不起作用
  • Android:Listview在滚动时显示错误的图像
  • 订阅API上“客户卡被拒绝”的速度令人难以置信
  • IntelliJ 12 + ActionBarSherlock设置:找不到类'android.support.v4.app.FragmentActivity'
  • 将自定义属性添加到标记(Google Map Android API V2)
  • 应用程序安装期间的未知错误代码“-505”
  • 缓冲区大小被烘焙到固件中。 您所能做的就是密切关注缓冲区的填充量,即使只是基于百分比。

    抱歉!

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

    kDefaultHighWaterThresholdkDefaultLowWaterThreshold在Android 2.3.7和Android 4.0.4之间上升。缓冲区大小增长了8倍,如此线程Android中所述 – ICS 4.0中的MediaPlayer缓冲区大小

    你需要一个自定义的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, }; 

    Android 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

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

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

    要估计音频/video缓冲区大小,可以实现OnBufferingUpdateListener以检测缓冲区何时完全填充,并使用TrafficStats确定流媒体在启动流和缓冲区已满之间消耗了多少字节。 这应该是MediaPlayer使用的缓冲区大小的指标…

    流媒体直播内容时会出现问题,例如:直播网络电台。 作为实况内容我无法计算任何东西,因为轨道长度是无限的,并且从不调用MediaPlayer中的onBuffering方法。

    我的目的是根据比特率因子设置一个缓冲区来优化资源并增加它以防止3G断开。 好吧,我真的不能阻止3G断线,但我想说我可以延长这个连接,以便让最终用户更加流畅。

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

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