HTML5视频标签在Safari浏览器、iPhone和iPad上无法正常工作。

7 浏览
0 Comments

HTML5视频标签在Safari浏览器、iPhone和iPad上无法正常工作。

我正在尝试创建一个HTML5网页,其中包含一个小的视频,大约13秒。我将此视频的Flash版本转换成了3种格式:.ogv使用FireFogg,.webm也使用FireFogg,以及使用HandBrake应用程序转换成了.mp4格式。我在页面中使用了以下HTML脚本:\n\n在Chrome和FireFox中,视频正常工作,但在桌面版的Safari以及iPhone和iPad上完全无法工作,输出结果只是一个空白页面,显示了视频标签的控件,但没有加载任何内容。\n请注意,我使用的Safari版本支持HTML5视频。

0
0 Comments

HTML5 Video标签在Safari、iPhone和iPad上不起作用的问题,可能是由于Web服务器不支持HTTP字节范围请求。在我使用的Web服务器上就是这种情况,结果是视频小部件加载并显示播放按钮,但点击按钮没有任何效果。视频在Firefox和Chrome上工作正常,但在iPhone和iPad上不工作。

关于字节范围请求,可以在mobiforge.com的这里的"附录A: 为Apple iPhone进行流媒体传输"中阅读更多内容:

首先,Safari浏览器请求内容,如果是音频或视频文件,它会打开自己的媒体播放器。然后,媒体播放器会请求内容的前2个字节,以确保Web服务器支持字节范围请求。如果支持,iPhone的媒体播放器会通过字节范围请求请求剩余的内容并进行播放。

您可能想在网络上搜索"iphone mp4 byte-range"。这里还有另一个很好的资源,用于配置服务器以支持字节范围请求。

这就是我的问题所在。我正在使用Flask的'send_file'和'send_from_directory'调用。我必须在这些调用中添加'conditional=True'参数。

这个答案适用于我,并在我的Play Framework实现(2.7)中起作用。使用RangeResult.ofPath(finalPath, range, Some(mime)),应该适用于2.7及以上版本。

附注:忘记了如何获取范围。这个调用可以获取范围。它以"Range"的形式传入。`val range = request.headers.get("Range")`

谢谢,这对我也有用(使用Python内置的http服务器不起作用--移动Safari拒绝播放视频,因为Web服务器不支持字节范围请求)。可以使用npmjs.com/package/http-server来实现这个目的--它支持字节范围!

0
0 Comments

问题出现的原因:iPad上的视频无法播放,除非设置controls="true"标志。

解决方法:在video标签中添加controls="true"属性。

文章内容如下:

对于未来的搜索者来说,还有另一个可能的解决方法:

(如果您的问题不是一个mimetype问题。)

由于某种原因,除非我设置controls="true"标志,否则iPad上的视频无法播放。

例如:这在iPhone上对我起作用,但在iPad上不起作用。

<video loop autoplay width='100%' height='100%' src='//some_video.mp4' type='video/mp4'></video>

现在,这在iPad和iPhone上都可以工作:

<video loop autoplay controls="true" width='100%' height='100%' src='//some_video.mp4' type='video/mp4'></video>

这也是我的问题...直到我在video标签中添加了controls属性,没有任何东西起作用。

这对我来说非常完美。对于未来的读者,我在上面的代码中使用video标签嵌入了一个mp4视频。谢谢!

对我来说,添加autoplay选项起作用了。我的代码中有controls="false"

controls="false"是多余的;controls本身是一个布尔值,当它存在时,打开控制,当它不存在时,没有控制。请参阅W3C规范。

另外,由于controls是一个布尔属性,唯一有效的值是none,空字符串或它自己的名称。True和false值是不正确的。

0
0 Comments

HTML5 Video标签在Safari、iPhone和iPad上无法工作的原因可能有多种。有些用户反馈说,关闭低电量模式可以解决该问题。另外,视频标签中添加playsinline属性也可以解决这个问题。下面是一个示例代码:

<video class="video-background" autoplay loop muted playsinline>

只有添加了playsinline属性才能正常工作。有些用户表示,虽然添加了"playsinline",视频控件仍然不显示,但这个方法在iPhone上完美解决了问题,而且在其他设备上也可以正常工作,而且不显示控件。对于使用React的用户,需要使用playsInline,采用驼峰式命名。

还有一些用户指出,这个问题不仅仅是浏览器本身的问题,而是iPhone上的通用问题,因为他们的视频在其他浏览器上也不能播放。

对于一些用户来说,很遗憾,playsinline并不能解决问题。

还有一些用户表示,添加了宽度、高度和preload="auto"之后问题得到了解决。

总之,根据用户的反馈,关闭低电量模式、添加playsinline属性以及设置视频标签的宽度、高度和preload属性可能是解决HTML5 Video在Safari、iPhone和iPad上无法工作的方法。

0