Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定HTML5 HLS流的当前格式副本_Html_Video_Http Live Streaming_M3u8 - Fatal编程技术网

确定HTML5 HLS流的当前格式副本

确定HTML5 HLS流的当前格式副本,html,video,http-live-streaming,m3u8,Html,Video,Http Live Streaming,M3u8,我有一个HTML5元素,它的源代码是.m3u8() 我的M3U8有三种不同的格式副本:640x360、960x540和1280x720 在台式机上,我有一个播放视频的Flash播放器,因此HTML5只能用于移动设备(iOS和Android)——我正在iPad上进行所有测试,一旦测试成功,我将在Android上试用,希望一切都一样 我的目标是,在任何时间点,找出视频元素正在播放的格式副本。格式副本可能会随着用户带宽的变化而变化 我尝试使用.videoHeight属性,但不管下载的格式副本是什么,它

我有一个HTML5
元素,它的源代码是
.m3u8
()

我的M3U8有三种不同的格式副本:
640x360
960x540
1280x720

在台式机上,我有一个播放视频的Flash播放器,因此HTML5只能用于移动设备(iOS和Android)——我正在iPad上进行所有测试,一旦测试成功,我将在Android上试用,希望一切都一样

我的目标是,在任何时间点,找出视频元素正在播放的格式副本。格式副本可能会随着用户带宽的变化而变化

我尝试使用
.videoHeight
属性,但不管下载的格式副本是什么,它总是返回480,这特别奇怪,因为480甚至不是一个选项


有人知道我如何计算下载的格式副本吗?

清理一些从未收到答案的旧问题:

不幸的是,这是不可能的。大多数浏览器中的HTMl5视频规范和HTMl5视频实现旨在抽象出播放视频所涉及的所有潜在魔法。你给它一个来源,它就会播放。其他一切都被完全隐藏,您无法访问。无法访问元数据通道,无法访问音频通道,无法访问比特率和分辨率信息

充其量,我开发了一个解决方案来猜测正在播放的分辨率。每10秒通过AJAX加载一个1MB文件。我测量了下载的速度来猜测他们当前的带宽。我知道QuickTime只会在所需带宽加倍的情况下播放格式副本。因此,如果
960x540
格式副本需要1400 kbit/s,则除非您有2800 kbit/s的带宽,否则无法播放


它不是很好(每分钟浪费6 MB带宽),但总比什么都没有好。

也许你读.videoHeight属性太快了。您需要在事件期间读取它,可能是loadedmetadata。此页面提供了一种与视频元素交互的好方法:@vipw我实际上有一个我正在创建的模拟“提示点”事件(一个
setInterval
每0.25秒运行一次,检查当前时间是否在x和x+0.3之间)-每10秒我检查一次
.videoHeight
属性,每次都是480。我不排除这是web浏览器中的错误。HTML5视频支持仍处于起步阶段。我想你可以向苹果公司提交一个bug。@vipw你是对的,经过大量测试,我确认这是一个bug——尽管我相信它是QuickTime中的bug,而不是Safari中的bug。Safari似乎只是嵌入了一个QuickTime元素,并对其进行ping以获取有关视频的信息。当递给具有多个不同视频质量的流时,QuickTime将为
.videoHeight
返回不正确的值。有趣的是,QuickTime本身报告了正确的质量,所以这只是浏览器插件的问题。