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;
}
}