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 Description
Privacy - 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-阿裏雲