iOS 視頻直播(一)

原文地址:http://www.cnblogs.com/runner42/p/5241407.html?

SDK下載地址:https://github.com/runner365/LiveVideoCoreSDK


本文介紹一個:IOS 客戶端直播的SDK,代碼完全開源。

直播時代:讓IOS普通開發(fā)者一天內(nèi)做出一個RTMP直播客戶端,并且?guī)в忻榔G直播功能。(文章最下面有g(shù)ithub源碼地址)

包含一下功能:

1,提供IOS蘋果手機的RTMP推流;

填寫RTMP服務(wù)地址,直接就可以進(jìn)行推流。

2,美顏直播

美不美都能裝的直播,IOS OPENGL美艷加速,手機完全不發(fā)燙。

3,前后攝像頭隨時切換

4,提供RTMP連接狀態(tài)的回調(diào)

一,首先簡單掃盲

當(dāng)前直播都是用RTMP協(xié)議,推流到RTMP服務(wù)器。

然后RTMP服務(wù)器提供RTMP視頻服務(wù);

當(dāng)然通常RTMP服務(wù)器也提供HLS,把視音頻流切片成ts流,然后用戶可以直接播放xxx.m3u8的流媒體。

二,SDK使用簡介

1,初始化

[LiveVideoCoreSDK sharedinstance]:

全局獨立的SDK實例,你不用管理對象的申請和釋放;

初始化RTMP連接和視頻參數(shù),非常簡單:

[[LiveVideoCoreSDK sharedinstance] LiveInit:RtmpUrl

Preview:self.view VideSize:LIVE_VIEDO_SIZE_CIF

BitRate:LIVE_BITRATE_500Kbps FrameRate:LIVE_FRAMERATE_20];

參數(shù):

RtmpUrl: rtmp服務(wù)器地址參數(shù),如rtmp://192.168.30.191/live/123456

Preview: IOS本地預(yù)覽顯示的UIVIEW對象,現(xiàn)在都喜歡全屏直播模式,這里直接用self.view

VideSize:

視頻分辨率。這里提供了幾種視頻分辨率,CIF(320*640),D1(540*960),720P(720*1280)

BitRate: 視頻碼率。有500kbps對應(yīng)CIF,800kbps對應(yīng)D1,

2Mbps對應(yīng)720p,怎么配置就看你手機當(dāng)前的帶寬情況了。

FrameRate: 視頻幀率。這個決定視頻流暢程度,幀率越高越流暢。這里提供:15幀/s,20幀/s,25幀/s,20幀/s

2,連接RTMP視頻服務(wù)器

[[LiveVideoCoreSDK sharedinstance] connect];

調(diào)用這個接口后,開始打開iphone本地手機預(yù)覽,并且開始連接RTMP服務(wù)器。

如果網(wǎng)絡(luò)沒有問題,RTMP服務(wù)器沒有問題,直播就開始了,簡單吧!

3,設(shè)置濾鏡:提供美艷效果

- (void)setFilter:(LIVE_FILTER_TYPE) type;

當(dāng)前提供了美白效果,設(shè)置一個LIVE_FILTER_BEAUTY這個參數(shù),看看你有多美白。

4,設(shè)置前后攝像頭

- (void)setCameraFront:(Boolean)bCameraFrontFlag;

前后攝像頭隨時動態(tài)切換,想怎么拍就怎么拍。

5,設(shè)置RTMP連接狀態(tài)回調(diào)

[LiveVideoCoreSDK sharedinstance].delete = self;

在你的viewcontroller中實現(xiàn)協(xié)議:LIVEVCSessionDelegate,如下,這樣你可以隨時知道RTMP連接的狀態(tài)了。

//rtmp

status delegate:

-(void) LiveConnectionStatusChanged: (LIVE_VCSessionState)sessionState{

dispatch_async(dispatch_get_main_queue(),^{

switch(sessionState) {

caseLIVE_VCSessionStatePreviewStarted:

_RtmpStatusLabel.text = @"RTMP狀態(tài):預(yù)覽未連接";

break;

caseLIVE_VCSessionStateStarting:

_RtmpStatusLabel.text = @"RTMP狀態(tài):連接中...";

break;

caseLIVE_VCSessionStateStarted:

_RtmpStatusLabel.text = @"RTMP狀態(tài):已連接";

break;

caseLIVE_VCSessionStateEnded:

_RtmpStatusLabel.text = @"RTMP狀態(tài):未連接";

break;

caseLIVE_VCSessionStateError:

_RtmpStatusLabel.text = @"RTMP狀態(tài):錯誤";

break;

default:

break;

}

});

}

6,直播結(jié)束,斷開rtmp連接

[[LiveVideoCoreSDK sharedinstance] disconnect];

簡單吧,不解釋了。

GitHub地址:https://github.com/runner365/LiveVideoCoreSDK?

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

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

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