You can cast any of the streams from a TVSDK-based sender app and have the stream played back on Chromecast with Browser TVSDK.
There are two components of a Cast-enabled app:
The sender app, which acts as the remote control.
Sender apps include smart phones, personal computers, and so on. The app can be developed using native SDKs for iOS, Android, and Chrome.
The receiver app, which runs on Chromecast and plays the content.
This app can only be an HTML5 app.
The sender and the receiver communicate by using the Cast SDKs to pass messages.
Here is an overview of the process:
You must define the messages so that the sender and receiver can understand. Here is an example of a seek message:
{
"type": "seek",
"seekTo": 10000
}
When sending custom messages such as the seek message through the Cast SDKs, a custom message namespace is required. Here is an example in JavaScript:
Custom Message Namespace
var MSG_NAMESPACE = "urn:x-cast:com.adobe.primetime";
Browser TVSDK APIs are not involved when establishing the connection.
To establish a connection, the sender and receiver must complete the following tasks:
The sender must review the documentation for platform at Sender App Development.
The receiver uses the Cast receiver APIs to establish a connection with the sender app. For example:
window.castReceiverManager = cast.receiver.CastReceiverManager.getInstance();
window.castReceiverManager.onReady = function (event) { /*handle event*/ };
window.castReceiverManager.onSenderConnected = function (event) { /*handle event*/ };
window.castReceiverManager.onSenderDisconnected = function (event) { /*handle event*/ };
var customMessageBus = window.castReceiverManager.getCastMessageBus(MSG_NAMESPACE);
customMessageBus.onMessage = function (event) { /*handle messages*/ };
window.castReceiverManager.start();
To send messages to the receiver, see the documentation for your sender’s platform.
You must include the custom message namespace, MSG_NAMESPACE
in all the messages.
For the receiver app, follow the documentation for the cast receiver APIs.
Example of a Chrome-Based Sender Message
window.session.sendMessage(MSG_NAMESPACE, message, successCallback, errorCallback); //https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Session#sendMessage
Chrome Based Sender Event Handling
Bind event handlers to your UI elements that will send messages when the corresponding events are triggered. For example, for a Chrome-based sender app, the seek event might be sent like this:
document.getElementById("#seekBar").addEventListener("click", seekEventHandler);
function seekEventHandler(event) {
seekMessage = { type: "seek", seekTo: player.currentTime }; //player is an instance of AdobePSDK.MediaPlayer
window.session.sendMessage(MSG_NAMESPACE, seekMessage, successCallback, errorCallback);
}
Receiver Message Handling
From the receiver app, here is an example of how to handle the seek message:
customMessageBus.onMessage = function (event) {
var message = JSON.parse(event.data);
switch (message.type) {
case "seek":
player.seek(parseInt(message.seekTo));
break;
//code for handling other events
default:
break;
}
};