原文地址: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];
簡單吧,不解釋了。