988
阿裏雲
iOS 推流SDK使用說明__SDK文檔及下載_API及SDK_視頻直播-阿裏雲
文檔說明:本文檔麵向所有使用該SDK的開發人員、測試人員以及對此感興趣的用戶,要求讀者具有一定的iOS開發能力
1. 簡介
iOS推流SDK是在iOS平台上使用的軟件開發工具包(Soft Development Kit),為iOS開發者提供簡單易用的接口,幫助開發者實現iOS平台上的推流應用開發。
1.1 功能說明
方便快捷、低門檻實現媒體推流功能。用戶無須關心內部實現細節,隻需要自定義界麵既可以實現專業級的推流應用。
推流支持格式:rtmp
編碼目前為硬編
1.2 安裝包說明
推流器SDK的完整下載包中包含test、lib、doc等
test:主要存放了調用SDK的示例工程,可以幫助用戶了解如何使用該SDK
lib:推流器SDK開發包,包含推流器framework文件,需要在您的工程中進行引用
doc:存放SDK相關接入文檔。
1.3 推流器性能
目前推流SDK推流采用的是硬編。
推流采用librtmp推流
DK的大小:使用SDK庫安裝之後的程序大小在1M左右。即為你的程序增 加1M左右的大小。
1.4 注意事項
推流器SDK目前隻支持單實例。不能夠同時開2個推流實例,同時隻能存在一個實例,需要另開實例的時候,需要關閉之前存在的實例。
操作係統版本要求iOS8.0以上。
2. 使用說明
2.1 開發環境配置
- 需要準備iOS的運行環境(Xcode8.0以上版本,iOS SDK8.0以上版本), 以及硬件CPU支持ARMv7、ARMv7s或ARM64的iOS設備。
2.2、開通直播
詳情參見 直播快速開始 流程
2.3、SDK下載
2.4、SDK集成
拖拽sdk文件夾到自己的Xcode項目中。

勾選 Copy items if needed,點擊 Finish。
打開項目的 app target,在 Build Phases 中的 Link Binary With Libraries添加以下依賴庫。
| libz.tbd |
|---|
| VideoToolbox.framework |
| AudioToolbox.framework |
| libstdc++.tbd |
| SystemConfiguration.framework |
| CoreTelephony.framework |
2.5 iOS10適配說明
由於iOS10.0對於iOS設備權限獲取的方式不同於之前的版本,因此特別說明.
推流SDK需要獲取iOS設備的攝像頭和麥克風權限,需要在開發項目的plist文件中添加如下權限配置
Privacy - Camera Usage DescriptionPrivacy - Microphone Usage Description
3. SDK使用指南
3.1 開發環境配置
需要準備Xcode運行環境,以及硬件配置iOS8.0以上的蘋果手持設備。
權限開通,在阿裏雲上申請推流SDK開發權限
3.2 開發步驟
在需要直播功能的控製器頭部導入#import <AlivcLiveVideo/AlivcLiveVideo.h>,並設置代理AlivcLiveSessionDelegate使用用媒體推流器SDK的調用順序為
調用[[AlivcLiveSession alloc] initWithConfiguration:configuration]創建session類
調用alivcLiveVideoStartPreview開啟預覽
調用alivcLiveVideoConnectServer開始推流
調用alivcLiveVideoDisconnectServer停止推流
調用alivcLiveVideoStopPreview停止預覽
session = nil 銷毀直播session
3.3 Demo示例
在 SDK 中提供了 Demo,此 Demo 是用推流 SDK 開發了一個完整的推流器, 用戶可以參考 Demo 進行推流的開發。
下麵給出了部分重要的 Demo 中調用 SDK 的代碼。
一. 設置直播參數
1.初始化config配置類
AlivcLConfiguration *configuration = [[AlivcLConfiguration alloc] init];
2. 設置推流地址
configuration.url = pushUrl;
3. 設置最大碼率
configuration.videoMaxBitRate = 1500 * 1000;
4. 設置當前視頻碼率
configuration.videoBitRate = 600 * 1000;
5. 設置最小碼率
configuration.videoMinBitRate = 400 * 1000;
6. 設置音頻碼率
configuration.audioBitRate = 64 * 1000;
7. 設置直播分辨率
configuration.videoSize = CGSizeMake(360, 640);
8. 設置橫屏or豎屏
configuration.screenOrientation = AlivcLiveScreenVertical;
9. 設置幀率
configuration.fps = 20;
10. 設置攝像頭采集質量
configuration.preset = AVCaptureSessionPresetiFrame1280x720;
11. 設置前置攝像頭或後置攝像頭
configuration.position = AVCaptureDevicePositionFront;
12.設置水印圖片
configuration.waterMaskImage = [UIImage imageNamed:@"watermask"];
13.設置水印位置
configuration.waterMaskLocation = 1;
14.設置水印相對x邊框距離
configuration.waterMaskMarginX = 10;
15.設置水印相對y邊框距離
configuration.waterMaskMarginY = 10;
16.設置重連超時時長
configuration.reconnectTimeout = 5;
二. 創建直播session
1. 初始化liveSession類
_liveSession = [[AlivcLiveSession alloc] initWithConfiguration:configuration];
2. 設置session代理
_liveSession.delegate = self;
3. 開啟直播預覽
[_liveSession alivcLiveVideoStartPreview];
4. 開啟直播
[_liveSession alivcLiveVideoConnectServer];
5. 獲取直播預覽視圖,可將獲取的直播視圖添加到當前控製器上,實現直播預覽功能。
[_liveSession previewView]
6.停止預覽
[_liveSession alivcLiveVideoStopPreview];
注意:停止預覽後將liveSession置為nil
7.關閉直播
[_liveSession alivcLiveVideoDisconnectServer];
8.設置閃光燈模式
_liveSession.torchMode = AVCaptureTorchModeOn//關閉AVCaptureTorchModeOff;
9.開啟美顏
[_liveSession setEnableSkin:YES];
10.縮放
[_liveSession alivcLiveVideoZoomCamera:1.0f];
11.聚焦
[_liveSession alivcLiveVideoFocusAtAdjustedPoint:percentPoint autoFocus:YES];
12.調試信息
AlivcLDebugInfo *i = [_liveSession dumpDebugInfo];
三、直播功能的相關代理方法
@Required
1.直播出錯的代理方法
-(void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session error:(NSError *)error;
2.網速較慢時的代理方法
-(void)alivcLiveVideoLiveSessionNetworkSlow:(AlivcLiveSession *)session;
@optional
1.音頻初始化失敗
-(void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session OpenAudioError:(NSError *)error;
2.視頻初始化失敗
-(void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session OpenVideoError:(NSError *)error;
3.音頻編碼器初始化失敗
-(void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session EncodeAudioError:(NSError *)error;
4.視頻編碼器初始化失敗
-(void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session EncodeVideoError:(NSError *)error;
5. 音頻設備獲取成功
- (void)alivcLiveVideoOpenAudioSuccess:(AlivcLiveSession *)session;
6.視頻設備獲取成功
- (void)alivcLiveVideoOpenVideoSuccess:(AlivcLiveSession *)session;
7.推流連接成功
- (void)alivcLiveVideoLiveSessionConnectSuccess:(AlivcLiveSession *)session;
8.碼率變化
-(void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session bitrateStatusChange:(ALIVC_LIVE_BITRATE_STATUS)bitrateStatus;
9.重連超時
- (void)alivcLiveVideoReconnectTimeout:(AlivcLiveSession *)session
4. 接口說明
4.1 AlivcLiveSession
類名:AlivcLiveSession
功能:推流器接口類,提供推流控製
成員:
| 成員 | 功能 |
|---|---|
| initWithConfiguration | 初始化推流器 |
| StartPreview | 開始預覽 |
| StopPreview | 停止預覽 |
| RotateCamera | 轉換攝像頭 |
| FocusAtAdjustedPoint:autoFocus | 對焦攝像頭 |
| ZoomCamera | 縮放攝像頭 |
| enalbelSkin | 美顏 |
| torchMode | 閃光燈 |
| enableMute | 靜音 |
| ConnectServer | 開始推流 |
| DisConnectServer | 斷開推流 |
| dumpDebugInfo | 調試信息 |
| VideoBitRate | 碼率 |
| Version | 版本號 |
各成員具體使用:
/*!* 當前版本號** @return 版本號*/+ (NSString *)alivcLiveVideoVersion;/*!* init** @param configuration 配置** @return AlivcLiveSession*/- (instancetype)initWithConfiguration:(AlivcLConfiguration *)configuration;/*!* 預覽View** @return 預覽View*/- (UIView *)previewView;/*!* 開始*/- (void)alivcLiveVideoStartPreview;/*!* 停止*/- (void)alivcLiveVideoStopPreview;/*!* 轉換攝像頭*/- (void)alivcLiveVideoRotateCamera;/*!* 對焦** @param point 位置* @param autoFocus 是否自動對焦*/- (void)alivcLiveVideoFocusAtAdjustedPoint:(CGPoint)point autoFocus:(BOOL)autoFocus;/*!* 縮放** @param zoom 縮放倍數*/- (void)alivcLiveVideoZoomCamera:(CGFloat)zoom;/*!* 更新live配置,可以更新碼率和幀率,但是隻能在connectServer之前調用** @param block 配置*/- (void)alivcLiveVideoUpdateConfiguration:(void(^)(AlivcLConfiguration *configuration))block;/*!* 推流連接*/- (void)alivcLiveVideoConnectServer;/*!* 推流斷開連接*/- (void)alivcLiveVideoDisconnectServer;/*!* 調試信息** @return 調試信息*/- (AlivcLDebugInfo *)dumpDebugInfo;/*!* 當前碼率** @return 碼率*/- (NSInteger)alivcLiveVideoBitRate;
4.2 delegate監聽回調
| 成員 | 功能 |
|---|---|
| error | 推流錯誤 |
| NetworkSlow | 網速慢 |
| ConnectSuccess | 連接成功 |
| OpenVideoSuccess | 攝像頭獲取成功 |
| OpenAudioSuccess | 麥克風獲取成功 |
| openAudioError | 音頻設備打開失敗 |
| openVideoError | 視頻設備打開失敗 |
| encodeAudioError | 音頻編碼失敗 |
| encodeVideoError | 視頻編碼失敗 |
| bitrateStatusChange | 碼率變化 |
| ReconnectTimeout | 重連超時 |
4.3 AlivcLDebugInfo
類名: AlivcLDebugInfo
功能: 提供推流實時調試信息
成員:
| 成員 | 功能 |
|---|---|
| cameraPresent | 攝像頭方向 |
| connectStatus | 連接狀態 |
| fps | 當前編碼幀數 |
| encodeSpeed | 編碼速度 |
| speed | 當前上傳速度 單位byte |
| localBufferSize | 本地buffer大小 |
| localBufferAudioCount | 本地buffer音頻幀數 |
| localBufferVideoCount | 當前buffer視頻幀數 |
| localDelay | 編碼耗時 單位ms |
| pushSize | 當前上傳數據大小 單位 byte |
| keyFrameDTS | 上一個關鍵幀dts |
| currentVideoPTS | 當前輸出流video pts |
| currentAudioPTS | 當前輸出流audio pts |
| encodeFrameCount | 所有編碼幀數 |
| pushFrameCount | 所有發送幀數 |
| videoDiscardFrameCount | 視頻丟幀數 |
| audioDiscardFrameCount | 音頻丟幀數 |
| cycleDelay | 周期性延遲 單位 ms |
5. 注意事項
無
6. 版權聲明
版權所有,切勿盜版
最後更新:2016-11-24 11:23:49
上一篇:
Android 推流SDK使用說明__SDK文檔及下載_API及SDK_視頻直播-阿裏雲
下一篇:
Android播放器SDK說明__SDK文檔及下載_API及SDK_視頻直播-阿裏雲
虛擬主機被搜索引擎爬蟲訪問耗費大量流量解決方法___安全問題_技術分享_雲虛機主機-阿裏雲
PullLogs__日誌庫相關接口_API-Reference_日誌服務-阿裏雲
實驗目標__快速入門_推薦引擎-阿裏雲
付費用戶首超百萬 阿裏雲下一步落子何處?
價格摘要___購買指導_DDoS 高防IP-阿裏雲
提交轉碼作業__轉碼接口_API使用手冊_媒體轉碼-阿裏雲
基本概念__用戶手冊_雲服務總線 CSB-阿裏雲
Docker使用方法__軟件鏡像_高性能計算-阿裏雲
大於短信推送__短信推送_開發人員指南_消息服務-阿裏雲
GetLiveChannelInfo__關於LiveChannel的操作_API 參考_對象存儲 OSS-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲