【发布时间】:2014-04-11 14:30:22
【问题描述】:
我有一个 HTML5 <video> 元素,其来源是 .m3u8 (HLS stream)
我有一个 M3U8,它具有三种不同的再现:640x360、960x540 和 1280x720
在台式机上,我有一个用于播放视频的 Flash Player,因此 HTML5 后备仅适用于移动设备(iOS 和 Android) - 我在 iPad 上进行所有测试,一旦它工作正常,我会尝试在 Android 上运行,希望一切正常。
我的目标是在任何时间点找出视频元素正在播放的版本。呈现会随着用户带宽的变化而变化。
我尝试使用 .videoHeight 属性,但无论下载的版本如何,它总是返回 480 - 这特别奇怪,因为 480 甚至不是一个选项。
有谁知道我如何知道下载的版本?
【问题讨论】:
-
也许您过早地阅读 .videoHeight 属性。您需要在活动期间阅读它,可能是加载的元数据。
-
此页面提供了与视频元素交互的好方法:w3.org/2010/05/video/mediaevents.html
-
@vipw 我实际上正在创建一个模拟的“提示点”事件(
setInterval每 0.25 秒运行一次,检查当前时间是否在 x 和 x+0.3 之间) - 每 10 秒我检查一次.videoHeight属性,每次都是 480。 -
我不排除这是网络浏览器中的错误。 HTML5 视频支持仍处于早期阶段。我想你可以向 Apple 提交错误。
-
@vipw 你说得对,经过大量测试我已经确认这是一个错误 - 尽管我相信这是 QuickTime 中的一个错误,而不是 Safari。看起来 Safari 只是嵌入了一个 QuickTime 元素并 ping 它以获取有关视频的信息。当处理具有多种不同视频质量的流时,QuickTime 将返回不正确的
.videoHeight值。有趣的是,QuickTime 本身报告了正确的质量,所以它只是浏览器插件的问题。
标签: html video http-live-streaming m3u8