测试测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | 商业 |
发布最后发布 | 2017 年 1 月 |
由 Jim Whisenant, Steve Bushell, Tim Rodgers 维护。Jim Whisenant, Steve Bushell, Tim Rodgers.
iOS 8.0 及以上。
tvOS 9.0 及以上。
Brightcove Player SDK 的 Sidecar Subtitles 插件为 iOS 提供了两个安装包:一个静态库框架和一个动态框架。对于 tvOS,Sidecar Subtitles 插件仅提供动态框架。
要将 Brightcove Player SDK 的 Sidecar Subtitles 插件手动添加到您的项目中
BrightcoveSidecarSubtitles.framework
添加到您的项目中。bash ${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/BrightcoveSidecarSubtitles.framework/strip-frameworks.sh
的 "运行脚本" 阶段。检查 "仅在安装时运行脚本"。这将从构建中删除不需要的架构,这对于 App Store 提交很重要。-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。
上面的代码片段展示了没有任何控件的视频播放器。您可以将播放控件添加到代码中,如下所示。
添加一个属性以跟踪 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
,并指定 kBCOVSSTextTracksKeySourceTypeWebVTTURL
或 kBCOVSSTextTracksKeySourceTypeM3U8URL
以指示 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中的错误。