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 ストリームに埋め込まれている場合にのみ字幕を読み込みます。これは、スワイプダウン メニューに [字幕] タブを表示する唯一の正当な方法でもあります。

ACHLSCaptioningServer ( https://github.com/acotilla91/ACHLSCaptioningServer ) と呼ばれる HLS (m3u8) ストリームに VTT 字幕を動的に追加するためのユーティリティを作成しました。

注: 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 に答える