[watchOS 3] インラインで動画が再生できるようになりました

2016.10.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

WKInterfaceInlineMovie

watchOS 3 から WKInterfaceInlineMovie というクラスが追加され、これを利用すればインラインで動画を再生することができるようになりました。
これまでは WKInterfaceMovie というクラスで動画を再生することができましたが、こちらはユーザーが再生ボタンを意図的にタップしなければいけなく、また動画再生の専用画面がモーダルで表示されるというものでした。

実装

1

2

あとは IBOutlet を接続して、awake() メソッドなどで動画の URL を指定するだけです。
この URL はファイルベースである必要があります。
インターネット上の動画 URL を指定しても動画は再生されません。

class InterfaceController: WKInterfaceController {

    @IBOutlet var inlineMovie: WKInterfaceInlineMovie!

    override func awake(withContext context: Any?) {
        super.awake(withContext: context)

        if let filePath = Bundle.main.path(forResource: "star", ofType: "mov") {
            let url = URL(fileURLWithPath: filePath)
            inlineMovie.setMovieURL(url)
        }
    }
}

動画はデフォルトで自動再生が ON になっているため、明示的に 再生 を行わなくてもこれで動きます。
とても簡単ですね。

なお、WKInterfaceInlineMovie のヘッダーは以下のようになっています。

@available(watchOS 3.0, *)
open class WKInterfaceInlineMovie : WKInterfaceObject {


    open func setMovieURL(_ URL: URL)

    open func setVideoGravity(_ videoGravity: WKVideoGravity) // default is WKVideoGravityResizeAspect

    open func setLoops(_ loops: Bool) // default is NO

    open func setAutoplays(_ autoplays: Bool) // default is YES


    open func setPosterImage(_ posterImage: WKImage?)


    open func play()

    open func playFromBeginning()

    open func pause()
}

ループポーズ初めから再生 などもできるようです。
PosterImage は動画再生前に表示されるサムネイルのようなものです。

さいごに

動画をインラインで再生できるようになったことで、気軽にリッチな情報をユーザーに提供することが可能になりそうですね。
Apple Watch も Series 2 が発売され、GPU の性能も上がったので今後できることが増えてきそうです。

リンク

ミレニアム・ファルコン製作日記 #40

40 号 表紙

mfd_40_1

パーツ

mfd_40_2

mfd_40_3

mfd_40_4

成果

mfd_40_5

今回の作業は以下の 1 つでした。

  • 搭乗ランプの構造を支えるセクションを取り付ける

とうとう船体下部フレームの円盤が完成しました!
壮観ですね。
時間をかけて少しずつ作り上げてきたこともまた、特別な感情を生み出している気がします。
・・・感動中

それではまた次回。

May the Force be with you!