[IOS]对视频、音频播放器添加缓冲进度条

[IOS]对视频、音频播放器添加缓冲进度条


Demo地址:http://download.csdn.net/detail/u012881779/8854967

思路说起来很简单:

先拖一个Progress View控件,设置它的Progress Tint和Track Tint;

再拖一个Horizontal Slider覆盖在ProgressView上面,设置它的Min Track Tint 同时设置Max Track Tint为Clear Color(为了透过控件看见背后progressView的背景);

最后分别设置一下各进度的值就OK了。

Min Track Tint(播放进度)、Progress Tint(缓冲进度)、Track Tint(进度条背景)。

@interface AVVideoViewController: UIViewController
@property (weak, nonatomic) IBOutlet UISlider       *mScrubber;     //播放进度
@property (weak, nonatomic) IBOutlet UIProgressView *cacheProgressV;//缓冲进度
@end

@implementation AVVideoViewController

- (void)syncScrubber
{
    /*播放进度*/
	CMTime playerDuration = [self playerItemDuration];
	if (CMTIME_IS_INVALID(playerDuration)) 
	{
		mScrubber.minimumValue = 0.0;
        [self showStarLabletimeToEndLableTime:0.0 end:0.0];
		return;
	} 
    
	double duration = CMTimeGetSeconds(playerDuration);
	if (isfinite(duration))
	{
		float minValue = [self.mScrubber minimumValue];
		float maxValue = [self.mScrubber maximumValue];
		double time = CMTimeGetSeconds([self.mPlayer currentTime]);
		[self showStarLabletimeToEndLableTime:time end:duration];
		[self.mScrubber setValue:(maxValue - minValue) * time / duration + minValue];
	}

    /*缓冲进度*/
    NSTimeInterval timeInterval = [self availableDuration];
    NSLog(@"Time I nterval:%f",timeInterval);
    CMTime duration11 = self.mPlayerItem.duration;
    CGFloat totalDuration = CMTimeGetSeconds(duration11);
    [_cacheProgressV setProgress:timeInterval / totalDuration animated:YES];
}

// 计算缓冲进度
- (NSTimeInterval)availableDuration {
    NSArray *loadedTimeRanges = [[self.mPlayer currentItem] loadedTimeRanges];
    CMTimeRange timeRange = [loadedTimeRanges.firstObject CMTimeRangeValue];// 获取缓冲区域
    float startSeconds = CMTimeGetSeconds(timeRange.start);
    float durationSeconds = CMTimeGetSeconds(timeRange.duration);
    
    NSTimeInterval result = startSeconds + durationSeconds;// 计算缓冲总进度
    
    return result;
}

@end
 


示意图:




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值