mp4 内容不会在提供给三星互联网浏览器的网页中播放
mp4 content won't play in webpages served to Samsung Internet browser
我有一个网站可以在除三星 Internet 浏览器之外的所有浏览器中播放 mp4 媒体(通过 <video>
标签和 DASH),它是三星 Galaxy 手机的默认设置,可能很多其他三星设备。
在台式机上,iPad,甚至是古老的 HP TouchPad 平板电脑上,它都可以正常工作。在同一台三星设备上使用其他浏览器(例如 Chrome),mp4 媒体可以正常播放,因此不受 Android 或设备硬件的限制。
我可以使用 JavaScript 检测三星浏览器并禁用这些设备上的视频内容,但我真的不想那样做。当然有解决方法。
这是一个快速测试,如果您想在您的设备上尝试一下。它尝试在一页上播放 3 种略有不同类型的 mp4 媒体:
在我的 Samsung Galaxy S6 上,none 个可以在 Samsung Internet 浏览器中播放。
我尝试使用 video.js,但这并没有改变行为。
更新:
在我发布这篇文章后的一年里,三星终于更新了他们的浏览器,mp4 内容现在可以正确播放,包括自动播放。
当时三星的移动浏览器似乎不支持 HTML5 媒体源扩展 (MSE) - 这些是 DASH 播放所必需的。
您可以使用多个在线链接在浏览器上测试 MSE 支持,例如:
我在三星 Galaxy 7 设备上的三星浏览器(当前最新版本:v6.2.01.12)上遇到了同样的问题。在我的例子中,我使用的是 video.js,并播放 HLS。
我发现的问题是自动播放不起作用。
我的解决方案是尝试以编程方式播放视频,如果检测到失败(承诺拒绝),则显示播放按钮,并在用户点击时播放视频。那对我有用。
它会是这样的:
const video = document.getElementById('my-video');
video.play()
.catch((err) => {
if (err.name === 'NotAllowedError') {
// Display PLAY button with a click event listener and play the video there.
}
});
这是一个简化的代码,我会具体检查我的视频是否是一个实际的 <video>
元素,如果 video.play()
returns 是一个承诺和所有基本安全检查(因为许多其他浏览器都支持此功能)。
但是,它显示了处理这种自动播放不工作场景的想法。
希望对您有所帮助!
它对我来说很好,如果需要播放多个视频,你可以使用静音检查这个:
<pre>
<video class="video" webkit-playsinline="" playsinline="" muted="" autoplay="" loop="" preload="auto" width="100%" height="auto" controles="">
<source src="wp-content/uploads/talkforweb.com.au.mp4" type="video/mp4">
</video>
</pre>
我有一个网站可以在除三星 Internet 浏览器之外的所有浏览器中播放 mp4 媒体(通过 <video>
标签和 DASH),它是三星 Galaxy 手机的默认设置,可能很多其他三星设备。
在台式机上,iPad,甚至是古老的 HP TouchPad 平板电脑上,它都可以正常工作。在同一台三星设备上使用其他浏览器(例如 Chrome),mp4 媒体可以正常播放,因此不受 Android 或设备硬件的限制。
我可以使用 JavaScript 检测三星浏览器并禁用这些设备上的视频内容,但我真的不想那样做。当然有解决方法。
这是一个快速测试,如果您想在您的设备上尝试一下。它尝试在一页上播放 3 种略有不同类型的 mp4 媒体:
在我的 Samsung Galaxy S6 上,none 个可以在 Samsung Internet 浏览器中播放。
我尝试使用 video.js,但这并没有改变行为。
更新:
在我发布这篇文章后的一年里,三星终于更新了他们的浏览器,mp4 内容现在可以正确播放,包括自动播放。
当时三星的移动浏览器似乎不支持 HTML5 媒体源扩展 (MSE) - 这些是 DASH 播放所必需的。
您可以使用多个在线链接在浏览器上测试 MSE 支持,例如:
我在三星 Galaxy 7 设备上的三星浏览器(当前最新版本:v6.2.01.12)上遇到了同样的问题。在我的例子中,我使用的是 video.js,并播放 HLS。 我发现的问题是自动播放不起作用。 我的解决方案是尝试以编程方式播放视频,如果检测到失败(承诺拒绝),则显示播放按钮,并在用户点击时播放视频。那对我有用。 它会是这样的:
const video = document.getElementById('my-video');
video.play()
.catch((err) => {
if (err.name === 'NotAllowedError') {
// Display PLAY button with a click event listener and play the video there.
}
});
这是一个简化的代码,我会具体检查我的视频是否是一个实际的 <video>
元素,如果 video.play()
returns 是一个承诺和所有基本安全检查(因为许多其他浏览器都支持此功能)。
但是,它显示了处理这种自动播放不工作场景的想法。
希望对您有所帮助!
它对我来说很好,如果需要播放多个视频,你可以使用静音检查这个:
<pre>
<video class="video" webkit-playsinline="" playsinline="" muted="" autoplay="" loop="" preload="auto" width="100%" height="auto" controles="">
<source src="wp-content/uploads/talkforweb.com.au.mp4" type="video/mp4">
</video>
</pre>