網易雲直播SDK使用總結


前言:

      最近公司的項目中加入中直播這部分的功能,現在的直播平台真的很多很多,以前在朋友圈看到過這張圖片,沒辦法一次性給大家看,就只能這樣截成幾張給大家看看。其實按照我自己的看法,現在的直播已經沒辦法做成一個主打的業務去做,能做成的只是你APP傳播信息一個手段而已,把它當做一個工具去使用,而不是把它當做一個主打的業務去掙錢反而會好一點,這東西現在只能燒錢吧!當然這只是我自己的看法而已!說說正題網易SDK!

   

      網易視頻雲提供直播推流端和播放器SDK,包括iOS/Android/PC/Web平台,可幫助網易視頻雲用戶直接使用音視頻采集、編碼、推流,播放等功能,通過接口,快速和自身業務應用集合,實現音視頻采集和業務邏輯的對接、整合。網易可以使用自己的郵箱登錄開發者平台,這個就不 比多說了!順便再提一句,網易的SDK要使用雲直播,是有一個星期的試用期的。點播也是有一個星期的試用期的,額...一個星期也可以讓你做很多事的!

    iOS 直播推流 SDK 開發指南 大家看仔細了,這里的是推流的開發指南!也就是發起直播用的!

    iOS 播放器 SDK 開發指南   這個是播放端的開發指南!

      網易直播SDK的文檔感覺寫的是比較好的,具體的怎么集成大家看繼承文檔就是了,我們說說一些要注意的地方。我們先說發起直播的時候的一些注意事項吧。

推流端注意點:

一:在Demo中的這個方法是用來申請權限的:

//應用程序需要事先申請音視頻使用權限
- (BOOL)requestMediaCapturerAccessWithCompletionHandler:(void (^)(BOOL, NSError*))handler {

}

    這個方法我的建議是你要進入開始直播界面之前去申請,不然你在這個界面申請的時候,你要是開啟了相機預覽功能,就是Demo中的下面這句代碼開啟的:

   //打開攝像頭預覽
    [_mediaCapture startVideoPreview:self.localPreview];

    開啟預覽功能就會有一個黑屏界面,你需要再次推出進入才能正常使用相機和麥克風,所以最上面說的權限的申請你最好下載進入這個界面之前。

二:在推流端有這樣一個通知:

 [[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];   //設置切入后台時的狀態,暫停還是繼續播放


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM