【问题标题】:Chromecast Receiver App - Unexpected command, player is in IDLE stateChromecast 接收器应用程序 - 意外命令,播放器处于空闲状态
【发布时间】:2017-09-08 01:06:43
【问题描述】:

我正在使用演员表参考播放器示例代码来开发接收器应用程序。我正在使用 cast 消息总线发送一个 JSON 字符串来启动我的媒体。

所以在我的player.html 中,我初始化了cast message bus。当我receive 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);
};

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

当我尝试使用遥控器上的播放/暂停按钮时,我收到以下错误: [cast.receiver.MediaManager] Unexpected command, player is in IDLE state so the media session ID is not valid yet.

我也没有收到我之前收到的任何PlayState 更新。

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

【问题讨论】:

  • @Mr.Rebot,我看到了这个问题,好吧,它非常相似,但我无法利用答案来发挥自己的优势。
  • 如果问题相同,则为重复。如果可以,请详细说明链接问题的答案如何无法解决您的问题。
  • 链接的答案假设我将通过发件人应用程序排队项目首先播放。我正在尝试在接收器端执行所有操作。投射接收器 sdk 上没有 queueLoadItems,只有 iOS sender sdk。即链接的答案需要发件人交互,我的需要自己完成。
  • @Mark117 你有没有想过这个问题?

标签: javascript ios chromecast google-cast


【解决方案1】:

我希望这可以帮助某人。

我可以使用 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()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-17
    • 2013-10-12
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    相关资源
    最近更新 更多