激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務(wù)器之家 - 編程語言 - IOS - iOS AVPlayer切換播放源實(shí)現(xiàn)連續(xù)播放和全屏切換的方法

iOS AVPlayer切換播放源實(shí)現(xiàn)連續(xù)播放和全屏切換的方法

2021-03-17 15:58雪_晟 IOS

這篇文章主要給大家介紹了關(guān)于iOS中AVPlayer切換播放源實(shí)現(xiàn)連續(xù)播放和全屏切換的方法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。

本文主要給大家介紹了關(guān)于ios avplayer切換播放源實(shí)現(xiàn)連續(xù)播放和全屏切換的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面來一起看看詳細(xì)的介紹:

avplayer 切換播放源有三種方式:

第一種:采用系統(tǒng)自帶的方法: [self.player replacecurrentitemwithplayeritem:item] ,但是在切換playitem前要把所有的通知,觀察者移除,切換后重新添加。

iOS AVPlayer切換播放源實(shí)現(xiàn)連續(xù)播放和全屏切換的方法

第二種:把通知,觀察者全部移除,player 置為nil,然后重新創(chuàng)建。

iOS AVPlayer切換播放源實(shí)現(xiàn)連續(xù)播放和全屏切換的方法

githup上zfplayer 作者表示在ios9后,avplayer的replacecurrentitemwithplayeritem方法在切換視頻時底層會調(diào)用信號量等待然后導(dǎo)致當(dāng)前線程卡頓,如果在uitableviewcell中切換視頻播放使用這個方法,會導(dǎo)致當(dāng)前線程凍結(jié)幾秒鐘。遇到這個坑還真不好在系統(tǒng)層面對它做什么,后來找到的解決方法是在每次需要切換視頻時,需重新創(chuàng)建avplayer和avplayeritem。

因?yàn)橐曨l較小,所以我沒有測試,這兩種方法暫時都可以使用。

第三種可以使用avqueueplayer播放多個items,avqueueplayer是avplayer的子類,可以用一個數(shù)組來初始化一個avqueueplayer對象。

代碼如下:

?
1
nsarray*items = <#an array of player items#>;avqueueplayer*queueplayer = [[avqueueplayeralloc] initwithitems:items];

和avplayer一樣,直接調(diào)用play方法來播放,queue player順序播放隊(duì)列中的item,如果想要跳過一個item,播放下一個item,可以調(diào)用方法advancetonextitem。

可以對隊(duì)列進(jìn)行插入和刪除操作,調(diào)用方法insertitem:afteritem: , removeitem: , 和removeallitems。正常情況下當(dāng)插入一個item之前,應(yīng)該檢查是否可以插入,通過使用caninsertitem:afteritem:方法,第二個參數(shù)傳nil

親測第一種第二種沒有問題,第三種當(dāng)然也可以實(shí)現(xiàn)連續(xù)播放,后續(xù)再研究。

看到zfplayer 的流暢性,就又使用了zfplayer作者使用的通知重新簡單封了一遍,連播代碼。

iOS AVPlayer切換播放源實(shí)現(xiàn)連續(xù)播放和全屏切換的方法

連播 的邏輯無非就是重置layer 和子控件位置,然后重新設(shè)置一遍。

關(guān)于橫豎屏切換的代碼:

iOS AVPlayer切換播放源實(shí)現(xiàn)連續(xù)播放和全屏切換的方法

沒有做封裝,可以封裝個方法,傳入當(dāng)前的oriention,然后很霸道的實(shí)現(xiàn)橫豎屏切換,demo 是用純代碼寫的,還用了懶加載,這在橫豎屏切換的時候有很大的弊端,因?yàn)閼屑虞d的緣故,frame已經(jīng)確定,切換橫豎屏的時候不得已在layoutsubviews里把布局代碼重新寫一遍,這時候就是masonry 布局的好處了。(masonry 要更新到最新,要不然ios10 會崩潰,莫名其妙),還有就是返回的時候要再次調(diào)用這個方法設(shè)置為豎屏。實(shí)現(xiàn)橫豎屏的前提是當(dāng)前viewcontroller的- (uiinterfaceorientationmask)supportedinterfaceorientations 必須支持橫豎屏。

如果不想強(qiáng)制橫屏,只是在用戶旋轉(zhuǎn)手機(jī)的時候,更換布局,也可以使用下面的通知。

iOS AVPlayer切換播放源實(shí)現(xiàn)連續(xù)播放和全屏切換的方法

還有個問題是循環(huán)引用的問題:當(dāng)我們聲明一個非屬性的實(shí)例變量時,在自己寫的block里會造成循環(huán)引用,導(dǎo)致當(dāng)前view無法釋放。

demo

地址:lxavplayerdemo

總結(jié)

以上就是這篇文章的全部內(nèi)容了,新人一枚,沒有做良好的封裝,只是研究了一些思路。希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務(wù)器之家的支持。

原文鏈接:http://www.jianshu.com/p/789973b425bc

延伸 · 閱讀

精彩推薦
953
主站蜘蛛池模板: 一级大片一级一大片 | 日韩视频一二三 | 看片一区二区三区 | 99精品视频在线导航 | 91羞羞| 久久久婷婷一区二区三区不卡 | 99久久精品免费 | 成人一级免费 | 99爱视频在线 | 久久99精品国产 | 中文字幕涩涩久久乱小说 | 激情小说激情图片激情电影 | 久久久久久免费 | 欧美交在线 | 成人黄色网战 | 国产伦久视频免费观看视频 | 久久久久夜色精品国产老牛91 | 亚洲视色| 最新黄色电影网站 | 久久成年网站 | 91专区在线观看 | 国产毛毛片一区二区三区四区 | av在线直播观看 | 日本黄色免费观看视频 | 久久艹国产精品 | 成人做爰s片免费看网站 | 成人免费午夜视频 | 8x成人在线电影 | 久久91精品国产91久久yfo | 九色中文字幕 | 黄色网络免费看 | 日韩色视频在线观看 | 国产成人高清成人av片在线看 | 91精品国产九九九久久久亚洲 | 精品一区二区三区电影 | 国产一区二区三区视频观看 | 欧美视频在线一区二区三区 | 妇子乱av一区二区三区 | 亚洲成人精品视频 | 国产成人精品一区二区仙踪林 | 玩偶姐姐在线观看免费 |