自适应比特率HLS无法与Google Cast SDK一起使用

时间:2014-02-05 17:44:38

标签: http-live-streaming chromecast

我正在使用最新版本的Chrome发件人(新发布的v1版本),我遇到了让HLS正常工作的问题。

我的m3u8清单是"主人"播放列表指向其他六种不同分辨率和比特率的m3u8播放列表,以便根据规范提供自适应比特率流。

此播放列表已在我的自定义Roku应用程序,我的iOS应用程序(以及Apple TV)中工作,甚至在浏览器中通过Flash(JWPlayer Pro)进行了充分测试。它也可以直接在iOS上的Safari中使用。我的播放列表唯一不同的是它们包含强制内容过期的查询字符串参数,但这在HLS规范中是允许的。例如:playlist.m3u8?expires=1391662909&signature=I3G8RKUkILOwxjZy8EyL5w%3D%3D%24q0WbXA2whSNFAj0Os3NIpfHkqMA%2BH2iqMMjm0xH2CYKNe3jh1jgl%2FUdS39ve%0AFnL%2F

以下是我在Chrome Sender中设置播放列表网址的代码:

var mediaInfo = new chrome.cast.media.MediaInfo('http://master_playlist_url.m3u8');
mediaInfo.contentType = 'application/x-mpegURL';

var request = new chrome.cast.media.LoadRequest(mediaInfo);
request.autoplay = true;
request.currentTime = 0;

session.loadMedia(request, onMediaDiscovered.bind(this, 'loadMedia'), onMediaError);

未加载媒体,并使用包含以下内容的错误对象调用onMediaError

code: "session_error"
description: "LOAD_FAILED"
details: null

我还尝试将streamType设置为chrome.cast.media.StreamType.BUFFEREDchrome.cast.media.StreamType.LIVEchrome.cast.media.StreamType.OTHER,每个结果都相同。我也试过设置duration没有运气。我尝试在LoadRequest上删除autoplaycurrentTime,但也没有运气。

我的接收器是一个基本的自定义接收器,如下所示:

<html>
<head>
  <title>Cast</title>
  <script src="//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js"></script>
</head>
<body>
  <video id='media' width="100%" height="auto" />
  <script>
    window.onload = function() {
      window.mediaElement = document.getElementById('media');
      window.mediaManager = new cast.receiver.MediaManager(window.mediaElement);
      window.castReceiverManager = cast.receiver.CastReceiverManager.getInstance();
      window.castReceiverManager.start();
    }
  </script>
</body>
</html>

根据更新的文档,现在支持HLS,但我似乎无法将其付诸实践:https://developers.google.com/cast/docs/media

我还应该提一下,当使用渐进式MP4并将内容类型更改为video/mp4时,此代码可以正常工作。

更新: 我决定尝试从混音中删除主播放列表(自适应比特率流),然后使用包含一个TS段质量的单个m3u8播放列表。它产生了同样的确切误差。所以至少我们知道这个问题并不是与自适应比特率流有关,而是与整个HLS支持有关。

1 个答案:

答案 0 :(得分:1)

自适应BitRate协议需要Media Player Library。请查看Cast Media Player Library SampleCast Custom Receiver个样本。