AVPlayer的使用

本文可以解決緩沖和播放會暫停的問題
iOS開發(fā)中吭从,播放視頻通常有兩種方式鸿市,一種是使用MPMoviePlayerController(需要導(dǎo)入MediaPlayer.Framework)倒得,還有一種是使用AVPlayer。關(guān)于這兩個類的區(qū)別可以參考http://stackoverflow.com/questions/8146942/avplayer-and-mpmovieplayercontroller-differences姜骡,)
簡而言之就是MPMoviePlayerController使用更簡單弃理,功能不如AVPlayer強(qiáng)大,而AVPlayer使用稍微麻煩點(diǎn)滔金,不過功能更加強(qiáng)大色解。這篇博客主要介紹下AVPlayer的基本使用,由于 我也是剛剛接觸餐茵,所以有問題大家直接指出~
監(jiān)聽playerItem的status和loadedTimeRange屬性科阎,status有三種狀態(tài):
AVPlayerStatusUnknown,

AVPlayerStatusReadyToPlay,

AVPlayerStatusFailed

當(dāng)status等于AVPlayerStatusReadyToPlay時代表視頻已經(jīng)可以播放了,我們就可以調(diào)用play方法播放了忿族。

loadedTimeRange屬性代表已經(jīng)緩沖的進(jìn)度锣笨,監(jiān)聽此屬性可以在UI中更新緩沖進(jìn)度,也是很有用的一個屬性道批。

最后添加一個通知错英,用于監(jiān)聽視頻是否已經(jīng)播放完畢,然后實(shí)現(xiàn)KVO的方法:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
 {
     AVPlayerItem *playerItem = (AVPlayerItem *)object; 
     if ([keyPath isEqualToString:@"status"]) {
          if ([playerItem status] ==AVPlayerStatusReadyToPlay) {    
    NSLog(@"AVPlayerStatusReadyToPlay"); 
    self.stateButton.enabled = YES; 
    CMTime duration = self.playerItem.duration;// 獲取視頻總長度 
    CGFloat totalSecond = playerItem.duration.value / playerItem.duration.timescale;// 轉(zhuǎn)換成秒 
    _totalTime = [self convertTime:totalSecond];// 轉(zhuǎn)換成播放時間
    [self customVideoSlider:duration];// [自定義]UISlider外觀 
    NSLog(@"movie totalduration:%f",CMTimeGetSeconds(duration));
    [self monitoringPlayback:self.playerItem];// 監(jiān)聽播放狀態(tài)
  } else if ([playerItem status] == AVPlayerStatusFailed) { 
    NSLog(@"AVPlayerStatusFailed"); 
} 
  } else if ([keyPath isEqualToString:@"loadedTimeRanges"])  { 
    NSTimeInterval timeInterval = [self availableDuration];// 計(jì)算緩沖進(jìn)度
    NSLog(@"Time Interval:%f",timeInterval);
    CMTime duration = self.playerItem.duration; 
    CGFloat totalDuration = CMTimeGetSeconds(duration);
    [self.videoProgress setProgress:timeInterval / totalDuration animated:YES]; 
}}

- (NSTimeInterval)availableDuration { 
   NSArray *loadedTimeRanges = [[self.playerView.player currentItem] loadedTimeRanges]; 
   CMTimeRange timeRange = [loadedTimeRanges.firstObject CMTimeRangeValue];// 獲取緩沖區(qū)域
    float startSeconds =    CMTimeGetSeconds(timeRange.start); 
    float durationSeconds = CMTimeGetSeconds(timeRange.duration); 
    NSTimeInterval result = startSeconds + durationSeconds;// 計(jì)算緩沖總進(jìn)度 
    return result;
 }

- (NSString *)convertTime:(CGFloat)second{ NSDate *d = [NSDate dateWithTimeIntervalSince1970:second]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    if (second/3600 >= 1) { [formatter setDateFormat:@"HH:mm:ss"]; 
} else {
  [formatter setDateFormat:@"mm:ss"]; 
} 
   NSString *showtimeNew = [formatter stringFromDate:d]; 
   return showtimeNew;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隆豹,一起剝皮案震驚了整個濱河市椭岩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌璃赡,老刑警劉巖判哥,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異碉考,居然都是意外死亡塌计,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門侯谁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锌仅,“玉大人,你說我怎么就攤上這事墙贱〖级螅” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵嫩痰,是天一觀的道長剿吻。 經(jīng)常有香客問我,道長串纺,這世上最難降的妖魔是什么丽旅? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任椰棘,我火速辦了婚禮,結(jié)果婚禮上榄笙,老公的妹妹穿的比我還像新娘邪狞。我一直安慰自己,他們只是感情好茅撞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布帆卓。 她就那樣靜靜地躺著,像睡著了一般米丘。 火紅的嫁衣襯著肌膚如雪剑令。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天拄查,我揣著相機(jī)與錄音吁津,去河邊找鬼。 笑死堕扶,一個胖子當(dāng)著我的面吹牛碍脏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播稍算,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼典尾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了糊探?” 一聲冷哼從身側(cè)響起急黎,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侧到,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淤击,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匠抗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了污抬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汞贸。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖印机,靈堂內(nèi)的尸體忽然破棺而出矢腻,到底是詐尸還是另有隱情,我是刑警寧澤射赛,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布多柑,位于F島的核電站,受9級特大地震影響楣责,放射性物質(zhì)發(fā)生泄漏竣灌。R本人自食惡果不足惜聂沙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望初嘹。 院中可真熱鬧及汉,春花似錦、人聲如沸屯烦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驻龟。三九已至温眉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間迅脐,已是汗流浹背芍殖。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谴蔑,地道東北人豌骏。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像隐锭,于是被迫代替她去往敵國和親窃躲。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容