javascript - Chromecast 接收器应用程序 - 意外命令,播放器处于 IDLE 状态

标签 javascript ios chromecast google-cast

我正在使用 Actor 引用播放器示例代码来开发接收器应用程序。我正在使用转换消息总线发送将启动我的媒体的 JSON 字符串。

因此,在我的 player.html 中,我初始化了cast 消息总线。当我收到我想要播放的媒体的 JSON 时,我从 player.html 初始化 player.js,如下所示:

//receive message to play -> pass media through
var player = document.getElementById('player');
new sampleplayer.CastPlayer(player).start();

然后在我的player.js中:

sampleplayer.CastPlayer.prototype.start = function() {
  var self = this;
  var message = //JSON string
  this.load(JSON.parse(message));

  var millisecondsToWait = 8000;
  setTimeout(function() {
    //Pause Works
    self.mediaElement_.pause();
  }, millisecondsToWait);

  var millisecondsToWait = 10000;
  setTimeout(function() {
    //Play Works
    self.mediaElement_.play();
  }, millisecondsToWait);
};

我能够启动媒体,我可以使用上面的代码播放/暂停媒体。

当我尝试使用 Remote 上的播放/暂停按钮时,出现以下错误: [cast.receiver.MediaManager] 意外命令,播放器处于 IDLE 状态,因此媒体 session ID 尚未生效

我也没有获得之前获得的任何 PlayState 更新。

我相信我没有初始化正确的东西,但我不确定是什么。有谁知道对我来说有一个好的起点吗?谢谢

最佳答案

我希望这可以帮助别人。

我可以使用 playerManager.load(loadRequestData)playerManager.play() 通过 PlayerManger 成功加载并启动视频。但是,一旦我停止使用 playerManager.stop() 然后尝试再次播放,我就会收到此错误:

[cast.receiver.MediaManager] Unexpected command, player is in IDLE state so the media session ID is not valid yet

发生这种情况是因为 playerManager.stop() 方法从标记中卸载视频。

要解决此问题,只需在播放前检查视频是否已加载即可。

示例:

if (isNaN(playerManager.getDurationSec())) {
  // the player has been stopped, then I reload the video
  // Load with autoplay: playerManager.load(loadRequestData)

  // create some queue items
  const item = new cast.framework.messages.QueueItem()
  item.media = new cast.framework.messages.MediaInformation()
  item.media.contentId = '/movie.mp4'
  const items = [item]

  // Create a new queue with media.
  let queueData = new cast.framework.messages.QueueData()
  queueData.items = items

  // [cast.receiver.MediaManager] Media or QueueData is mandatory
  const loadRequestData = new cast.framework.messages.LoadRequestData()
  loadRequestData.queueData = queueData
  cast.framework.CastReceiverContext.getInstance()
    .getPlayerManager().load(loadRequestData)
}
else {
  playerManager.play()
}

关于javascript - Chromecast 接收器应用程序 - 意外命令,播放器处于 IDLE 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43366352/

相关文章:

ios - Chromecast 可以在默认接收器上转换 .m3u8 直播流吗?

Javascript:将数组传递给函数不起作用?

ios - 保存搜索结果 xcode

ios - NSNumberFormatter 用于格式化货币不适用于 float

Android Chromecast 搜索行为 - 从头开始​​重新启动视频

ios - 符合 Objective-C 协议(protocol)的 Swift 类

javascript - 在bluemix中上传node.js应用程序

javascript - 这里如何获取@html.dropdownlist的选中值?

javascript - 如何在React中执行返回功能

ios - 控制我的游戏速度?