Help us understand the problem. What is going on with this article?

AVPlayerの字幕のオンオフをプログラムで制御する

More than 3 years have passed since last update.

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というアプリでできます。

roba4coding
プログラマ&ディベロッパー&ハッカー。エンジニアではありません。主にアプリの開発をやってます。勉強会には一切顔を出さずウェブで済ませて独学。家に技術本らしきものは一冊もありません。記事の内容を実装に取り入れたことによる損害について当方は一切責任を負いませんのでご了承ください。
https://note.mu/roba4coding
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away