iOS 視頻播放之切換清晰度

眾所周知,在觀看視頻時(shí),很多用戶都有切換視頻清晰度的需求,畢竟超清就是看的爽!所以,很多視頻類的app都會(huì)有清晰度切換的功能。但是,很多app并沒有在清晰度切換的時(shí)候給用戶很好的體驗(yàn)效果,如下圖:


屏幕快照 2017-11-14 下午4.06.12.png

這是因?yàn)榍逦鹊那袚Q,其實(shí)是切換了不同清晰度的視頻URL,也就是釋放原先播放的資源,重新加載資源。重走加載的方法,會(huì)導(dǎo)致切換時(shí)黑屏的出現(xiàn)。當(dāng)然,這不是bug。但是,有很多app能在切換清晰度的能做到無縫切換,即:保持正在播放的界面,會(huì)有一點(diǎn)小動(dòng)畫提示正在切換,等到切換完成時(shí)繼續(xù)播放。這樣的用戶體驗(yàn)就很好。其實(shí),想實(shí)現(xiàn)這個(gè)效果并不難。
第一步:獲取當(dāng)前播放的時(shí)間,暫停播放器,獲取到當(dāng)時(shí)播放的縮略圖

- (IBAction)qualityAction:(id)sender {
    
    _switchTime =[self.playerView getCurrentPlayTime];
     _isSwitch =YES;
    _isChange =NO;
    [self.playerView pause];//暫停
   //獲取縮略圖 顯示在播放器所在的頁面上
     _imageView.image =[self.playerView getThumbnailImageFromVideoURL:[NSURL URLWithString:VideoURL] time:_switchTime];
    _imageView.hidden =NO;
   //加載
    [self.playerView setURL:[NSURL URLWithString:VideoURL]];
    
}

第二步:在播放器的代理方法里判斷緩沖時(shí)間,如果緩沖時(shí)間大于等于當(dāng)前播放時(shí)間,就讓播放器播放,然后顯示的imageView也一并隱藏,這樣的效果就非常不錯(cuò)!

//duration 當(dāng)前緩沖的長(zhǎng)度
- (void)videoPlayer:(LYAVPlayerView *)playerView loadedTimeRangeDidChange:(CGFloat )duration{
    
    NSLog(@"當(dāng)前緩沖的長(zhǎng)度%f",duration);
    
    if (_isChange) return;

    if (duration >= _switchTime && _isSwitch) {
        _imageView.hidden =YES;
        [self.playerView seekToTime:_switchTime];
        [self.playerView play];
        _isChange =YES;

    }
    
}

最后,動(dòng)畫效果大家自己添加哈。
GitHub源碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容