前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ios摄像头推流(1)

ios摄像头推流(1)

原创
作者头像
ios-lan
修改2020-10-19 10:08:40
1.2K0
修改2020-10-19 10:08:40
举报
文章被收录于专栏: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:] 中)进行如下设置:

代码语言:javascript
复制
@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对象,该对象负责完成推流的主要工作。

代码语言:javascript
复制
 TXLivePushConfig *_config = [[TXLivePushConfig alloc] init];  // 一般情况下不需要修改默认 config   

 TXLivePush *_pusher = [[TXLivePush alloc] initWithConfig: _config]; // config 参数不能为空
复制代码
4. 开启摄像头预览

调用 TXLivePush 中的startPreview接口可以开启当前手机的摄像头预览。您需要为startPreview 接口提供一个用于显示视频画面的 view 对象。

代码语言:javascript
复制
 //创建一个 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,不管你是大牛还是小白都欢迎入驻

代码语言:javascript
复制
//启动推流
NSString* rtmpUrl = @"rtmp://test.com/live/xxxxxx";    //此处填写您的 rtmp 推流地址
[_pusher startPush:rtmpUrl];
复制代码

推流结束后,可以调用 TXLivePush 中的stopPush接口结束推流。请注意,如果已经启动了摄像头预览,请在结束推流时将其关闭,否则会导致 SDK 的表现异常。

代码语言:javascript
复制
//结束推流
[_pusher stopPreview]; //如果已经启动了摄像头预览,请在结束推流时将其关闭。
[_pusher stopPush];
复制代码
  • 如何获取可用的推流 URL? 开通直播服务后,可以使用【直播控制台】>【辅助工具】> 【地址生成器】 生成推流地址,详细信息请参见 推拉流 URL

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • iOS之摄像头推流
    • 功能概述
      • 特别说明
        • 示例代码
          • 功能对接
            • 1. 下载 SDK 开发包
            • 2. 给 SDK 配置 License 授权
            • 3. 初始化 TXLivePush 组件
            • 4. 开启摄像头预览
            • 5. 启动和结束推流
        相关产品与服务
        云直播
        云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档