ios - 在 Safari 和 IOS 中使用“Gifs”:视频不会自动播放
问题描述
我们不使用真正的 gif,而是使用循环播放的 mp4 视频(以节省加载时间)
但是,Safari 拒绝自动播放视频,即使是autoplay loop muted playsinline
.
有没有办法创建不需要大文件大小并且可以在移动设备中自动播放的循环视频/gif
我的视频标签如下所示:
<video preload autoplay="autoplay" muted="true" playsinline="true" loop>
<source src= 'https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_20mb.mp4'>
Your browser does not support video tag
</video>
也试过:
<video preload autoplay muted playsinline loop>
<source src= 'https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_20mb.mp4'>
Your browser does not support video tag
</video>
在某些情况下,我希望当用户滚动到特定点时启动 gif。所以我使用:
if (/* user scrolls to div */){
document.getElementById('my-video').play();
}
有没有办法让 Safari 中的视频自动播放,或任何最佳实践替代方案?
解决方案
您的 HTML5 实际上适用于不同的源视频 - 以下在 Mac OSX 10.14.5 上的 Safari 12.1.1 中运行:
<video preload autoplay="autoplay" muted="true" playsinline="true" loop>
<source src= 'http://clips.vorwaerts-gmbh.de/VfE_html5.mp4'>
Your browser does not support video tag
</video>
可能是您使用的视频源或它所在的网络或服务器存在问题 - 例如,加载速度非常慢,并且在我直接测试时无法在 Chrome 或 Safari 中播放。
如果您在另一个视频中看到同样的问题,可能是存在格式问题或之前已经看到的一些服务器到 safari 指示问题,尽管目前尚不清楚根本原因:Safari 9.0 可以不在存储服务器上播放 mp4 视频
无论哪种方式,上面的原始 HTML5 都没有明显的问题。
对于 iOS,有特定的自动播放规则 - 在撰写本文时,这些是最新的 AFAIK ( https://webkit.org/blog/6784/new-video-policies-for-ios/ ):
默认情况下,WebKit 将具有以下策略:
推荐阅读
- snakemake - Snakemake - 删除工作流产生的所有非输出文件
- altair - 如何从 Altair 的基本图表中更改 Y 值?
- javascript - ApexChart 烛台不会在每次状态更改时重绘
- google-apps-script - Google Apps 脚本 Google Sheets 更新而不打开
- vb.net - DrawImage 中的 Lockbits 问题
- typescript - 在没有 PHONE_STATE 权限的情况下获取唯一的设备 ID Ionic
- postmates - 嵌入 Postmates 跟踪 URL
- angular - Angular HTTP 删除请求,应用程序更新问题
- ios - 如何在 swift 4 中显示 FSCalendar 上的事件点?
- javascript - 动态生成的下拉列表中断 Web 服务调用