AVPlayerを使って、字幕のオンオフをプログラムから制御できます。字幕(Subtitle Track)のある動画の場合、OSデフォルトのプレイヤーの右下に字幕アイコンが表示されます。そこから手動で選択できるのですが、デフォルトで常にオンにしたい、カスタムViewで再生コントローラーもフルカスタマイズしたい場合もあるでしょう。
以下、AVPlayerViewController#player(AVPlayer)に対して、字幕オン・オフを行う場合(Swift3)
// バンドルから動画ファイルのURLを得る。ネット上のURLでもOK
let url = Bundle.main.url(forResource: "test01", withExtension: "m4v")!
let playerItem = AVPlayerItem(url: url)
// 字幕情報を得る
if let mediaSelectionGroup = playerItem.asset.mediaSelectionGroup(forMediaCharacteristic: AVMediaCharacteristicLegible) {
// 字幕オプションが列挙される
for option in mediaSelectionGroup.options {
NSLog("option:%@", option.displayName)
}
// どれか適切なものを選択する。この場合、最初の字幕オプションを指定
playerItem.select(mediaSelectionGroup.options.first, in: mediaSelectionGroup)
// こうすると字幕をオフにできる
playerItem.select(nil, in: mediaSelectionGroup)
}
self.player = AVPlayer(playerItem: playerItem)
動画への字幕付加はMacならSublerというアプリでできます。
- https://subler.org/
- このブログでSublerを使った字幕の付け方が書いてあります