Brightcove-Player-SDK-OUX 2.1.10

Brightcove-Player-SDK-OUX 2.1.10

测试测试
语言语言 Obj-CObjective C
许可证 商业
发布最近发布2017年3月

Steve BushellJim WhisenantTim Rodgers 维护。



  • Brightcove

Brightcove OnceUX 插件用于 Brightcove Player SDK for iOS,版本 2.1.10.284

支持的平台

iOS 8.0 及以上。

tvOS 9.0 及以上。

安装

Brightcove OnceUX 为 Brightcove Player SDK 提供了两个 iOS 安装包,一个静态库框架和一个动态框架。

手动安装

要将 Brightcove Player SDK 的 OUX 插件手动添加到您的项目中

  1. 安装最新版本的 Brightcove Player SDK
  2. 从我们的 发布页面 下载最新版本的 BrightcoveOUX 插件的压缩文件。
  3. BrightcoveOUX.framework 添加到您的项目中。
  4. 在您的应用程序目标的“构建设置”标签页上,请确保“框架搜索路径”包括框架的路径。除非框架存储在项目根目录之外的不同目录中,否则这应该被自动完成。
  5. (仅动态框架)在您的应用程序目标的“常规”标签页上,将 'BrightcoveOUX.framework' 添加到“嵌入的二进制文件”部分。
  6. (仅动态框架)在“构建阶段”标签页中,添加一个具有命令 bash ${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/BrightcoveOUX.framework/strip-frameworks.sh 的“运行脚本”阶段。检查“仅当安装时运行脚本”。这将从构建中移除不需要的架构,这对于 App Store 提交非常重要。
  7. (仅静态框架)在您的应用程序目标的“构建设置”标签页上,将 -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];

让我们将此代码分解成步骤,以便更容易理解。

  1. 首先创建一个 BCOVOUXAdComponentDisplayContainer。此对象将帮助管理伴随广告位。如有所需,请传递伴随广告位。
  2. BrightcoveOUX 为 BCOVPlaybackManager 添加了一些分类方法。第一个是 -createOUXPlaybackControllerWithViewStrategy:。请使用此方法创建您的播放控制器。通常情况下,您将 nil 作为视图策略传递。
  3. 为了使 BCOVOUXAdComponentDisplayContainer 能够显示广告信息并填充伴随广告视图,必须将其添加为会话消费者。
  4. 将播放控制器的视图添加到您自己的视图层次结构中的视频容器。
  5. 使用 OnceUX 视频的 URL 创建一个 BCOVVideo
  6. 将视频加载到播放控制器中。

如果您有任何问题或需要帮助,请访问 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];

播放器 UI 嵌入式控件

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文档的请求失败,除了收到错误事件外,你可能在日志中看到一个消息,显示“无法-转发调用:到不存在的内部播放会话”。可以忽略这条消息,将在未来的更新中解决。