當前視頻直播非常火爆,手機端的視頻直播也非常火爆,PGC、UGC的視頻直播門檻都降低了很多。 本文介紹一個:IOS 客戶端直播的SDK,代碼完全開源。 直播時代:讓IOS普通開發者一天內做出一個RTMP直播客戶端,並且帶有美艷直播功能。(文章最下麵有github源碼地址)
當前視頻直播非常火爆,手機端的視頻直播也非常火爆,PGC、UGC的視頻直播門檻都降低了很多。
本文介紹一個:IOS 客戶端直播的SDK,代碼完全開源。
直播時代:讓IOS普通開發者一天內做出一個RTMP直播客戶端,並且帶有美艷直播功能。(文章最下麵有github源碼地址)
包含一下功能:
1, 提供IOS蘋果手機的RTMP推流;
填寫RTMP服務地址,直接就可以進行推流。
2,美顏直播
美不美都能裝的直播,IOS OPENGL美艷加速,手機完全不發燙。
3,前後攝像頭隨時切換
4,提供RTMP連接狀態的回調
一,首先簡單掃盲
當前直播都是用RTMP協議,推流到RTMP伺服器。
然後RTMP伺服器提供RTMP視頻服務;
當然通常RTMP伺服器也提供HLS,把視音頻流切片成ts流,然後用戶可以直接播放xxx.m3u8的流媒體。
二,SDK使用簡介
1,初始化
[LiveVideoCoreSDK sharedinstance]:全局獨立的SDK實例,你不用管理對象的申請和釋放;
初始化RTMP連接和視頻參數,非常簡單:
[[LiveVideoCoreSDK sharedinstance] LiveInit:RtmpUrl Preview:self.view VideSize:LIVE_VIEDO_SIZE_CIF BitRate:LIVE_BITRATE_500Kbps FrameRate:LIVE_FRAMERATE_20];
參數:
RtmpUrl: rtmp伺服器地址參數,如rtmp://192.168.30.191/live/123456
Preview: IOS本地預覽顯示的UIVIEW對象,現在都喜歡全屏直播模式,這裡直接用self.view
VideSize: 視頻解析度。這裡提供了幾種視頻解析度,CIF(320*640),D1(540*960),720P(720*1280)
BitRate: 視頻碼率。有500kbps對應CIF,800kbps對應D1, 2Mbps對應720p,怎麼配置就看你手機當前的帶寬情況了。
FrameRate: 視頻幀率。這個決定視頻流暢程度,幀率越高越流暢。這裡提供:15幀/s,20幀/s,25幀/s,20幀/s
2,連接RTMP視頻伺服器
[[LiveVideoCoreSDK sharedinstance] connect];
調用這個介面後,開始打開iphone本地手機預覽,並且開始連接RTMP伺服器。
如果網路沒有問題,RTMP伺服器沒有問題,直播就開始了,簡單吧!
3,設置濾鏡:提供美艷效果
- (void)setFilter:(LIVE_FILTER_TYPE) type;
當前提供了美白效果,設置一個LIVE_FILTER_BEAUTY這個參數,看看你有多美白。
4,設置前後攝像頭
- (void)setCameraFront:(Boolean)bCameraFrontFlag;
前後攝像頭隨時動態切換,想怎麼拍就怎麼拍。
5,設置RTMP連接狀態回調
[LiveVideoCoreSDK sharedinstance].delete = self;
在你的viewcontroller中實現協議:LIVEVCSessionDelegate,如下,這樣你可以隨時知道RTMP連接的狀態了。
//rtmp status delegate:
- (void) LiveConnectionStatusChanged: (LIVE_VCSessionState) sessionState{
dispatch_async(dispatch_get_main_queue(), ^{
switch (sessionState) {
case LIVE_VCSessionStatePreviewStarted:
_RtmpStatusLabel.text = @"RTMP狀態: 預覽未連接";
break;
case LIVE_VCSessionStateStarting:
_RtmpStatusLabel.text = @"RTMP狀態: 連接中...";
break;
case LIVE_VCSessionStateStarted:
_RtmpStatusLabel.text = @"RTMP狀態: 已連接";
break;
case LIVE_VCSessionStateEnded:
_RtmpStatusLabel.text = @"RTMP狀態: 未連接";
break;
case LIVE_VCSessionStateError:
_RtmpStatusLabel.text = @"RTMP狀態: 錯誤";
break;
default:
break;
}
});
}
6,直播結束,斷開rtmp連接
[[LiveVideoCoreSDK sharedinstance] disconnect];簡單吧,不解釋了。
GitHub地址: https://github.com/runner365/LiveVideoCoreSDK