搜索本产品文档关键词
投屏功能接入
所有文档
menu

智能视频SDK

投屏功能接入

接入准备

  • 接入投屏功能,需要使用播放器SDK高级版,并申请高级版License。
  • 在frameworks目录下有ProjectionEngine.framewok,将它导入到你的项目中,并设置到Xcode的Link Binary With Libraries选项中

功能介绍

在高级版SDK中,提供了DLNA投屏能力,可以将手机端的视频内容推送到大屏端进行播放,并且支持在手机端远程控制大屏端的媒体播放。该能力由ProjectionEngine组件提供,请确保该组件已集成到你的App中。

快速开始

1.初始化ProjectionEngine组件传入LicenseID

Objective-C
1// 需要传入您申请的高级版证书LicenseID,ID可以在百度智能云控制台查看
2[[ProjectionEngine shareManager] setLicenseID:LICENSE_ID];

2.实现设备发现回调,开始搜索投屏设备,当找到设备时,会利用回调进行通知

Objective-C
1// 设备发现回调,可以在这里将发现到的接收端信息保存起来
2#pragma mark DeviceListenerDelegate
3- (void)OnAddDevice:(DeviceUpnp *) device {
4    NSLog(@"OnAddDevice == %@", device.friendlyName);
5    if (![self.dataArray containsObject:device]) {
6        [self.dataArray addObject:device];
7    }
8}
9
10- (void)OnRemoveDevice:(DeviceUpnp *) device {
11    if ([self.dataArray containsObject:device]) {
12        [self.dataArray removeObject:device];
13    }
14}
15[[ProjectionEngine shareManager] searchDeviceBegin:self];

3.选择设备并发起投屏

Objective-C
1// 从之前保存的接收端信息中选出一个作为发起投屏的目标
2DeviceUpnp *model = self.dataArray[indexPath.row];
3// 分配渲染控制器, playId作为渲染控制器标识,后续的媒体播放控制都基于它完成
4self.playId = [[ProjectionEngine shareManager] distributeProjectionRender:model delegate:self];
5// 设置接收端要播放的媒体url
6NSString *urlStr = [self.delegate getCurrentPlayerUrl];
7[[ProjectionEngine shareManager] setAVTransportURL:self.playId url:urlStr];

4.控制接收端的媒体播放

Objective-C
1// 播放
2[[ProjectionEngine shareManager] play:self.playId speed:1];
3// 暂停
4[[ProjectionEngine shareManager] pause:self.playId];
5// seek, 单位为秒
6[[ProjectionEngine shareManager] seek:self.playId realTime:self.slider.value];
7// 停止
8[[ProjectionEngine shareManager] stop:self.playId];

5.停止搜索设备

Objective-C
1[[ProjectionEngine shareManager] searchDeviceEnd];

6.结束投屏并释放渲染控制器

Objective-C
1[[ProjectionEngine shareManager] stop:self.playId];
2[[ProjectionEngine shareManager] releaseProjectionRender:self.playId];

在播放器SDK Demo中的PlayerControlVC类对上述流程有详细的展示,可以参考。

关于组播权限申请的说明

投屏设备的发现依赖组播消息的发送。自iOS14.5开始,苹果对APP的组播权限增加了控制,需要开发者单独向苹果申请组播权限。申请方式参考苹果官网文档,通过申请后,在APP的.entitlements配置文件中添加如下内容即可。

Plain Text
1<key>com.apple.developer.networking.multicast</key>
2<true/>

接口说明

ProjectionEngine类

接口名
描述
+ (instancetype)shareManager 获取投屏引擎单例
- (void) setLicenseID:(NSString*)licenseId 传入LicenseID
- (NSString*) getVersion 获取投屏引擎版本号
- (void) searchDeviceBegin:(id) deviceObserverDelegate 开始搜索设备,鉴权失败的情况下会抛出异常
- (void) searchDeviceEnd 停止搜索设备
- (int) distributeProjectionRender:(DeviceUpnp*) devicedelegate:(id )renderListener 分配渲染控制器,返回值作为渲染控制器标识
- (void)releaseProjectionRender:(int)renderIndex 释放渲染控制器
- (void)setAVTransportURL:(int)renderIndexurl:(NSString*)url 设置接收端播放的URL
- (void)play:(int)renderIndex speed:(int)realtime 开始接收端播放,当前speed仅支持传入1
- (void)pause:(int)renderIndex 暂停接收端播放
- (void)stop:(int)renderIndex 停止接收端播放
- (void)seek:(int)renderIndex realTime:(float)realtime 控制接收端进度seek,单位为秒
- (int)getDuration:(int)renderIndex 获取媒体流时长
- (int)getCurPos:(int)renderIndex 获取当前播放位置

DeviceUpnp类

属性名
描述
uuid 获取接收端设备ID
friendlyName 获取接收端设备名

事件回调
含义
- (void)OnAddDevice:(DeviceUpnp *) device 发现设备
- (void)OnRemoveDevice:(DeviceUpnp *) device 移除设备
上一篇
超低延时直播功能接入
下一篇
VR功能接入