我创建了一个非常简单的WebView
浏览器,它将直接从某些YouTube
中打开URL
视频,例如:https://www.youtube.com/watch?v=someId
默认情况下,或者在播放前(即加载后),我要静音该视频。
我尝试过的是:
String muteScript = "window.onload = function() {\n" +
"var videos = document.querySelectorAll('video'),\n" +
"audios = document.querySelectorAll('listen');\n" +
"[].forEach.call(videos, function(video) { video.muted = true; });\n" +
"[].forEach.call(audios, function(audio) { audio.muted = true; })}";
WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
@Override
public void changed(ObservableValue ov, Worker.State oS, Worker.State nS) {
if (nS == Worker.State.SUCCEEDED) {
webEngine.executeScript(muteScript);
}
}});
问题是,视频声音正在播放 bit ,然后停止播放。
是否可以在播放之前 将其静音?
更新
我仍在尝试找到可行的解决方案,但这似乎几乎是不可能的。
以某种方式,即使更改每个视频的属性defaultMuted = true;
也没有任何效果。
值得一提的是,除非严格播放视频(回到第一位!),否则我绝不能使视频静音。这就是为什么我的以下解决方法在最后一步失败了:< / p>
autoplay=0
。muted
属性更改为true
。click()
播放视频!结果:无效。
我还尝试在视频开始时触发事件onwaiting
,以在之后将其静音。但是正如我所提到的,muted = true;
属性似乎可以使视频正在播放时严格静音,或者即使暂停也至少已播放。
答案 0 :(得分:0)
您尝试过HTML DOM静音属性吗?
var vid = document.getElementById("videoElementId");
vid.muted = true;
我认为以上代码将为您提供帮助。否则请参考下面的链接 https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_video_muted
答案 1 :(得分:0)
我正尝试破解WebView
的cookie,并确定我是否可以使视频muted
类似于其他流行的浏览器,当它们记住用户的先前会话偏好时。
从那里,我发现了如何嵌入静音的YouTube视频,那就是在视频URL中添加mute=1
!
方法如下:
autoplay=1&mute=1
。完成!
String convertToEmbed(String url) {
String pattern = "(?<=watch\\?v=|/videos/|embed\\/|youtu.be\\/|\\/v\\/|\\/e\\/|watch\\?v%3D|watch\\?feature=player_embedded&v=|%2Fvideos%2F|embed%\u200C\u200B2F|youtu.be%2F|%2Fv%2F)[^#\\&\\?\\n]*";
Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(url);
if (matcher.find()) {
return "https://www.youtube.com/embed/" + matcher.group() + "?autoplay=1&mute=1";
}
return null;
}