MPMoviePlayerController and MPMovieAccessLog

在模拟器上通过得到MPMovieAccessLogEvent,可以得到当时播放视频缓冲的大小和传输速率,

分别为:numberOfBytesTransferred 、indicatedBitrate,

其中第一个的单位为byte, 第二个的单位为bits

从模拟器上测试结果来看events.count,总是为1

这样的话我们就可以得到视频当前缓冲的数据,但是当在真机上测试的时候总是取不到值

难道因为他是log,在release模式下就没了?! 现在看来应该是这样的,因为真机上

events.count总是为0。

忙活了一下午,看到真机上失败,失望了。

代码如下:让一个1秒的time触发该函数

- (void) getVideoDatas

{

  NSArray *events = mMoviePlayer.accessLog.events;

  int count = events.count;

  NSLog(@"events count = %d", count);

  for (int i = 0; i < count; ++i) {

    MPMovieAccessLogEvent *currenEvent = [events objectAtIndex:i];

    double byts =  currenEvent.indicatedBitrate ;

    int64_t tmp = byts / 8;

    tmp = tmp / 1024;

    int64_t byte = currenEvent.numberOfBytesTransferred;

    int64_t bytes =  currenEvent.numberOfBytesTransferred >> 10;

    NSMutableString *bytesS = [[NSMutableString alloc] initWithCapacity:100];

    [bytesS appendFormat"totalSize = %d byte",bytes];

    if(bytes > 1024)

    {

      bytes = bytes >> 10;

      [bytesS setString""];

      [bytesS appendFormat"totalSize = %d M",bytes];

    }

    NSLog(@"byts = %f, byte = %lld bytes = %lld bits = %lld", byts,byte, bytes, tmp);

    [bytesS appendFormat" || speed = %d k",tmp];

    [mSpeedLabel setText:bytesS];

    [bytesS release];

  }

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值