我为 Chromecast 创建了一个自定义发送器和接收器应用程序。发件人应该通过网络发送一个 url (dash mpd)。接收者应该创建一个视频元素,并在收到破折号 mpd url 后创建一些与视频元素交互的额外文件。
在发件人上,我正在这样做:
var request = new cast.LaunchRequest(APP_ID, receiver);
request.parameters = params;
cast_api.launch(request, onLaunch);
其次是:
var request = new cast.MediaLoadRequest("http://dash.edgesuite.net/envivio/dashpr/clear/Manifest.mpd");
request.parameters = params;
cast_api.loadMedia(cv_activity.activityId, request, onLoad);
然后在接收器中我有:
var receiver = new cast.receiver.Receiver(APP_ID, [cast.receiver.RemoteMedia.NAMESPACE]);
var rampHandler = new cast.receiver.RemoteMedia();
rampHandler.addChannelFactory(receiver.createChannelFactory(cast.receiver.RemoteMedia.NAMESPACE));
rampHandler.onOpen = onOpen;
rampHandler.onMessage = onMessage;
rampHandler.onLoad = onLoad;
rampHandler.onInfo = onInfo;
rampHandler.onPlay = onPlay;
rampHandler.onStop = onStop;
rampHandler.onEnded = onEnded;
rampHandler.onMetadataLoaded = onMetadataLoaded;
rampHandler.onLoadMetaDataError = onLoadMetaDataError;
rampHandler.onVolume = onVolume;
当我启动接收器时,onOpen 和 onMessage 会被触发一次。调用 api.loadMedia 后似乎没有任何反应。从我读到的内容看来,api 正在访问 RemoteMedia 应该响应的 RAMP 调用。我希望在调用 api.loadMedia 后触发 onLoad 或 onMessage 。但什么也没有发生。Chromecast 调试器中根本没有任何痕迹。