乐趣区

关于ios:iOS之摄像头推流

iOS 之摄像头推流

性能概述

摄像头推流,是指采集手机摄像头的画面以及麦克风的声音,进行编码之后再推送到直播云平台上。腾讯云 LiteAVSDK 通过 TXLivePusher 接口提供摄像头推流能力,如下是 LiteAVSDK 的简略版 Demo 中演示摄像头推流的相干操作界面:

特地阐明

  • 不绑定腾讯云
    SDK 不绑定腾讯云,如果要推流到非腾讯云地址,请在推流前设置 TXLivePushConfig 中的enableNearestIP 为 false。但当您要推流的地址为腾讯云地址时,请务必在推流前将其设置为 YES,否则 SDK 针对腾讯云的协定优化将不能发挥作用。
  • x86 模拟器调试
    因为 SDK 大量应用 iOS 零碎的音视频接口,这些接口在 Mac 上自带的 x86 仿真模拟器下往往不能工作。所以,如果条件容许,举荐您尽量应用真机调试。

示例代码

所属平台

GitHub 地址

要害类

iOS

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];
复制代码
  • 如何获取可用的推流 URL?
    开明直播服务后,能够应用【直播控制台】>【辅助工具】>【地址生成器】生成推流地址,详细信息请参见 推拉流 URL。
  • 返回 -5 的起因?
    如果 startPush 接口返回 -5,则代表您的 License 校验失败了,请查看 第 2 步“给 SDK 配置 License 受权”中的工作是否有问题。
退出移动版