http streaming 处理流程

对于http streaming,更新buffer进度的处理在AwesomePlayer::onBufferingUpdate()函数中,首先判断 mCachedSource != NULL,即是http://流媒体的情况下,通过getBitrate(&bitrate)函数取得bitrate,然后计算出buffer的 进度,通过notifyListener_l(MEDIA_BUFFERING_UPDATE, percentage)发消息,在MediaPlayer.cpp类对应MediaPlayer::notify函数接收到 MEDIA_BUFFERING_UPDATE消息,然后在应用层通过注册MediaPlayer setOnBufferingUpdateListener监听,接收到MEDIA_BUFFERING_UPDATE消息,即可以获得buffer更新 的进度值percent

1.AwesomePlayer::onBufferingUpdate()函数

计算buffer更新的percent

[cpp] view plaincopy

  1. if (getBitrate(&bitrate)) {  
  2.     LOGV("onBufferingUpdate: bitrate: %lld", bitrate);  
  3.     size_t lowWaterThreshold = (size_t) ((bitrate * kLowWaterMarkUs  
  4.             * (1.0f + kThresholdPaddingFactor)) / 8000000ll);  
  5.     size_t highWaterThreshold = (size_t) ((bitrate  
  6.             * kHighWaterMarkUs * (1.0f + kThresholdPaddingFactor))  
  7.             / 8000000ll);  
  8.     mCachedSource->setThresholds(lowWaterThreshold,  
  9.             highWaterThreshold);  
  10.     size_t cachedSize = mCachedSource->cachedSize();  
  11.     int64_t cachedDurationUs = cachedSize * 8000000ll / bitrate;  
  12.   
  13.     int percentage = 100.0 * (double)cachedDurationUs / mDurationUs;  
  14.     if (percentage > 100) {  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值