代碼下載地址:https://github.com/pili-engineering/PLPlayerKit
系統要求: iOS7及以上版本git
直接在Podfile中添加github
$ pod 'PLPlayerKit'
而後url
$ pod install
或者spa
$ pod update
運行你工程的 Workspace,就集成完畢了.net
詳情請訪問:非Cocoapods集成設計
快速接入項目開始
在須要調用的地方添加代理
#import <PLPlayerKit/PLPlayer.h>
初始化 PLPlayerOptioncode
// 初始化 PLPlayerOption 對象 PLPlayerOption *option = [PLPlayerOption defaultOption]; // 更改須要修改的 option 屬性鍵所對應的值 [option setOptionValue:@15 forKey:PLPlayerOptionKeyTimeoutIntervalForMediaPackets];
初始化 PLPlayer視頻
// 初始化 PLPlayer,self.URL是須要播放的直播的URL地址,目前支持 http (url 以 http:// 開頭) 與 rtmp (url 以 rtmp:// 開頭) 協議。 self.player = [PLPlayer playerWithURL:self.URL option:option]; // 設定代理 (optional) self.player.delegate = self;
獲取播放器的視頻輸出的 UIView 對象並添加爲到當前 UIView 對象的 Subview對象
//獲取視頻輸出視圖並添加爲到當前 UIView 對象的 Subview [self.view addSubview:player.playerView];
開始/暫停操做
// 播放 [self.player play]; // 中止 [self.player stop]; // 暫停 [self.player pause]; // 繼續播放 [self.player resume];
播放器狀態獲取
// 實現 <PLPlayerDelegate> 來控制流狀態的變動 - (void)player:(nonnull PLPlayer *)player statusDidChange:(PLPlayerStatus)state { // 這裏會返回流的各類狀態,你能夠根據狀態作 UI 定製及各種其餘業務操做 // 除了 Error 狀態,其餘狀態都會回調這個方法 } - (void)player:(nonnull PLPlayer *)player stoppedWithError:(nullable NSError *)error { // 當發生錯誤時,會回調這個方法 }
由於 iOS 的音頻資源被設計爲單例資源,因此若是在 player 中作的任何修改,對外均可能形成影響,而且帶來不能預估的各類問題。
爲了應對這一狀況,PLPlayerKit 採起的方式是檢查是否能夠播放及是否能夠進入後臺,而在內部不作任何設置。具體是經過擴展 AVAudioSession
來作到的,提供了兩個方法,以下:
/*! * @description 檢查當前 AVAudioSession 的 category 配置是否能夠播放音頻. 當爲 AVAudioSessionCategoryAmbient, * AVAudioSessionCategorySoloAmbient, AVAudioSessionCategoryPlayback, AVAudioSessionCategoryPlayAndRecord * 中的一種時爲 YES, 不然爲 NO. */ + (BOOL)isPlayable; /*! * @description 檢查當前 AVAudioSession 的 category 配置是否能夠後臺播放. 當爲 AVAudioSessionCategoryPlayback, * AVAudioSessionCategoryPlayAndRecord 中的一種時爲 YES, 不然爲 NO. */ + (BOOL)canPlayInBackground;
分辨能夠檢查是否能夠播放以及當前 category 的設置是否能夠後臺播放。