Brightcove-Player-SDK-SidecarSubtitles 2.1.6

Brightcove-Player-SDK-SidecarSubtitles 2.1.6

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

由 Jim Whisenant, Steve Bushell, Tim Rodgers 维护。Jim Whisenant, Steve Bushell, Tim Rodgers.



  • Brightcove

Brightcove Player SDK for iOS 和 tvOS 的 Sidecar Subtitles 插件,版本 2.1.6.129

支持的平台

iOS 8.0 及以上。

tvOS 9.0 及以上。

安装

Brightcove Player SDK 的 Sidecar Subtitles 插件为 iOS 提供了两个安装包:一个静态库框架和一个动态框架。对于 tvOS,Sidecar Subtitles 插件仅提供动态框架。

手动安装

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

  1. 安装 Brightcove Player SDK 的最新版本。Brightcove Player SDK.
  2. 从我们的 发布页面 下载 BrightcoveSidecarSubtitles 插件的最新版本。
  3. BrightcoveSidecarSubtitles.framework 添加到您的项目中。
  4. 在应用程序目标的 "构建设置" 选项卡上,确保 "框架搜索路径" 包括框架的路径。除非框架存储在项目根目录以外的目录中,否则这将自动完成。
  5. (仅限动态框架) 在应用程序目标的 "常规" 选项卡上,将 'BrightcoveSidecarSubtitles.framework' 添加到 "嵌入的二进制文件" 部分。
  6. (仅限动态框架) 在 "构建阶段" 选项卡上,添加一个带有命令 bash ${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/BrightcoveSidecarSubtitles.framework/strip-frameworks.sh 的 "运行脚本" 阶段。检查 "仅在安装时运行脚本"。这将从构建中删除不需要的架构,这对于 App Store 提交很重要。
  7. (仅限静态框架) 在应用程序目标的 "构建设置" 选项卡上,将 -ObjC 添加到 "其他链接器标志" 构建设置。

导入

Brightcove Player SDK for iOS 可以以几种不同的方式导入到代码中

  • @import BrightcoveSidecarSubtitles;
  • #import <BrightcoveSidecarSubtitles/BrightcoveSidecarSubtitles.h>
  • #import <BrightcoveSidecarSubtitles/[specific class].h>.

快速入门

    NSString *policyKey = <your-policy-key>;
    NSString *accountId = <your-account-id>;
    NSString *videoID = <your-video-id>;

    BCOVPlayerSDKManager *manager = [BCOVPlayerSDKManager sharedManager];
[1] id<BCOVPlaybackController> controller = [playbackManager createSidecarSubtitlesPlaybackControllerWithViewStrategy:nil];
    [self.view addSubview:controller.view];

    BCOVPlaybackService *playbackService = [[BCOVPlaybackService alloc] initWithAccountId:accoundId
                                                                                policyKey:policyKey];
[2] [playbackService findVideoWithVideoID:videoID
                               parameters:nil
                               completion:^(BCOVVideo    *video,
                                            NSDictionary *jsonResponse,
                                            NSError      *error) {

                                 [controller setVideos:@[ video ]];
                                 [controller play];

                             }];

BCOVSidecarSubtitles 为 BCOVPlaybackManager 增加了一些分类方法。其中第一个是 -createSidecarSubtitlesPlaybackControllerWithViewStrategy:。使用此方法来创建您的播放控制器。如果(您正在使用多个会话提供程序),则可以创建一个 BCOVSSSessionProvider 并将该提供程序传递给创建具有上游会话提供程序的播放控制器的管理方法。如果您为 tvOS 开发,则传递给 createSidecarSubtitlesPlaybackControllerWithViewStrategy 创建方法的 ViewStrategy 必须为 nil。

注意,BCOVSSSessionProvider 应位于传递给构建播放控制器的管理器的链中的任何会话提供程序之前。此插件 不兼容 Widevine 插件。

如果您有疑问或需要帮助,请访问 Brightcove Native Player SDK 的支持论坛 https://groups.google.com/forum/#!forum/brightcove-native-player-sdks

使用内置的 PlayerUI 控件

上面的代码片段展示了没有任何控件的视频播放器。您可以将播放控件添加到代码中,如下所示。

添加一个属性以跟踪 BCOVPUIPlayerView

// PlayerUI's Player View
@property (nonatomic) BCOVPUIPlayerView *playerView;

创建 BCOVPUIBasicControlView,然后创建 BCOVPUIPlayerView。这是我们关联播放控制器(以及它所播放的所有视频)与控件的地方。根据您的布局(yourVideoView)设置播放视图以匹配视频容器,当它调整大小时。

BCOVPUIBasicControlView *controlView = [BCOVPUIBasicControlView basicControlViewWithVODLayout];
self.playerView = [[BCOVPUIPlayerView alloc] initWithPlaybackController:controller options:nil controlsView:controlView];

// Match parent view size
self.playerView.frame = self.yourVideoView.bounds;
self.playerView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

// Add BCOVPUIPlayerView to your video view.
[self.yourVideoView addSubview:self.playerView];

如果您使用 BCOVPUIPlayerView,则还需要删除上面的一行。

[self.view addSubview:controller.view]; // no longer needed when using PlayerUI

如果您想使用另一个播放控制器重用播放器,则只需进行新的赋值。

self.playerView.playbackController = anotherPlaybackController;

播放视图将自动将播放控制器的视图添加到其自己的视图层次结构中。

有关在您的应用中添加和自定义 PlayerUI 控件的信息,请参阅 Brightcove Native Player SDK 的 README。

如果您有疑问或需要帮助,请访问 Brightcove Native Player SDK 支持论坛

手动填充字幕数据

BCOVSidecarSubtitle 插件将查找 BCOVVideo 对象属性中字幕元数据的数组,记为 kBCOVSSVideoPropertiesKeyTextTracks。如果您正在使用 BCOVPlaybackService 获取视频并且这些视频与文本轨道相关联,这将被自动填充。

如果您提供自己的视频或您是 Perform 客户,则需要根据下面的结构来安排数据

NSArray *subtitles = @[
@{
    kBCOVSSTextTracksKeySource: ..., // required
    kBCOVSSTextTracksKeySourceLanguage: ..., // required
    kBCOVSSTextTracksKeyLabel: ..., // required
    kBCOVSSTextTracksKeyDuration: ..., // required/optional [1]
    kBCOVSSTextTracksKeyKind: kBCOVSSTextTracksKindSubtitles or kBCOVSSTextTracksKindCaptions, // required
    kBCOVSSTextTracksKeyDefault: ..., // optional
    kBCOVSSTextTracksKeyMIMEType: ..., // optional
},
@{...}, // second text track dictionary
@{...}, // third text track dictionary
];

BCOVVideo *video = [BCOVVideo alloc] initWithSource:<source>
                         cuePoints:<cuepoints>
                        properties:@{ kBCOVSSVideoPropertiesKeyTextTracks:subtitles }];

kBCOVSSTextTracksKeySource 保存了字幕轨道的源 URL,并可以是 WebVTT URL 或 M3U8 播放列表 URL。

WebVTT 文件应具有 ".vtt" 扩展名,而 M3U8 文件应具有 ".M3U8" 扩展名。如果您无法遵循这些约定,则必须包含键 kBCOVSSTextTracksKeySourceType,并指定 kBCOVSSTextTracksKeySourceTypeWebVTTURLkBCOVSSTextTracksKeySourceTypeM3U8URL 以指示 URL 所指向的文件类型。

如果您为从 Video Cloud 获取的视频提供轨道,您应 添加 您的字幕到任何现有的轨道中,而不是 覆盖 它们。此代码显示了您可以如何将轨道添加到现有视频中的方法

BCOVVideo *updatedVideo = [video update:^(id<BCOVMutableVideo> mutableVideo) {

    // Save the current tracks
    NSArray *originalTracks = video.properties[kBCOVSSVideoPropertiesKeyTextTracks];

    // Create your text track dictionary
    NSArray *subtitles = @[
    @{
        kBCOVSSTextTracksKeySource: ..., // required
        kBCOVSSTextTracksKeySourceLanguage: ..., // required
        kBCOVSSTextTracksKeyLabel: ..., // required
        kBCOVSSTextTracksKeyDuration: ..., // required/optional [1]
        kBCOVSSTextTracksKeyKind: kBCOVSSTextTracksKindSubtitles or kBCOVSSTextTracksKindCaptions, // required
        kBCOVSSTextTracksKeyDefault: ..., // optional
        kBCOVSSTextTracksKeyMIMEType: ..., // optional
    },
    @{...}, // second text track dictionary
    @{...}, // third text track dictionary
    ];

    // Append new tracks to the original tracks, if any
    NSArray *combinedTextTracks = ((originalTracks != nil)
                                    ? [originalTracks arrayByAddingObjectsFromArray:subtitles]
                                    : subtitles);

    // Update the current dictionary (we don't want to lose the properties already in there)
    NSMutableDictionary *updatedDictionary = [mutableVideo.properties mutableCopy];

    // Store text tracks in the text tracks property
    updatedDictionary[kBCOVSSVideoPropertiesKeyTextTracks] = combinedTextTracks;

    mutableVideo.properties = updatedDictionary;

}];

注意

  • kBCOVSSTextTracksKeyDuration 是使用具有 .vtt 扩展名的字幕文件时的必需键。kBCOVSSTextTracksKeyDuration 是使用具有 .m3u8 扩展名的字幕文件时的可选键。

请参阅BCOVSSComponent.h头文件中的代码文档,以获取有关这些键使用的更多信息。

已知问题

  • 查看360度视频时不会显示字幕。

  • 此插件目前不支持与Brightcove iOS播放器SDK的Widevine插件集成。

  • 从Brightcove播放API检索您的视频时,您的版本必须包括主M3U8播放列表。副车字幕插件与单版本M3U8播放列表不兼容。

  • 如果您提供的字幕播放列表包含对表现出404的web vtt文件的链接,则播放将失败。这是Apple的AVPlayer中的错误。