Domo 效果图以下所示:
ide
注释:spa
1. 在viewDidLoad中初始化 label slide 等code
//初始化 进度条 等orm
CMTime playItemDuration = myAVPlayerItem.duration;//视频的时长视频
int seconds = playItemDuration.value/playItemDuration.timescale;//视频的时长/视频压缩比事件
self.mySlide.maximumValue = seconds;//设置slide的最大值为换算后的总时间值get
self.mySlide.value = 0;//设置slide的初始值为0string
//视频总时间 以 mm:ss 的格式显示在lable中it
self.myTimeEndLab.text = [NSString stringWithFormat:@"%02d:%02d",seconds/60,seconds%60];io
//初始化播放进度 为 00:00
self.myTimeStarlbl.text = @"00:00";
//初始化定时器使 slide 根据 视频播放进度 自动的滑动
myTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(refreshSlideTime) userInfo:nil repeats:YES];
isPlay = YES;
2. 左侧 UILabel (myTimeStarlbl)用来显示当前视频播放的进度值,右侧的UILabel (myTimeEndLab) 用来显示视频的总长度 ,经过定时期 NSTimer(myTimer)实现
部分代码显示以下:
//初始化定时器使 slide 根据 视频播放进度 自动的滑动
myTimer = [NSTimer scheduledTimerWithTimeInterval:0.5
target:self selector:@selector(refreshSlideTime) userInfo:nil repeats:YES];
isPlay = YES;
-(void)refreshSlideTime
{
//获取当前视频的播放时长,根据当前的压缩比转换后, 以mm:ss 格式显示在label中
CMTime curTime = myAVPlayerItem.currentTime;
int nowSeconds = curTime.value/curTime.timescale;
self.mySlide.value = nowSeconds;
self.myTimeStarlbl.text =
[NSString stringWithFormat:@"%02d:%02d",nowSeconds/60,nowSeconds%60];
//当视频结束时,中止定时器并将标志位置为 NO,以便点击play按钮时,能够直接播放视频,可是要注意在slide的 事件下处理定时器
if ([self.myTimeStarlbl.text isEqualToString:self.myTimeEndLab.text])
{
[myTimer invalidate];
isPlay = NO;
}
}
3. 中间的UIButton按钮 经过事件 结合BOOL (isPlay) 变量 控制视频的播放 中止
部分代码显示以下:
//点击 启动或者 中止视频的播放,由bool量来控制
- (IBAction)myPlayBtn:(id)sender {
if (isPlay) {
//若是标志为YES,即视频正在播放,则中止播放,并中止定时器
[myAVPlayer pause];
[myTimer invalidate];
}
else
{
[myAVPlayer play];
myTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(refreshSlideTime) userInfo:nil repeats:YES];
}
isPlay = !isPlay;
}
4. 最下侧的 UISlide (mySlide) 用来显示显示进度,并能够经过其事件,回播或者快进
部分代码显示以下:
//当 slide 的进度发生变化时,使视频的进度也跟着变化
- (IBAction)mySlideChange:(id)sender {
UISlider *slide = sender;
int nowSeconds = slide.value;
CMTime nowTime = myAVPlayerItem.duration;
nowTime.value = nowSeconds * nowTime.timescale;
[myAVPlayer seekToTime:nowTime];
if (![myTimer isValid]) {
self.myTimeStarlbl.text = [NSString stringWithFormat:@"%02d:%02d",nowSeconds/60,nowSeconds%60];
[myAVPlayer play];
isPlay = YES;
}
}