7 视频投屏
7.1 概述
点播投屏功能,支持使用 乐播SDK 或 慕享SDK 将视频(加密/非加密),投至大屏设备中进行观看(大屏设备需支持安卓系统,且需下载 “乐播投屏”App 或 慕享SDK配套的“傲软投屏接收端”App)。
其中,加密视频只能通过保利威的投屏模块进行投屏,不支持其他投屏模块(如iPhone自带的AirPlay)进行投屏。
目前暂时不支持AirPlay投屏。
保利威点播已封装好投屏UI、交互及功能,且代码开源。本篇目将介绍投屏模块如何使用。
注:乐播投屏自2022年5月31日起开始收费,幕享投屏自2022年11月24日开始收费
7.2 集成
7.2.1 源码引入
使用点播投屏,需将投屏模块的开源代码文件拖入工程。
开源代码在 Github iOS点播Demo或Gitee iOS点播Demo已包含,可下载 Demo。文件路径为/PolyvVodSDKDemo/Classes/Cast,其中PLVCastManager类在2.17.0版本之前封装的是乐播SDK,而在2.17.0版本之后封装的是慕享投屏SDK,可根据项目情况自由选择。
投屏部分UI代码(横竖屏投屏按钮),位于 PolyvVodSDKDemo/PolyvOpenSourceModule 该目录下。若本身已使用保利威点播播放器皮肤 PLVVodSkinPlayerController
,则无需再次引入。若本身 UI 是自定义,未使用PLVVodSkinPlayerController
,则可参照其中的投屏相关代码,自行创建横竖屏投屏按钮。
7.2.2 Pod 投屏 SDK
投屏模块依赖投屏 SDK,可以使用 Cocoapods 进行快速集成。
# 集成乐播投屏SDK
pod 'LBLelinkKit', '~> 30201'
# 或者
# 集成慕享投屏SDK
pod 'PLVDLNASender', '~>1.4.0'
7.2.3 获取 AppId、AppSecret
集成投屏模块,需具备与自家项目 BundleID 匹配的 AppId、AppSecret,请咨询 Polyv 技术支持进行获取。
7.2.4 提交AppStore审核时勾选说明
乐播LBLelinkKit投屏库,默认采集IDFA标识。
对于应用本身没有获取IDFA的情况,建议将应用提交至AppStore时按如下方式配置:(以避免被苹果以“应用不含广告功能,但获取了广告标识符IDFA”的理由而拒绝其上架。)

慕享投屏SDK,没有采集IDFA标识,无需特殊配置。
7.3 快速使用
7.3.1 填写 AppId、AppSecret
在 PLVCastManager.h
中填写 AppId
、AppSecre
:
// 乐播投屏SDK APPID 和 APPSECRET 需与包名绑定,获取方式请咨询Polyv技术支持
static NSString * const LBAPPID = @""; // APP id
static NSString * const LBSECRETKEY = @""; // 密钥
// 或者
// 慕享投屏SDK APPID 和 APPSECRET 需与包名绑定,获取方式请咨询Polyv技术支持
static NSString * const DLAPPID = @"";
static NSString * const DLSECRETKEY = @"";
7.3.2 在 AppDelegate 中获取授权
// 引用投屏类
#import "PLVCastBusinessManager.h"
// 请求投屏权限
[PLVCastBusinessManager getCastAuthorization];
7.3.3 在播放页面初始化
// 引用投屏类
#import "PLVCastBusinessManager.h"
// 投屏管理器
@property (nonatomic, strong) PLVCastBusinessManager * castBM; // 投屏功能管理器
// 初始化
if ([PLVCastBusinessManager authorizationInfoIsLegal]) {
self.castBM = [[PLVCastBusinessManager alloc] initCastBusinessWithListPlaceholderView:self.view player:self.player];
[self.castBM setup];
}
其中,self.view
是播放页面控制器的 view,self.player
是保利威点播播放器 PLVVodPlayerViewController
。
7.3.4 显示投屏按钮
该小节默认用户使用保利威点播播放器皮肤 PLVVodSkinPlayerController
。
在该控制器中搜索 “投屏”,并解开相关的注释代码即可。
若 PLVVodSkinPlayerController
中没有相关投屏代码,请下载最新 iOS 保利威点播 Demo,并进行源码更新。
7.3.5 销毁投屏模块
- (void)dealloc {
[self.castBM quitAllFuntionc];
}
7.3.6 调试
(1)安装接收端
调试过程,一般需要找个接收端,来测试投屏功能是否正常。可以在安卓手机上下载、安装乐播接收端App 或者 慕享配套的傲软投屏接收端App
(2)切换 WIFI
接收端需要和发送端在同一WIFI网络下。
(3)确认 BundleID
若需安装到自己的真机,进行真机调试。
则需联系技术支持,提供自家的 BundleID,来获得投屏所需的 APPID、SECRETKEY。并填写在PLVCastManager.h
中。
(4)选择投屏设备
打开接收端 App后,接收端 App 会显示当前接收端名字,如“乐播投屏 N1”。
则在发送端 Demo 的播放页面,弹出的设备选择列表中,选中要投屏的设备,即可测试是否能正常投屏。
(5)打印调试
PLVCastManager.m
中,搜索
// 仅乐播sdk支持
[LBLelinkKit enableLog:NO];
并改写成 YES,即可打开投屏调试打印。
7.4 其他说明
上述三小节可帮助开发者快速集成及投入使用投屏模块。
具体 API 方法的说明,在源码中已有详细的注释,参考对应头文件即可了解。
若需自定义,或修改部分逻辑、交互,可参考此小节说明。
7.4.1 文件结构
Cast
├── PLVCastBusinessManager.h // 投屏业务管理器,主要封装对 PLVCastManager、PLVCastControllView、PLVCastServiceListView 的使用
├── PLVCastBusinessManager.m
├── PLVCastManager.h // 投屏管理器,主要封装投屏SDK的使用。2.17.0版本以前该文件封装的是乐播SDK,2.17.0版本之后该文件封装的是慕享投屏SDK
├── PLVCastManager.m
├── PLVCastControllView.h // 投屏控制视图,投屏开始后,显示在播放器上的控制界面
├── PLVCastControllView.m
├── PLVCastServiceListView.h // 投屏设备选择列表视图,在搜索设备过程,显示设备并供以用户选择
└── PLVCastServiceListView.m
7.4.2 开启投屏 SDK 打印
若需调试投屏 SDK,可在 getCastAuthorization
方法中,调用以下方法打开打印
// 仅乐播sdk支持
[LBLelinkKit enableLog:YES];
7.4.3 防录屏开关影响
当前默认逻辑,若播放器 PLVVodPlayerViewController
启用了防录屏 videoCaptureProtect=YES
,则投屏按钮默认不显示、初始化投屏无效。若希望不受防录屏开关影响,可调整以下两处:
(1)PLVVodSkinPlayerController.m
中,搜索并移除该判断条件:
self.videoCaptureProtect == NO
(2)PLVCastBusinessManager.m
的 setup
方法,注释以下判断:
if (self.player.videoCaptureProtect) {
NSLog(@"PLVCastBusinessManager - 警告:播放器防录屏功能已开启,保利威投屏模块将不可用");
return;
}
7.4.4 报错 “PLVVodPlayerSkin.h not found”
若没有使用保利威点播播放器皮肤 PLVVodSkinPlayerController
(没拖入 Demo 源码中的 PolyvOpenSourceModule 文件夹)。则集成投屏模块时,可能会出现此报错。此时可将涉及 PLVVodPlayerSkin
的地方注释或移除,并参考 7.4.5 进行投屏按钮的自行创建及对接。
7.4.5 自定义投屏按钮
若没有使用保利威点播播放器皮肤 PLVVodSkinPlayerController
,则使用投屏模块,需要自行创建投屏按钮。按钮的创建本小节不阐述,主要说明如何对接到投屏模块。
(1)PLVCastBusinessManager.h
新增方法
- (void)castButtonTouchHandler:(UIButton *)button;
(2)PLVCastBusinessManager.m
新增方法实现
- (void)castButtonTouchHandler:(UIButton *)button{
[self.castListV show];
if ([PLVCastManager wifiCanUse]) {
self.castListV.showAirPlayOption = YES;
[self.castListV refreshBtnClickToSelected:YES];
}else{
[self.castListV refreshBtnClickToSelected:NO];
}
}
(3)移除原按钮逻辑
搜 PLVVodPlayerSkin
,并注释相应的类引用、对象的使用(castButtonTouchHandler
的实现、skin
的属性调用)
(4)对接自定义投屏按钮事件
PLVCastBusinessManager.m
中,搜listViewShowOrHideEvent
实现。可在isShow
的else
判断结果处,将自定义按钮的selected
状态改为 No。(此处代表设备选择列表已隐藏,投屏按钮不应处于选中状态)自定义按钮被触发时,使用
PLVCastBusinessManager
对象调用刚创建的castButtonTouchHandler
方法
Last updated
Was this helpful?