【问题标题】:Storing large file in chromecast memory将大文件存储在 chromecast 内存中
【发布时间】:2014-09-20 02:44:40
【问题描述】:

问题

我制作了一个接收器应用程序,它只是在 Chromecast 上循环播放视频。问题是 Chromecast 似乎没有将视频缓存在它的缓存中。因此,每次完成循环时,视频都会不断下载,并且需要大量带宽。视频将托管在外部服务器上,因此 Chromecast 每次都必须从互联网下载(我无法更改该规范)。

您知道,在桌面 chrome 应用程序上调试接收器应用程序时,视频被浏览器缓存,因此问题似乎不是来自缓存行为的 http 响应。

我探索的一个解决方案

我尝试用 ajax 下载视频文件并播放。问题是当我的 Javascript 尝试读取 xhrresponseText 字段时,Chromecast 似乎崩溃了,而结果超过 28MB(我尝试使用 50MB 文件(它崩溃)和 28MB 文件(它没有) t 崩溃),限制实际上可能是 32MB)。

编辑: 我也试过this example,它也会让chromecast崩溃......

问题

是否可以在 Chromecast 上缓存 50-100MB 的视频并防止它每次都下载它,或者我可以采取什么记忆技巧将该视频存储在 Chromecast 内存中?每次应用程序加载一次视频将是我减少带宽使用的目标结果。

【问题讨论】:

  • 为什么不能从手机循环播放它..?为什么文件必须在互联网上?
  • 有谁知道Chromecast的设备存储大小限制和内存大小?我尝试查找一些细节来回答这个问题,但找不到任何具体信息。
  • 你可能想换个方向。就像您需要通过队列将外部源添加到本地媒体流设备或某种类型的代理一样。然后 Chromecast 从您的本地流设备中读取它。我发现play.google.com/store/apps/… 看起来很有趣。
  • @vsync 我可以从本地源下载文件,但是这个解决方案“添加”了我的解决方案的约束(让本地服务器为文件提供服务)。我想知道我是否可以避免这种类型的约束。
  • @Steve 我还尝试查找有关 Chromecast 规格的信息,并且大部分信息都是针对最终用户的...对于您的其他评论,这是一种解决方案,但就像我对 vsync 说的那样,它为我的系统添加一个约束,如果可能的话,我想避免这种情况:P

标签: javascript html video browser-cache chromecast


【解决方案1】:

我对这个答案有点不确定,因为我觉得它有点太明显了。但我会试一试:

您说通过 ajax 下载 28MB 的设置没有问题。你为什么不进一步削减它?例如,您可以选择 4MB。我建议这样做是因为它可以缓解由计算“突发”引起的问题,例如您在阅读 xhr 对象的 responseText 字段时提到的。

确定合适的块大小后,您可以使用https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-p5-range-22#section-3 分段下载视频,然后根据需要在 javascript 中将其连接起来。另见Download file in chunks in Chrome Javascript API?

如果您可以访问服务器,您还可以在服务器端拆分文件,以便您可以像这样从客户端发送请求:

example.com/movies/my_movie.mp4?chunk=1

【讨论】:

  • 我已经尝试过这种方法(我下载了两次文件只是为了看看它是否是一个“突发”问题)并且它仍然在第二个 28MB 文件上爆炸。所以问题似乎与全局内存有关,而不是与单个文件内存使用有关,无论如何感谢您的想法:D
【解决方案2】:

尝试使用Application Cache manifest file 以确保文件只下载一次:

<html manifest="some.manifest">

some.manifest 的内容在哪里:

CACHE MANIFEST
# version 1.0
the_video_to_cache.webm

这将确保将来对该资源的 HTTP 请求不会导致下载。仅当清单文件更改时,视频才会重新下载(因此您可以更改 #-prefixed 注释字符串以导致重新下载)。请注意,新版本将显示在第一个页面加载之后下载完成。更新后,用户将看到一次过期的视频(在下载新版本时),然后在下次访问时看到新版本。

请注意,如果您的视频大于应用缓存的允许大小,这可能不起作用。

【讨论】:

  • 感谢您的回答,我已经尝试过这种方法,但应用缓存似乎不足以保存视频
【解决方案3】:

我没有 chromecast,也不确定。是否可以使用实验性功能,例如Quota Management API?这个API,可以为你存储的数据增加一些额外的内存,也许你应该尝试使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 2016-12-24
    • 2012-10-21
    • 2020-07-10
    • 2023-03-14
    • 2011-08-11
    • 2020-04-01
    相关资源
    最近更新 更多