amp-html - 加载后立即取消静音 amp-story 视频,以确保默认启用声音
问题描述
通过查看这个问题的答案并看到这个 PR,我明白了为什么 amp-stories 默认是静音的。但是我想在故事加载后立即尝试取消静音。
也许通过点击右上角的声音按钮调用相同的函数来取消静音?不是在“点击”上,而是在“加载”上调用它。
在amp-story-system-layer.js
,这个函数initializeListeners_()
初始化一切,如果我在我的页面上导入这些脚本,我猜这样的东西可以工作:
<script>
window.addEventListener('load', function() {
isMuted = false;
this.storeService_.subscribe(
StateProperty.MUTED_STATE,
(isMuted) => {
this.onMutedStateUpdate_(isMuted);
},
true
);
});
</script>
有任何想法吗?这是正确的方向吗?(我是 javascript 的初学者)
谢谢
解决方案
由于没有用户在 Web 上的手势,媒体无法播放声音,因此您无法在 Web 浏览器中构建此功能。如果您尝试取消媒体静音,播放将失败。
完成这项工作的唯一方法是在本机应用程序中,通过启用自动播放非静音媒体而不需要用户手势。您需要 (1) 配置 webview,以及 (2) 讲述故事以取消其媒体静音。
(1)配置webview(默认是阻止非静音媒体播放)
- 安卓:https://developer.android.com/reference/android/webkit/WebSettings.html#setMediaPlaybackRequiresUserGesture(boolean)
- iOS:https ://developer.apple.com/documentation/webkit/wkwebviewconfiguration/1851524-mediatypesrequiringuseractionfor
(2) 讲述故事以取消其媒体静音 您需要使用开源的 Story Web Player,如下所述:https ://github.com/ampproject/amphtml/issues/28416
然后您可以player.unmute()
为每个 Story 做。
总之,你想要做的是:
- 在网络浏览器中是不可能的
- 如果故事在已正确配置为自动播放未静音媒体的本机 web 视图中呈现,则可以使用 Web 播放器取消静音故事
推荐阅读
- c++11 - 自动调用移动构造函数
- c++ - 覆盖 C++ 未按预期工作
- angular - Angular 4路由器不适用于相对路径
- python - 线程中未处理的异常由
- javascript - 如何通过使用 setInterval 使用 JavaScript 根据小时和分钟的时差将按钮自动更改为“开始”到“过期”?
- jquery - 来自附加 HTML 的组件的 Angular 2+ 调用函数
- javascript - 在 React 组件中按字母顺序对基金名称列表进行排序
- android - 如何阅读 WhatsApp 媒体路径
- django - 如何在 PUT 请求的标头正文中发送 pk 而不是更改 API 端点 url
- android - Dagger2 转换为 android.dagger