Я создал очень простой 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);
}
}});
Проблема в том, что видео воспроизводится бит , а затем останавливается.
Есть ли способ отключить звук до воспроизведения?
Обновление
Я все еще пытаюсь найти рабочее решение, но это кажется почти невозможным.
Так или иначе, даже изменение атрибута каждого видео defaultMuted = true;
не имеет никакого эффекта.
Стоит отметить, что я никоим образом не мог отключить звук видео, если только он не проигрывается строго ( обратно в исходное положение! * ) ... вот почему мой следующий обходной путь не удался на последнем шаге:
- Преобразуйте URL YouTube во встроенный и установите
autoplay=0
.
- Изменить атрибуты
muted
всех видео на true
.
- Воспроизведите видео, выполнив
click()
над ним прагматично!
Результат : Без эффекта .
Также я попытался вызвать событие onwaiting
в начале видео, чтобы отключить его после. Но, как я уже упоминал, атрибут muted = true;
, кажется, строго отключает видео , пока воспроизводится или, по крайней мере, воспроизводится , даже если оно приостановлено.