前回まででCast端末への接続は完了しました。
今回は適当な映像を端末へ送ってみます。
関連記事はこちら。
接続先に映像を送ってみる
① 適当な映像を用意する
② 接続完了を受け取る
GCKDeviceManagerDelegate
で接続完了を受け取ります
//
// MARK: GCKDeviceManagerDelegate
//
extension ViewController: GCKDeviceManagerDelegate {
func deviceManager(deviceManager: GCKDeviceManager,
didConnectToCastApplication applicationMetadata: GCKApplicationMetadata,
sessionID: String,
launchedApplication: Bool) {
print("Application has launched.")
mediaControlChannel = GCKMediaControlChannel()
mediaControlChannel?.delegate = self
deviceManager.addChannel(mediaControlChannel)
mediaControlChannel?.requestStatus()
connectDeviceAndSendDate()
}
③ 映像をCast先に送る
いろいろと設定が面倒なので、公式サイトを参考に、用意した映像データを使って準備してください。
private func connectDeviceAndSendDate() {
// Show alert if not connected.
if (deviceManager?.connectionState != GCKConnectionState.Connected) {
apeerAlert("Not Connected", message: "Please connect to Cast device")
return
}
// Define Media Metadata.
let metadata = GCKMediaMetadata()
metadata.setString("Big Buck Bunny (2008)", forKey: kGCKMetadataKeyTitle)
metadata.setString("Cast test.", forKey: kGCKMetadataKeySubtitle)
let url = NSURL(string:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/BigBuckBunny.jpg")
metadata.addImage(GCKImage(URL: url, width: 480, height: 360))
// Define Media Information.
let mediaInformation = GCKMediaInformation(
contentID:
"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4",
streamType: GCKMediaStreamType.None,
contentType: "video/mp4",
metadata: metadata,
streamDuration: 0,
mediaTracks: [],
textTrackStyle: nil,
customData: nil
)
// Cast the media
mediaControlChannel?.loadMedia(mediaInformation, autoplay: true)
}
}
- ここでは、映像読み込み中に出る画像やテキストの情報をセットしています。
AppleTVにはない親切設計!
// Define Media Metadata.
let metadata = GCKMediaMetadata()
metadata.setString("Big Buck Bunny (2008)", forKey: kGCKMetadataKeyTitle)
metadata.setString("Cast test.", forKey: kGCKMetadataKeySubtitle)
let url = NSURL(string:"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/BigBuckBunny.jpg")
metadata.addImage(GCKImage(URL: url, width: 480, height: 360))
- 映像の情報はここ。結構いろいろ指定しなくてはダメのようですね。
// Define Media Information.
let mediaInformation = GCKMediaInformation(
contentID:
"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4",
streamType: GCKMediaStreamType.None,
contentType: "video/mp4",
metadata: metadata,
streamDuration: 0,
mediaTracks: [],
textTrackStyle: nil,
customData: nil
)
- 映像データの読み込み開始命令です。
// Cast the media
mediaControlChannel?.loadMedia(mediaInformation, autoplay: true)
Castはアプリ終了しても、送った映像は流れたままなんですね〜!
それの設定は特にしなくてもいいようです。便利。
以上で、完了なります。
こちらのサンプルはGithubにあげておきます。
間違っている点などありましたら、ご意見いただけると嬉しいです。