iOS之摄像头推流
功能概述
摄像头推流,是指采集手机摄像头的画面以及麦克风的声音,进行编码之后再推送到直播云平台上。腾讯云 LiteAVSDK 通过 TXLivePusher 接口提供摄像头推流能力,如下是 LiteAVSDK 的简单版 Demo 中演示摄像头推流的相关操作界面:
特别说明
- 不绑定腾讯云
SDK 不绑定腾讯云,如果要推流到非腾讯云地址,请在推流前设置 TXLivePushConfig 中的enableNearestIP
为 false。但当您要推流的地址为腾讯云地址时,请务必在推流前将其设置为 YES,否则 SDK 针对腾讯云的协议优化将不能发挥作用。 - x86 模拟器调试
由于 SDK 大量使用 iOS 系统的音视频接口,这些接口在 Mac 上自带的 x86 仿真模拟器下往往不能工作。所以,如果条件允许,推荐您尽量使用真机调试。
示例代码
所属平台
GitHub 地址
关键类
iOS
CameraPushViewController.m
Android
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 授权” 中的工作是否有问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。