AVPlayer

iOS_player.png

獲取視頻的總時長

typedef struct
{
    CMTimeValue value;      /*! @field value The value of the CMTime. value/timescale = seconds. */
    CMTimeScale timescale;  /*! @field timescale The timescale of the CMTime. value/timescale = seconds.  */
    CMTimeFlags flags;      /*! @field flags The flags, eg. kCMTimeFlags_Valid, kCMTimeFlags_PositiveInfinity, etc. */
    CMTimeEpoch epoch;      /*! @field epoch Differentiates between equal timestamps that are actually different because
                                                 of looping, multi-item sequencing, etc.  
                                                 Will be used during comparison: greater epochs happen after lesser ones. 
                                                 Additions/subtraction is only possible within a single epoch,
                                                 however, since epoch length may be unknown/variable. */
} CMTime;
  • 1.官方給出公式 :value / timescale = seconds 其中value是視頻的總幀數(shù) timescale:視頻幀率(幀/s)
    AVPlayerItem的Duration屬性就是一個CMTime類型的數(shù)據(jù)具伍。所以獲取視頻的總時長(秒)需要duration.value/duration.timeScale
    1. 系統(tǒng)也給出一個方法 直接獲取視頻CMTimeGetSeconds(CMTime time) 腹缩,當然這個方法最終也是根據(jù)參數(shù)time.value / time.timescale 來計算時長,此時參數(shù)是整個視頻的返回的就是整個視頻的時長渴丸,如果參數(shù)time只是一部分視頻那么返回就是這部分視頻時長桑驱。
/*!
    @function   CMTimeGetSeconds
    @abstract   Converts a CMTime to seconds.
    @discussion If the CMTime is invalid or indefinite, NAN is returned.  If the CMTime is infinite, +/- __inf()
                is returned.  If the CMTime is numeric, epoch is ignored, and time.value / time.timescale is
                returned.  The division is done in Float64, so the fraction is not lost in the returned result.
    @result     The resulting Float64 number of seconds.
*/
CM_EXPORT 
Float64 CMTimeGetSeconds(
                CMTime time)
                            __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);

刷新播放進度和狀態(tài)

實時更新當前播放時間狀態(tài),AVPlayer已經(jīng)提供了方法:
addPeriodicTimeObserverForInterval: queue: usingBlock。當播放進度改變的時候方法中的回調會被執(zhí)行袱箱。我們可以在這里做刷新時間的操作

 __weak __typeof(self) weakSelf = self;
    [self.player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
        //當前播放的時間
        NSTimeInterval currentTime = CMTimeGetSeconds(time);
        //視頻的總時間
        NSTimeInterval totalTime = CMTimeGetSeconds(weakSelf.player.currentItem.duration);
        //設置滑塊的當前進度
        weakSelf.sliderView.value = currentTime/totalTime;
        //設置顯示的時間:以00:00:00的格式
        weakSelf.currentPlayTimeLabel.text = [weakSelf formatTimeWithTimeInterVal:currentTime];
    }];

快進或者快退到指定時間點播放

AVPlayer實例調用

- (void)seekToTime:(CMTime)time completionHandler:(void (^)(BOOL finished))completionHandler NS_AVAILABLE(10_7, 5_0);
//UISlider的響應方法:拖動滑塊,改變播放進度
- (IBAction)sliderViewChange:(id)sender {
    if(self.player.status == AVPlayerStatusReadyToPlay){
        NSTimeInterval playTime = self.sliderView.value * CMTimeGetSeconds(self.player.currentItem.duration);
        CMTime seekTime = CMTimeMake(playTime, 1);
        [self.player seekToTime:seekTime completionHandler:^(BOOL finished) {
        }];
    }
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末义矛,一起剝皮案震驚了整個濱河市发笔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凉翻,老刑警劉巖了讨,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異制轰,居然都是意外死亡前计,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門垃杖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來男杈,“玉大人,你說我怎么就攤上這事调俘×姘簦” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵彩库,是天一觀的道長肤无。 經(jīng)常有香客問我,道長骇钦,這世上最難降的妖魔是什么宛渐? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮眯搭,結果婚禮上皇忿,老公的妹妹穿的比我還像新娘。我一直安慰自己坦仍,他們只是感情好鳍烁,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著繁扎,像睡著了一般幔荒。 火紅的嫁衣襯著肌膚如雪糊闽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天爹梁,我揣著相機與錄音右犹,去河邊找鬼。 笑死姚垃,一個胖子當著我的面吹牛念链,可吹牛的內容都是我干的。 我是一名探鬼主播积糯,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼掂墓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了看成?” 一聲冷哼從身側響起君编,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎川慌,沒想到半個月后吃嘿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡梦重,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年兑燥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琴拧。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡贪嫂,死狀恐怖,靈堂內的尸體忽然破棺而出艾蓝,到底是詐尸還是另有隱情,我是刑警寧澤斗塘,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布赢织,位于F島的核電站,受9級特大地震影響馍盟,放射性物質發(fā)生泄漏于置。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一贞岭、第九天 我趴在偏房一處隱蔽的房頂上張望八毯。 院中可真熱鬧,春花似錦瞄桨、人聲如沸话速。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泊交。三九已至乳讥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間廓俭,已是汗流浹背云石。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留研乒,地道東北人汹忠。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像雹熬,于是被迫代替她去往敵國和親宽菜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內容