iOS之攝像頭推流

iOS之攝像頭推流

功能概述

攝像頭推流,是指採集手機攝像頭的畫面以及麥克風的聲音,進行編碼以後再推送到直播雲平臺上。騰訊雲 LiteAVSDK 經過 TXLivePusher 接口提供攝像頭推流能力,以下是 LiteAVSDK 的簡單版 Demo 中演示攝像頭推流的相關操做界面:
java

特別說明

  • 不綁定騰訊雲
    SDK 不綁定騰訊雲,若是要推流到非騰訊雲地址,請在推流前設置 TXLivePushConfig 中的enableNearestIP爲 false。但當您要推流的地址爲騰訊雲地址時,請務必在推流前將其設置爲 YES,不然 SDK 針對騰訊雲的協議優化將不能發揮做用。
  • x86 模擬器調試
    因爲 SDK 大量使用 iOS 系統的音視頻接口,這些接口在 Mac 上自帶的 x86 仿真模擬器下每每不能工做。因此,若是條件容許,推薦您儘可能使用真機調試。

示例代碼

所屬平臺git

GitHub 地址github

關鍵類segmentfault

iOSapp

Github工具

CameraPushViewController.m測試

Android優化

Github動畫

CameraPushImpl.java編碼

功能對接

1. 下載 SDK 開發包

下載 SDK 開發包,並按照 SDK 集成指引 將 SDK 嵌入您的 App 工程中。

2. 給 SDK 配置 License 受權

單擊 License 申請 獲取測試用的 License,您會得到兩個字符串:一個字符串是 licenseURL,另外一個字符串是解密 key。

在您的 App 調用 LiteAVSDK 的相關功能以前(建議在 - [AppDelegate application:didFinishLaunchingWithOptions:] 中)進行以下設置:

@import TXLiteAVSDK_Professional;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSString * const licenceURL = @"<獲取到的licenseUrl>";
    NSString * const licenceKey = @"<獲取到的key>";

    //TXLiveBase 位於 "TXLiveBase.h" 頭文件中
    [TXLiveBase setLicenceURL:licenceURL key:licenceKey]; 
    NSLog(@"SDK Version = %@", [TXLiveBase getSDKVersionStr]);
}
@end
複製代碼

3. 初始化 TXLivePush 組件

首先建立一個TXLivePushConfig對象。該對象能夠指定一些高級配置參數,但通常狀況下咱們不建議您操做該對象,由於咱們已經在其內部配置好了全部須要校調的參數。以後再建立一個TXLivePush對象,該對象負責完成推流的主要工做。

TXLivePushConfig *_config = [[TXLivePushConfig alloc] init];  // 通常狀況下不須要修改默認 config   

 TXLivePush *_pusher = [[TXLivePush alloc] initWithConfig: _config]; // config 參數不能爲空
複製代碼

4. 開啓攝像頭預覽

調用 TXLivePush 中的startPreview接口能夠開啓當前手機的攝像頭預覽。您須要爲startPreview 接口提供一個用於顯示視頻畫面的 view 對象。

//建立一個 view 對象,並將其嵌入到當前界面中
 UIView *_localView = [[UIView alloc] initWithFrame:self.view.bounds];
 [self.view insertSubview:_localView atIndex:0];
 _localView.center = self.view.center;

 //啓動本地攝像頭預覽
 [_pusher startPreview:_localView];
複製代碼

注意:

若是要給 view 增長動畫效果,須要修改 view 的 transform 屬性而不是 frame 屬性。

[UIView animateWithDuration:0.5 animations:^{
            _localView.transform = CGAffineTransformMakeScale(0.3, 0.3); //縮小1/3
        }];
複製代碼

5. 啓動和結束推流

若是已經經過startPreview接口啓動了攝像頭預覽,就能夠調用 TXLivePush 中的startPush接口開始推流。563513413,無論你是大牛仍是小白都歡迎入駐

//啓動推流
NSString* rtmpUrl = @"rtmp://test.com/live/xxxxxx";    //此處填寫您的 rtmp 推流地址
[_pusher startPush:rtmpUrl];
複製代碼

推流結束後,能夠調用 TXLivePush 中的stopPush接口結束推流。請注意,若是已經啓動了攝像頭預覽,請在結束推流時將其關閉,不然會致使 SDK 的表現異常。

//結束推流
[_pusher stopPreview]; //若是已經啓動了攝像頭預覽,請在結束推流時將其關閉。
[_pusher stopPush];
複製代碼
相關文章
相關標籤/搜索