关于
Veeplay媒体播放器允许您
- 创建同步视频和叠加层的播放列表
- 从外部JSON文件、等效的NSDictionary结构或直接通过代码属性配置播放列表
- 创建自定义、原生的叠加层
- 自动配置线性插入(前、中、后广告)以及非线性插入(横幅叠加层),符合VAST 1.0、2.0、3.0和VMAP 1.0规范
- 创建自定义播放器皮肤,用logo标记播放器,插入叠加广告,自定义播放器控件
- 实时跟踪视频和叠加层生命周期事件,如渲染
演示
安装cocoapods,然后运行:
pod try Veeplay
安装
目前有两条集成路径:通过CocoaPods或通过标准库下载。
-
通过CocoaPods安装(推荐)
-
将以下行添加到您的Podfile中
pod 'Veeplay'
-
运行
pod install
以安装播放器和所有依赖项。运行pod update
以保持库更新。
-
-
通过库下载安装
-
将
MediaPlayer.framework
、AVFoundation.framework
、CoreMedia.framework
、SystemConfiguration.framework
和libz.dylib
添加到您的项目中。- 在项目设置屏幕中选择您的目标。
- 选择“构建阶段”标签页。
- 展开“链接二进制与库”区域。
- 单击“+”按钮,并将
MediaPlayer.framework
,AVFoundation.framework
,CoreMedia.framework
,SystemConfiguration.framework
和libz.dylib
添加到您的项目中。
-
将播放器的静态库添加到您的项目中。
- 将“libVeeplay.a”文件拖到您的项目中。
- 被提示时,请确保选中应该链接到静态库的项目目标。
- 在项目设置屏幕中选择您的目标。
- 选择“构建设置”标签。
- 搜索“其他链接器标志”,并确保存在“-ObjC”标志。如果不存在,请添加它。
- 搜索“iOS部署目标”,并确保将值设置为iOS 5及以上(iOS < 5不受支持)。
-
将播放器的头文件添加到您的项目中。
-
将“headers”文件夹中的所有头文件拖到您的Xcode项目中,或者
-
在项目设置屏幕中选择您的目标。
-
选择“构建设置”标签。
-
搜索“头文件搜索路径”,并确保所有头文件都在Xcode已知的位置。
-
-
将播放器的资源文件添加到您的项目中。
- 将“Assets”文件夹中的所有文件拖到您的Xcode项目中。
- 被提示时,请确保选中应该包含资源的项目目标。
-
开始使用
在 https://panel.veeplay.com 上设置一个账户,并在“许可管理”下添加您应用的bundle标识。
导入播放器的头文件,以及VAST/VMAP或其他插件
#import "APSMediaPlayer.h"
#import "APSVASTMediaBuilderPlugin.h"
创建一个新的APSMediaBuilder实例,并按需添加插件作为APSMediaUnit
APSMediaBuilder *builder = [[APSMediaBuilder alloc] init];
[builder addPlugin:[[APSVASTMediaBuilderPlugin alloc] init]];
可选,将APSMediaUnit的debugMode标志设置为YES以启用控制台日志记录
builder.debugMode = YES;
将媒体播放器添加到一个视图中
[APSMediaPlayer sharedInstance].view.frame = CGRectMake(5, 5, 310, 450);
[self.view addSubview:[APSMediaPlayer sharedInstance].view];
下一步是创建一个 APSMediaUnit
的播放列表,供播放器播放。这是 builder
对象所完成的;它 acts like a configurable APSMediaUnit
和 APSMediaOverlay
工厂。可以通过指定一个指向JSON配置文件的URL或提供在 NSDictionary
容器中的类似配置结构来进行配置。
由于远程配置涉及网络请求的过程,因此构建器公开了一个异步配置方法
[builder configureFromURL:[NSURL URLWithString:@"http://example.com/player.json"] onComplete:^ {
// TODO: Request and play media units here
}];
在这一点上,构建器已配置并能够生成一个准备播放的媒体单元数组。但是,在请求单元生成时,像 APSVASTMediaBuilderPlugin
这样的插件需要执行额外的网络请求才能工作。因此,还有一个异步单元检索方法
[builder configureFromURL:[NSURL URLWithString:@"http://example.com/player.json"] onComplete:^ {
[builder requestMediaUnitsWithCompletionBlock:^(NSArray *units) {
[[APSMediaPlayer sharedInstance] playMediaUnits:units];
}];
}];
在最终执行块中,我们指示播放器使用通过JSON输入远程配置的最终生成的媒体单元数组开始播放。
从JSON配置
查看 此指南 以获取所有可用配置选项和示例的相关文档。
创建自定义覆盖控制器
APSMediaPlayer 允许开发者创建自己的、JSON 或字典配置的可配置覆盖。要创建一个自定义覆盖
-
创建一个新的类,该类继承自 APSMediaPlayerOverlayController,它是自身的
UIViewController
子类。 -
实现 [KRAdapter 类型],返回一个唯一字符串来标识覆盖。这在配置字典中也被使用。
-
实现 [APSMediaPlayerOverlayControllerProtocol load],以执行自定义覆盖创建代码。当播放器第一次调用覆盖控制器对象时,将调用此方法。您可以使用
self.overlay.parameters
访问在 JSON 或 NSDictionary 配置中定义的配置参数。您也可以使用self.overlay.parentUnit
访问当前运行单元的信息。 -
根据需要实现任何其他协议定义的方法,请参阅
APSMediaPlayerOverlayControllerProtocol
以获取完整列表。 -
将新创建的类注册到播放器
[[APSMediaPlayer sharedInstance] registerClass:[CLASSNAME class] inGroup:kAPSMediaPlayerOverlayControllersGroup type:@"TYPE"];
使用 Chromecast
要连接并发送播放到 Google Chromecast,您需要安装 Veeplay Chromecast 插件。请参阅完整文档 此处。
安装
-
将以下行添加到您的 Podfile
pod "VeeplayChromecast"
-
或者,如果您不使用 CocoaPods 进行安装,请从 存储库 获取最新静态库、头文件和资源。还请安装最新版本的 Google Cast iOS Sender API 库。
-
导入 VeeplayChromecastManager 头文件
#import "VeeplayChromecastManager.h"
要启动插件,设置 APSChromeCastManager
共享实例上的 Chromecast 应用程序 ID
[APSChromecastManager sharedInstance].chromecastAppId = @"appid"
您可以通过将 chromecast
添加到 JSON 配置文件中的 controls
部分的组件数组,在控制栏中显示 Chromecast 播放控制
{
"content": [
"url": "http://......",
"autoplay": true,
"controls": {
"components": [
"playback",
"totalTime",
"slider",
"currentTime",
"chromecast"
]
}
]
}
另外,也可以通过将 kAPSChromecastControl 添加到 APSMediaUnit
的 controlsParameters
属性来程序化地配置此功能
unit.controlsParameters = @{kAPSControlsComponents: @(APSPlaybackControl|APSCurrentTimeControl|APSTimeSliderControl|APSTotalTimeControl|kAPSChromecastControl|APSFullScreenControl)};
使用 Google IMA SDK
可选地,Veeplay 允许使用 Google 的 IMA SDK 而不是内部 VAST 广告播放器。要执行此操作,首先添加 VeeplayIma 集成
pod "VeeplayIma", "~> 1.0"
然后,尽快启用 Veeplay 以使用 Google IMA
[[APSMediaPlayer sharedInstance] setPreferGoogleIma:YES];
使用 Marlin DRM
APSMediaPlayer 支持使用由 ExpressPlay 提供的 SDK 提供的 Marlin DRM。请参阅完整文档 此处。
安装
-
安装 ExpressPlay SDK。
-
将以下行添加到您的 Podfile
pod "VeeplayMarlinManager"
-
如果没有使用 CocoaPods 进行安装,请从存储库 此处 获取最新静态库和头文件。
-
导入 VeeplayMarlinManager 头文件
#import "VeeplayMarlinManager.h"
-
实例化 Marlin 管理对象并将其注册到播放器中
VeeplayMarlinManager *marlinManager = [[VeeplayMarlinManager alloc] init]; [[APSMediaPlayer sharedInstance] registerUnitManager:marlinManager];
-
将 APSMediaUnit 对象的
managerType
属性设置为@"marlin"
。 -
可选地,为了使播放器下载并将宽带许可证添加到本地存储,可以将项的
metadata
字典中的kAPSMetadataDrmUrl
键设置为许可证文件的字符串 URL。要从 JSON 配置,设置drm_encoding_url
元数据键。
启用画中画支持
要启用画中画支持,请确保您已按照 Apple 的文档 中的说明配置了您的项目,然后
-
导入 PiP 后端的头文件
#import <APSPiPPlayer.h>
-
将后端播放器的类设置为
APSPipPlayer
[[APSMediaPlayer sharedInstance] setBackendPlayerClass:[APSPiPPlayer class]];
-
(可选)通过将
APSPiPControl
添加到APSMediaUnit
的controlsParameters
属性在控制栏中显示 Picture in Picture 控制器unit.controlsParameters = @{kAPSControlsComponents: @(APSPlaybackControl|APSCurrentTimeControl|APSTimeSliderControl|APSTotalTimeControl|kAPSChromecastControl|APSPiPControl)};
-
或者,您还可以通过将
pictureInPicture
添加到配置文件中的 JSON 配置文件中controls
部分下的组件数组中,在控制栏中显示 Picture in Picture 播放控制器{ "content": [ "url": "http://......", "autoplay": true, "controls": { "components": [ "playback", "totalTime", "slider", "currentTime", "pictureInPicture" ] } ] }
-
启用后台播放
要启用在应用程序后台运行时播放视频,首先在您的应用程序功能中 启用后台音频,然后将 APSMediaPlayer 的 enableBackgroundPlayback
属性设置为 true
。
[APSMediaPlayer sharedInstance].enableBackgroundPlayback = YES;
示例单元配置
-
以编程方式配置单元
APSMediaUnit *unit = [[APSMediaUnit alloc] init]; unit.url = [NSURL URLWithString:@"http://url.to/your-protected-media"]; unit.managerType = kVeeplayMarlinDRMEncoding; unit.metadata = [NSMutableDictionary dictionaryWithDictionary: @{ kAPSMetadataDrmUrl: @"http://url.to/marlin-broadband-key" }];
-
从JSON配置单元
{ "url": "http://url.to/your-protected-media", "manager": "marlin", "metadata": { "drm_encoding_url": "http://url.to/marlin-broadband-key" } }
类参考
查看完整的类参考这里.
代码示例
查看展示代码示例的项目,包含各种播放场景的代码示例这里.
如果您已安装 cocoaPods,您可以在终端输入 pod try Veeplay
立即看到 Veeplay 播放器的演示。
需求
APSMediaPlayer 依赖于以下作为依赖项安装的免费许可库
作者
Appscend Video Solutions GmbH
许可
商业许可。请联系 [email protected]。