前言:app
最近公司的項目中加入中直播這部分的功能,如今的直播平臺真的不少不少,之前在朋友圈看到過這張圖片,沒辦法一次性給你們看,就只能這樣截成幾張給你們看看。其實按照我本身的見解,如今的直播已經沒辦法作成一個主打的業務去作,能作成的只是你APP傳播信息一個手段而已,把它當作一個工具去使用,而不是把它當作一個主打的業務去掙錢反而會好一點,這東西如今只能燒錢吧!固然這只是我本身的見解而已!說說正題網易SDK!ide
網易視頻雲提供直播推流端和播放器SDK,包括iOS/Android/PC/Web平臺,可幫助網易視頻雲用戶直接使用音視頻採集、編碼、推流,播放等功能,經過接口,快速和自身業務應用集合,實現音視頻採集和業務邏輯的對接、整合。網易可使用本身的郵箱登陸開發者平臺,這個就不 比多說了!順便再提一句,網易的SDK要使用雲直播,是有一個星期的試用期的。點播也是有一個星期的試用期的,額...一個星期也可讓你作不少事的!工具
iOS 直播推流 SDK 開發指南 你們看仔細了,這裏的是推流的開發指南!也就是發起直播用的!ui
iOS 播放器 SDK 開發指南 這個是播放端的開發指南!編碼
網易直播SDK的文檔感受寫的是比較好的,具體的怎麼集成你們看繼承文檔就是了,咱們說說一些要注意的地方。咱們先說發起直播的時候的一些注意事項吧。spa
推流端注意點:.net
一:在Demo中的這個方法是用來申請權限的:視頻
//應用程序須要事先申請音視頻使用權限 - (BOOL)requestMediaCapturerAccessWithCompletionHandler:(void (^)(BOOL, NSError*))handler { }
這個方法個人建議是你要進入開始直播界面以前去申請,否則你在這個界面申請的時候,你要是開啓了相機預覽功能,就是Demo中的下面這句代碼開啓的:server
//打開攝像頭預覽 [_mediaCapture startVideoPreview:self.localPreview];
開啓預覽功能就會有一個黑屏界面,你須要再次推出進入才能正常使用相機和麥克風,因此最上面說的權限的申請你最好下載進入這個界面以前。blog
二:在推流端有這樣一個通知:
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(onStartLiveStream:) name:LS_LiveStreaming_Started object:_mediaCapture];
當收到這個通知的時候纔是真正開始直播的時候,不是說你進入以後,初始化直播就開始了,等真正收到這個通知纔是開始直播了,還有就是隻有等直播開始了你才能去關閉直播!這點主要是體如今後臺的數據回調上。
三:記得要釋放通知
-(void)dealloc { [[NSNotificationCenter defaultCenter]removeObserver:self name:LS_LiveStreaming_Finished object:_mediaCapture]; [[NSNotificationCenter defaultCenter]removeObserver:self name:LS_LiveStreaming_Started object:_mediaCapture]; [[NSNotificationCenter defaultCenter]removeObserver:self name:LS_LiveStreaming_SDK_dealloc object:_mediaCapture]; [[NSNotificationCenter defaultCenter]removeObserver:self name:LS_LiveStreaming_Bad object:_mediaCapture]; }
四:最後一點,別把推流地址搞錯了:
推流地址也是rtmp開頭的,不過推流的是rtmp://p ,不是拉流當中的 rtmp://v ,一個是P一個是V,使用的時候注意!
拉流時候的注意事項:
你們要是看網易的拉流地址的話是分了三種了,可能有些同窗就迷糊了,不知道本身到底該用哪個!下面的這一張圖就能夠幫你們解決這個煩惱:
而後你們再看看這個直播的延時狀況,SDK播放的過程當中是須要初始化的這個初始化也是須要時間的,你們內心有個底,通常也就這麼長時間,時間太長會給用戶形成很差的體驗!
一:注意播放端和推流端SDK裏面靜態文件的衝突:
這裏一提你就清楚了,網易的播放端和推流端的SDK集成裏面有些個靜態文件也就是.a文件是衝突的,在集成的時候必定要注意不要重複的拉入,並且這裏還有一點,支付寶和網易的SDK靜態文件也是有衝突的,我是刪除了網易的和支付寶的衝突靜態文件,是沒有什麼問題的!
二:通常的觀看直播的界面是有觀看的頭像你能夠去查看的,有些處理是在當前的控制器查看,有些可能會作處理跳轉到其餘的界面,要是跳轉到其餘的界面要是否是返回上個界面,而你還想繼續播放或者觀看的話你能夠這樣作,在網易的Demo中你能夠看到這樣的方法:
- (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; NSLog(@"viewDidDisappear"); [self.liveplayer shutdown]; //退出播放並釋放相關資源 [self.liveplayer.view removeFromSuperview]; self.liveplayer = nil; [[NSNotificationCenter defaultCenter]removeObserver:self name:NELivePlayerDidPreparedToPlayNotification object:_liveplayer]; [[NSNotificationCenter defaultCenter]removeObserver:self name:NELivePlayerLoadStateChangedNotification object:_liveplayer]; [[NSNotificationCenter defaultCenter]removeObserver:self name:NELivePlayerPlaybackFinishedNotification object:_liveplayer]; [[NSNotificationCenter defaultCenter]removeObserver:self name:NELivePlayerFirstVideoDisplayedNotification object:_liveplayer]; [[NSNotificationCenter defaultCenter]removeObserver:self name:NELivePlayerFirstAudioDisplayedNotification object:_liveplayer]; [[NSNotificationCenter defaultCenter]removeObserver:self name:NELivePlayerVideoParseErrorNotification object:_liveplayer]; }
重點不是下面通知的釋放,是上面那幾句關於liveplayer的設置問題!你要是在 viewDidDisappear 設置的話就達不到咱們的要求了,因此這個釋放你能夠加載導航的返回事件當中去,固然也不能寫在viewWillDisappear。否則你下面的設置就不會起做用,按照Demo,你能夠在ViewWillappear中寫這兩句代碼來達到想要的效果:
[self.liveplayer setShouldAutoplay:YES]; //設置prepareToPlay完成後是否自動播放 [self.liveplayer setPauseInBackground:NO]; //設置切入後臺時的狀態,暫停仍是繼續播放