【问题标题】:Chromecast custom receiver doesn't pause audio elementChromecast 自定义接收器不会暂停音频元素
【发布时间】:2016-05-12 21:10:36
【问题描述】:

现在我正在 iOS 上开发一个发送器,它在我的自定义接收器上正确播放音频,但是当我在发送器上发送暂停消息时

self.mediaControlChannel.pause;

我可以看到(从调试)自定义接收器收到一条消息

[ 22.169s] [cast.receiver.IpcChannel] 收到消息: {"data":"{\"type\":\"PAUSE\",\"requestId\":9,\"mediaSessionId\":2}","namespace":"urn:x-cast:com. google.cast.media","senderId":"5:589F942A-AB58-42F3-9B94-3674DB0428D4"}

但它不会暂停我的音频元素。此后音频继续播放。

这就是我创建音频元素实例和处理投射的方式:

window.onload = function() {
    cast.receiver.logger.setLevelValue(0);

    window.mediaManager = new cast.receiver.MediaManager(audio);

    window.castReceiverManager = cast.receiver.CastReceiverManager.getInstance();
    console.log('Starting Receiver Manager');

    // handler for the 'ready' event
    window.castReceiverManager.onReady = function(event) {
    console.log('Received Ready event: ' + JSON.stringify(event.data));
      window.castReceiverManager.setApplicationState("Application status is ready...");
        };

    window.mediaManager.onMetadataLoaded = function(info) {
     console.log('Metadata Received');
    var media = info.message.media;
    songUrl = media.contentId;
    $('.media').attr("src", songUrl);

    console.log("song url " + songUrl)
    console.log(info);

    this.onLoadSuccess();
}

    // handler for 'senderconnected' event
    window.castReceiverManager.onSenderConnected = function(event) {
      console.log('Received Sender Connected event: ' + event.data);
      console.log(window.castReceiverManager.getSender(event.data).userAgent);
    };

    // handler for 'senderdisconnected' event
    window.castReceiverManager.onSenderDisconnected = function(event) {
      console.log('Received Sender Disconnected event: ' + event.data);
      if (window.castReceiverManager.getSenders().length == 0) {
        window.close();
      }
    };

    // handler for 'systemvolumechanged' event
    window.castReceiverManager.onSystemVolumeChanged = function(event) {
      console.log('Received System Volume Changed event: ' + event.data['level'] + ' ' +
      event.data['muted']);
    };

    window.castReceiverManager.onSenderDisconnected = function (event) {
        console.log("Sender disconnected");
        if (window.castReceiverManager.getSenders().length == 0 &&
        event.reason == cast.receiver.system.DisconnectReason.REQUESTED_BY_SENDER) {
            window.close();
        }
    };

    window.mediaManager.onLoadSuccess = function() {
        console.log("load success");
        var totalTime = audio.duration;
        console.log(totalTime);
        $(".final-time").text(formatDuration(totalTime));
    }

    window.castReceiverManager.start({maxInactivity: 6000});

    audio.addEventListener('timeupdate', updateProgress, false);

    window.castReceiverManager.onPlay = function() {
        console.log("event 1")
    }

    window.castReceiverManager.onPause = function() {
        console.log("event 2");
    }
}

【问题讨论】:

    标签: ios chromecast google-cast custom-receiver


    【解决方案1】:

    你需要启动receiver manager,调用:

    window.castReceiverManager.start();
    

    【讨论】:

    • 我这样做了window.castReceiverManager.start({maxInactivity: 6000});,但我仍然无法暂停。
    • 您可能会发现从我们的样本(或参考)接收器之一开始并对其进行修改以满足您的需求很有用
    • 我听从了您的建议,并使用了github.com/googlecast/CastReferencePlayer 作为参考,现在它工作正常。谢谢:)
    猜你喜欢
    • 2017-02-27
    • 2021-09-19
    • 2017-07-01
    • 2017-08-19
    • 1970-01-01
    • 2014-10-04
    • 2014-12-25
    • 2020-05-03
    相关资源
    最近更新 更多