Buffer size of Android stagefright media player

来源:互联网 发布:131458淘宝买家工具箱 编辑:程序博客网 时间:2024/05/22 02:21

Android的stagefright播放器在播放HLS视频的时候,会先以阻塞的方式下载m3u8文件,然后再按照m3u8文件中的定义的ts分片地址进行缓冲。

缓冲区的管理在NuCachedSource2类中完成,用异步的方式进行网络数据缓冲,(即fetching)。

缓冲区有上限和下限,用两个宏控制,如下

frameworks/base/media/libstagefright/include/NuCachedSource2.h

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,};
kDefaultLowWaterThreshold越大,说明播放前的缓冲时间越长。https://code.google.com/p/android/issues/detail?id=29870
kDefaultKeepAliveIntervalUs 说明如果15s内收不到数据,就需要重启链接

0 0