-
Notifications
You must be signed in to change notification settings - Fork 254
4 快速开始
maverick edited this page Aug 18, 2016
·
2 revisions
- 4 快速开始
- 4.1 开发环境配置
- 4.2 导入SDK
- 4.2.1 使用 CocoaPods 导入
- 4.2.2 手动导入
- 4.3 初始化推流逻辑
- 4.3.1 添加引用并初始化 SDK 使用环境
- 4.3.2 添加 session 属性
- 4.3.3 添加 App Transport Security Setting
- 4.4 创建流对象
- 4.4.1 创建 streamJson
- 4.4.2 创建视频和音频的采集和编码配置对象
- 4.4.3 创建推流 session 对象
- 4.5 预览摄像头拍摄效果
- 4.6 添加推流操作
- 4.7 查看推流内容
- 4.7.1 登录pili.qiniu.com 查看内容
- 4.7.2 demo下载
推荐使用 CocoaPods 的方式导入,步骤如下:
- 在工作目录中创建名称为 Podfile 的文件
- 在 Podfile 中添加如下一行
pod 'PLCameraStreamingKit'
- 在终端中运行
$ pod install
或
$ pod update
到此,你已完成了 PLCameraStreamingKit 的依赖添加。
我们建议使用 CocoaPods 导入,如果由于特殊原因需要手动导入,可以按照如下步骤进行:
- 将 Pod 目录下的文件加入到工程中;
- 将 https://github.com/qiniu/happy-dns-objc HappyDNS 目录下的所有文件加入到工程中;
- 将 https://github.com/pili-engineering/pili-librtmp Pod 目录下的所有文件加入到工程中
- 将 https://github.com/pili-engineering/PLStreamingKit Pod 目录下的所有文件加入到工程中
- 在工程对应 TARGET 中,右侧 Tab 选择 "Build Phases",在 "Link Binary With Libraries" 中加入 UIKit、AVFoundation、CoreGraphics、CFNetwork、CoreMedia、AudioToolbox 这些 framework,并加入 libc++.tdb、libz.tdb 及 libresolv.tbd;
- 在工程对应 TARGET 中,右侧 Tab 选择 "Build Settings",在 "Other Linker Flags" 中加入 "-ObjC" 选项;
在 AppDelegate.m
中添加引用
#import <PLCameraStreamingKit/PLCameraStreamingKit.h>
并在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
中添加如下代码:
[PLStreamingEnv initEnv];
然后在 ViewController.m
中添加引用
#import <PLCameraStreamingKit/PLCameraStreamingKit.h>
添加 session 属性在 ViewController.m
@property (nonatomic, strong) PLCameraStreamingSession *session;
###4.3.3 添加 App Transport Security Setting
- 如图所示
// streamJSON 是从服务端拿回的
//
// 从服务端拿回的 streamJSON 结构如下:
// @{@"id": @"stream_id",
// @"title": @"stream_title",
// @"hub": @"hub_id",
// @"publishKey": @"publish_key",
// @"publishSecurity": @"dynamic", // or static
// @"disabled": @(NO),
// @"profiles": @[@"480p", @"720p"], // or empty Array []
// @"hosts": @{
// ...
// }
NSDictionary *streamJSON = @{ // 这里按照之前从服务端 SDK 中创建好的 stream json 结构填写进去 };
PLStream *stream = [PLStream streamWithJSON:streamJSON];
当前使用默认配置,之后可以深入研究按照自己的需求做更改
PLVideoCaptureConfiguration *videoCaptureConfiguration = [PLVideoCaptureConfiguration defaultConfiguration];
PLAudioCaptureConfiguration *audioCaptureConfiguration = [PLAudioCaptureConfiguration defaultConfiguration];
PLVideoStreamingConfiguration *videoStreamingConfiguration = [PLVideoStreamingConfiguration defaultConfiguration];
PLAudioStreamingConfiguration *audioStreamingConfiguration = [PLAudioStreamingConfiguration defaultConfiguration];
self.session = [[PLCameraStreamingSession alloc] initWithVideoCaptureConfiguration:videoCaptureConfiguration audioCaptureConfiguration:audioCaptureConfiguration videoStreamingConfiguration:videoStreamingConfiguration audioStreamingConfiguration:audioStreamingConfiguration stream:stream videoOrientation:AVCaptureVideoOrientationPortrait];
将预览视图添加为当前视图的子视图
[self.view addSubview:self.session.previewView];
取一个最简单的场景,就是点击一个按钮,然后触发发起直播的操作。
我们在 view
上添加一个按钮吧。
我们在 - (void)viewDidLoad
方法最后添加如下代码
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
[button setTitle:@"start" forState:UIControlStateNormal];
button.frame = CGRectMake(0, 0, 100, 44);
button.center = CGPointMake(CGRectGetMidX([UIScreen mainScreen].bounds), CGRectGetHeight([UIScreen mainScreen].bounds) - 80);
[button addTarget:self action:@selector(actionButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
- (void)actionButtonPressed:(id)sender {
[self.session startWithCompleted:^(BOOL success) {
if (success) {
NSLog(@"Streaming started.");
} else {
NSLog(@"Oops.");
}
}];
}
Done,没有额外的代码了,现在可以开始一次推流了。
如果运行后,点击按钮提示 Oops.
,就要检查一下你之前创建 PLStream
对象时填写的 StreamJson
是否有漏填或者填错的内容。
###4.7.1 登录 pili.qiniu.com 查看内容
- 登录 pili.qiniu.com
- 登录
streamJson
中使用的 hub - 查看
stream
属性 - 点击属性中的播放 URL 后的箭头,即可查看内容。