测试测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | 商业 |
发布最近发布 | 2017年3月 |
由Steve Bushell、Jim Whisenant、Tim Rodgers 维护。
iOS 8.0 及以上。
tvOS 9.0 及以上。
Brightcove OnceUX 为 Brightcove Player SDK 提供了两个 iOS 安装包,一个静态库框架和一个动态框架。
要将 Brightcove Player SDK 的 OUX 插件手动添加到您的项目中
BrightcoveOUX.framework
添加到您的项目中。bash ${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/BrightcoveOUX.framework/strip-frameworks.sh
的“运行脚本”阶段。检查“仅当安装时运行脚本”。这将从构建中移除不需要的架构,这对于 App Store 提交非常重要。-ObjC
添加到“其他链接器标志”构建设置。对于 Brightcove Player SDK 的 iOS 版本,oux 插件可以通过几种不同的方式导入到代码中;@import BrightcoveOUX;
、#import <BrightcoveOUX/BrightcoveOUX.h>
或 #import <BrightcoveOUX/[specific class].h>
。
BrightcoveOUX 是一款针对 Brightcove Player SDK for iOS 的插件,它为 Brightcove OnceUX 服务器端广告拼接提供支持。其使用相对简单。
[1] BCOVOUXAdComponentDisplayContainer *displayContainer = [[BCOVOUXAdComponentDisplayContainer alloc] initWithCompanionSlots:@[]];
BCOVPlayerSDKManager *manager = [BCOVPlayerSDKManager sharedManager];
[2] id<BCOVPlaybackController> playbackController = [sdkManager createOUXPlaybackControllerWithViewStrategy:nil];
[3] [playbackController addSessionConsumer:displayContainer];
[4] [self.videoContainer addSubview:playbackController.view];
[5] BCOVVideo *video = [BCOVVideo videoWithURL:[NSURL URLWithString:<url-to-once-ux-video>]];
[6] [playbackController setVideos:@[ video ]];
[playbackController play];
让我们将此代码分解成步骤,以便更容易理解。
BCOVOUXAdComponentDisplayContainer
。此对象将帮助管理伴随广告位。如有所需,请传递伴随广告位。BCOVPlaybackManager
添加了一些分类方法。第一个是 -createOUXPlaybackControllerWithViewStrategy:
。请使用此方法创建您的播放控制器。通常情况下,您将 nil
作为视图策略传递。BCOVOUXAdComponentDisplayContainer
能够显示广告信息并填充伴随广告视图,必须将其添加为会话消费者。BCOVVideo
。如果您有任何问题或需要帮助,请访问 Brightcove Native Player SDKs 支持论坛: https://groups.google.com/forum/#!forum/brightcove-native-player-sdks
BrightcoveOUX 通过 BCOVPlaybackControllerAdsDelegate
提供广告播放信息。例如,如果您想在广告期间隐藏您的控件,可以实施 -[BCOVPlaybackControllerAdsDelegate playbackController:playbackSession:didEnterAdSequence:]
来隐藏它们。
有关如何使用这些委托方法的更多信息,请参阅 Brightcove Player SDK for iOS。
BrightcoveOUX 插件提供了一个应在实施控件时使用的寻找功能。此寻找函数通过会话的 providerExtension
属性公开。以下是它的使用方法
CMTime contentTimeToSeekTo = <calculation-from-scrub-bar>;
[self.currentSession.providerExtension oux_seekToTime:contentTimeToSeekTo completionHandler:^(BOOL finished) {
if (finished)
{
[self.currentSession.player play];
}
}];
当成功寻找完成后,将执行 completionHandler
。如果通过 -[BCOVSessionProviderExtension oux_seekToTime:completionHandler:]
的先前调用已经启动了一个寻找,或者如果正在回放广告,则它将不会执行。为了测试是否可以尝试寻找,请检查 -[BCOVSessionProviderExtension oux_canSeek]
属性。有关这两个方法的更多信息,请务必阅读 headerdoc。
BrightcovePlayerSDK 提供了一个 BOOL 属性,用于在寻找时禁用广告。OnceUX 的使用意图是允许应用程序在重新启动后继续视频播放,而无需让最终用户查看他们已经看过的广告。
建议将广告禁用逻辑添加到 -playbackController:playbackSession:didReceiveLifecycleEvent:
方法中,该方法处理 BCOVPlaybackController
委托的 kBCOVPlaybackSessionLifecycleEventReady
处理程序。
- (void)playbackController:(id<BCOVPlaybackController>)controller
playbackSession:(id<BCOVPlaybackSession>)session
didReceiveLifecycleEvent:(BCOVPlaybackSessionLifecycleEvent *)lifecycleEvent
{
if ([kBCOVPlaybackSessionLifecycleEventReady isEqualToString:lifecycleEvent.eventType])
{
// disable ads.
_playbackController.adsDisabled = YES;
// seek somewhere into the video content.
[session.providerExtension oux_seekToTime:resumeTime completionHandler:^(BOOL finished)
{
// re-enable ads.
_playbackController.adsDisabled = NO;
// open the shutter.
_playbackController.shutterFadeTime = 0.25;
_playbackController.shutter = NO;
}];
}
当调用 oux_seekTo:completion:
来在特定时间恢复播放时,视频的第一帧将可见,直到寻找完成。为了更清晰的表现,可以通过在调用 -setVideos:
之前将 BCOVPlabackController 的 BOOL shutter
属性设置为 YES
来在寻找期间暂时覆盖视频视图。寻找完成后,通过将 shutter
属性设置为 NO
来关闭镜头。shutterFadeTime
属性定义了镜头淡入淡出动画的持续时间。
self.playbackController = [sdkManager createOUXPlaybackControllerWithViewStrategy:[sdkManager BCOVOUXdefaultControlsViewStrategy]];
// resuming playback so activate the shutter before loading video.
self.playbackController.shutterFadeTime = 0.0;
self.playbackController.shutter = YES;
NSArray *videos = @[[self videoWithURL: [NSURL URLWithString:onceUxUrl]]];
[self.playbackController setVideos:videos];
BrightcovePlayerSDK 提供了一组内置的 UI 控件,可用于 OnceUX 插件的基本播放和广告控件。要使用这些控件,请创建一个 BCOVPUIPlayerView
,并将其与您的 OnceUX 播放控制器关联。
首先,在你的类中创建一个playerView属性。
@property (nonatomic) BCOVPUIPlayerView *playerView;
创建BCOVPUIPlayerView
实例,并将对象的引用保存。将它的frame设置与你的容器视图相匹配,然后将播放视图添加到你的视图层次结构中的容器视图中。请注意,videoContainer
是你应用程序布局中的自己视图对象。
BCOVPUIBasicControlView *controlView = [BCOVPUIBasicControlView basicControlViewWithVODLayout];
self.playerView = [[BCOVPUIPlayerView alloc] initWithPlaybackController:nil options:nil controlsView:controlView];
self.playerView.frame = self.videoContainer.bounds;
self.playerView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
// Insert the playerView into your own video view.
[self.videoContainer addSubview:self.playerView];
现在创建BCOVPlaybackController
,将其分配给你的播放器视图,然后开始播放视频。
// Initialize companion slots
BCOVOUXAdComponentDisplayContainer *displayContainer = [[BCOVOUXAdComponentDisplayContainer alloc] initWithCompanionSlots:@[]];
// Create the playback controller
BCOVPlayerSDKManager *manager = [BCOVPlayerSDKManager sharedManager];
id<BCOVPlaybackController> playbackController = [sdkManager createOUXPlaybackControllerWithViewStrategy:nil];
// Listen for display/companion ad messages
[playbackController addSessionConsumer:displayContainer];
// Tell the player view this is the playback controller we're using
self.playerView.playbackController = playbackController;
// Create and play your video
BCOVVideo *video = [BCOVVideo videoWithURL:[NSURL URLWithString:<url-to-once-ux-video>]];
[playbackController setVideos:@[ video ]];
[playbackController play];
有关如何使用和自定义PlayerUI控件,请参阅BrightcovePlayerSDK中的README文件以获取更多详细信息。
除了BrightcoveFairPlay插件外,BrightcoveOUX不能与任何其他Brightcove插件一起使用。
当前插件不支持在同一个播放控制器中播放OnceUX内容和非OnceUX内容。如果你需要播放这两种类型的内容,你需要为这种内容创建一个单独的播放控制器。
播放OnceUX内容时,你可能会在日志中看到一个消息,显示“没有找到使用HLS或MP4交付方法的消息源,回退到第一个源”。可以忽略这条消息,将在未来的更新中解决。
如果加载OnceUX VMAP文档的请求失败,除了收到错误事件外,你可能在日志中看到一个消息,显示“无法-转发调用:到不存在的内部播放会话”。可以忽略这条消息,将在未来的更新中解决。