9

tvOS,当用户在遥控器上向下滑动时显示的菜单中,在其他电影应用程序上显示“字幕、音频和信息”,如何创建另一个带有按钮的选项卡?

下面是我的代码:

AVMutableMetadataItem *titleMetadataItem = [[AVMutableMetadataItem alloc] init];
titleMetadataItem.locale = NSLocale.currentLocale;
titleMetadataItem.key = AVMetadataCommonKeyTitle;
titleMetadataItem.keySpace = AVMetadataKeySpaceCommon;
titleMetadataItem.value = @"The Title";

NSArray *externalMetadata = [[NSArray alloc] initWithObjects:titleMetadataItem, nil];

_player.player.currentItem.externalMetadata = externalMetadata;

有人可以告诉我如何在下拉菜单中创建一个按钮,AVPlayerViewController以便用户可以在关闭或打开字幕之间切换?我没有srt files嵌入在视频中。相反,我有一个单独的subtitle parser并将其显示在标签上。我能够让信息部分显示文本,但有什么方法可以添加按钮吗?

或者如何为视频添加字幕选项?这不起作用: _player.requiresFullSubtitles = YES;

谢谢!

4

1 回答 1

2

AVPlayerViewController 仅在字幕嵌入 HLS 流时才加载字幕,这也是在向下滑动菜单上显示“字幕”选项卡的唯一合法方式。

我构建了一个实用程序,用于将 VTT 字幕动态添加到 HLS (m3u8) 流中,称为 ACHLSCaptioningServer ( https://github.com/acotilla91/ACHLSCaptioningServer )。

注意:如果您只能访问 SRT 文件,则需要找到将 SRT 转换为 VTT 的方法。

如何使用:

NSURL *origStreamURL = your_original_stream-url;
NSURL *vttFileURL = your_vtt_file_url;

NSURL *streamURL = [[ACHLSCaptioningServer sharedInstance] getCaptionedHLSStreamFromStream:origStreamURL vttURL:vttFileURL];

//
// play stream
//

AVURLAsset *videoAsset = [[AVURLAsset alloc] initWithURL:streamURL options:nil];

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:videoAsset];

AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];

AVPlayerViewController *avPlayerController = [[AVPlayerViewController alloc] initWithNibName:nil bundle:nil];
[avPlayerController setPlayer:player];
[avPlayerController.view setFrame:self.view.frame];
[self addChildViewController:avPlayerController];
[self.view addSubview:avPlayerController.view];
[avPlayerController didMoveToParentViewController:self];
于 2016-06-25T19:00:34.753 回答