前期准備
- Mac搭建nginx+rtmp服務器
關於iOS推流SDK
-
SDK下載
-
iOS 推流SDK使用說明
SDK集成
- 拖拽sdk文件夾到自己的Xcode項目中。
iOS推流SDK - 添加依賴庫
- libz.tbd
- VideoToolbox.framework
- AudioToolbox.framework
- libstdc++.tbd
- SystemConfiguration.framework
- CoreTelephony.framework
-
iOS10適配說明
推流SDK需要獲取iOS設備的攝像頭和麥克風權限,需要在開發項目的plist文件中添加如下權限配置
Privacy - Camera Usage Description Privacy - Microphone Usage Description
AlivcLiveVideo
里面包含配置類AlivcLConfiguration.h
和直播會話類AlivcLiveSession.h
-
配置類
攝像頭方向,視頻大小,連接狀態,當前幀數,推流地址,水印位置,最大碼率,最小碼率,音頻碼率,幀率,手機方向,重連超時時長,調試信息等配置
-
直播會話類
美顏,閃光燈,攝像頭方向,靜音,開始直播,停止直播,以及AlivcLiveSession代理方法
開發步驟
在需要直播功能的控制器頭部導入#import <AlivcLiveVideo/AlivcLiveVideo.h>
,並設置代理AlivcLiveSessionDelegate
使用用媒體推流器SDK
的調用順序為
- 設置直播參數
//1.初始化config配置類 self.configuration = [[AlivcLConfiguration alloc]init]; //2. 設置推流地址 self.configuration.url = self.pushUrl; //3. 設置最大碼率 /*! * 最大碼率,網速變化的時候會根據這個值來提供建議碼率 * 默認 1500 * 1000 */ self.configuration.videoMaxBitRate = 1500 * 1000; //4. 設置當前視頻碼率 /*! * 默認碼率,在最大碼率和最小碼率之間 * 默認 600 * 1000 */ self.configuration.videoBitRate = 600 * 1000; //5. 設置最小碼率 /*! * 默認碼率,在最大碼率和最小碼率之間 * 默認 600 * 1000 */ self.configuration.videoMinBitRate = 400 * 1000; //6. 設置音頻碼率 /*! * 音頻碼率 * 默認 64 * 1000 */ self.configuration.audioBitRate = 64 * 1000; //7. 設置直播分辨率 self.configuration.videoSize = CGSizeMake(360, 640); //8. 設置橫屏or豎屏 默認豎屏 self.configuration.screenOrientation = AlivcLiveScreenVertical; //9. 設置幀率 default 20 self.configuration.fps = 20; //10. 設置攝像頭采集質量 self.configuration.preset = AVCaptureSessionPresetiFrame1280x720; //11. 設置前置攝像頭或后置攝像頭 self.configuration.position = AVCaptureDevicePositionBack; //12.設置水印圖片 默認無水印 self.configuration.waterMaskImage = [UIImage imageNamed:@"watermask"]; //13.設置水印位置 self.configuration.waterMaskLocation = 1; //14.設置水印相對x邊框距離 self.configuration.waterMaskMarginX = 10; //15.設置水印相對y邊框距離 self.configuration.waterMaskMarginY = 10; //16.設置重連超時時長 self.configuration.reconnectTimeout = 5;
- 設置直播會話
//1. 初始化liveSession類 self.liveSession = [[AlivcLiveSession alloc]initWithConfiguration:self.configuration]; //2. 設置session代理 self.liveSession.delegate = self; //3. 開啟直播預覽 [self.liveSession alivcLiveVideoStartPreview]; //4. 推流連接 [self.liveSession alivcLiveVideoConnectServer]; //5. 非常重要 dispatch_async(dispatch_get_main_queue(), ^{ [self.view insertSubview:[self.liveSession previewView] atIndex:0]; });
- 必須實現的代理方法
/*! * 推流錯誤 */ - (void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session error:(NSError *)error { } /*! * 網絡很慢,已經不建議直播 */ - (void)alivcLiveVideoLiveSessionNetworkSlow:(AlivcLiveSession *)session { }
- 其他的代理方法可以根據自己的需求實現
完成上述的代碼就可以查看推流效果了,有3-4秒的延遲

推流預覽
作者:看我的大白眼
鏈接:http://www.jianshu.com/p/b1dd29c213ce
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。