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];
复制代码
相关文章
相关标签/搜索