【问题标题】:HLS playback performance and stability on ChromecastChromecast 上的 HLS 播放性能和稳定性
【发布时间】:2014-06-09 17:35:29
【问题描述】:

至少从 v0.3.0 开始,我在使用媒体播放器库播放 HLS 时遇到问题,该问题一直持续到当前版本 (v0.5.0)。我知道播放器库处于测试阶段,所以我想知道其他人是否看到我看到的内容。

基本上,问题的表现方式是,一段时间后,Chromecast 设备变得无响应。调试器停止显示任何输出,关闭它并尝试再次访问它会导致超时错误。有时,一段时间后,设备会崩溃到主屏幕(没有大脑冻结)。

在发生这种情况之前,我尝试查看配置文件和时间线,但没有看到任何异常峰值。我确实注意到日志中有一些错误(但它们可能与此无关),例如:

An attempt was made to use an object that is not, or is no longer, usable

我正在做的唯一“不寻常”的事情是我在每个视频timeupdate 事件上广播状态。不过,这不会在正常播放中导致任何此类问题。

【问题讨论】:

  • “一段时间”有多长?您可以将示例流以及任何日志和复制步骤发布到我们的问题跟踪器:code.google.com/p/google-cast-sdk/issues/list
  • 假设数量级是分钟。我仍然需要收集一些数据并尝试更精确地隔离重现步骤。在那之前,我想知道是否有人经历过类似的事情。

标签: http-live-streaming chromecast


【解决方案1】:

希望您已经解决了这个问题,我为遇到相同问题的人提供了一种解决方法。

我有一个接收器流式传输 HLS(正确编码,使用 CORS 标头和 AES 加密)。我注意到有时 Chromecast 会因为巨大的片段(>25Mo)而疯狂,在附加后一个片段时会导致它(几乎)随机崩溃。

相信我可能对这个小型设备要求过高,有两种解决方案可以降低设备负载:

  1. 禁用 AES 加密(并非总是可以接受)
  2. 降低片段质量

关于解决方案 2,这很有效:

window.host = new cast.player.api.Host({'mediaElement':mediaElement, 'url':url});
window.protocol = cast.player.api.CreateHlsStreamingProtocol( host );

window.host.getQualityLevel = function(streamIndex, qualityLevel){

    var lowestQuality = protocol.getStreamInfo()["bitrates"].length-1;
    var plusOneQuality = (qualityLevel == lowestQuality)?qualityLevel:qualityLevel+1;

    console.log( "original QualityLevel : " + qualityLevel, "returned QualityLevel", plusOneQuality );
    return plusOneQuality;
}

我很想对此有一些反馈。是否有人已经不得不使用这种技巧来防止 HLS HD 流导致设备崩溃?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 2014-06-05
    • 2014-05-04
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2014-03-13
    相关资源
    最近更新 更多