我正在尝试播放 HTML iframe 视频,但视频拒绝播放,除非我将声音设为静音。这是我的 WebView 方法。
private void playVideoOnWebView(String videoUrl) {
videoWebViewPlayer = findViewById(R.id.videoPlayerWebView);
videoWebViewPlayer.setVisibility(VISIBLE);
videoWebViewPlayer.getSettings().setJavaScriptEnabled(true);
videoWebViewPlayer.getSettings().getAllowContentAccess();
videoWebViewPlayer.getSettings().setDomStorageEnabled(true);
videoWebViewPlayer.getSettings().setAppCacheEnabled(true);videoWebViewPlayer.getSettings().setAppCachePath(getApplicationContext().getFilesDir().getAbsolutePath() + "/cache");
videoWebViewPlayer.getSettings().setDatabaseEnabled(true);
videoWebViewPlayer.getSettings().setDatabasePath(getApplicationContext().getFilesDir().getAbsolutePath() + "/databases");
videoWebViewPlayer.getSettings().setPluginState(WebSettings.PluginState.ON);
videoWebViewPlayer.getSettings().setDomStorageEnabled(true);
videoWebViewPlayer.setWebChromeClient(new WebChromeClient());
videoWebViewPlayer.loadUrl(videoUrl);
}
谢谢...
最佳答案
正如您所说,如果视频被静音,它可以毫无问题地播放,在我看来,您正在尝试自动播放视频而不遵循 Chrome's autoplay policies :
- 始终允许静音自动播放。
- 在以下情况下允许有声自动播放:
- 用户已与域进行交互(点击、点击等)。
- 在桌面设备上,已超过用户的媒体参与指数阈值,这意味着用户之前播放过有声视频。
- 用户已将网站添加到移动设备的主屏幕或在桌面设备上安装了 PWA。
- Top frames 可以将自动播放权限委托(delegate)给它们的 iframe,以允许自动播放声音。
最后一个可能是原因,要允许从 iframe 自动播放(当视频不是静音时),必须将 allow
属性设置为 autoplay
:
<iframe src="https://cross-origin.com/myvideo.html" allow="autoplay">
前段时间我也遇到了自动播放限制问题。
关于java - Webview 视频 (iframe) 不播放,除了静音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65224254/