Отключить звук YouTube в Delphi TWebBrowser - PullRequest
1 голос
/ 21 июля 2011

Я пишу небольшой инструмент для предварительного просмотра видео в Delphi 2010, но хочу программно отключить звук видео, потому что, как я уже сказал, он предназначен для предварительного просмотра.

Я пробовал несколько версий этого кода,но это всегда приводит к ошибке сценария, и в конце концов он не может это сделать.

WebBrowser1.ControlInterface.Document.QueryInterface(IHtmlDocument2, doc);
doc.parentWindow.execScript( 'document.getElementById("movie_player").mute()', 'javascript' );

Также пытался немного подождать, пока элемент управления завершит просмотр, но все равно ничего.

Ответы [ 2 ]

2 голосов
/ 22 июля 2011

Попробуйте вызвать свой код в событии TWebBrowser OnDocumentComplete .Это событие вызывается, когда документ внутри полностью загружен, поэтому объект, если он там ожидается, уже загружен и присутствует.Без показа вашего кода JavaScript я не могу вам больше рассказать.

Но я бы сделал это иначе.Я бы реализовал код типа этот прямо на вашей веб-странице.Он может немедленно отключить звук в обработчике события onYouTubePlayerReady , что означает сразу же, когда проигрыватель YouTube полностью загружен.Это лучше, чем вызывать функцию позже, потому что она может вызвать короткий звуковой импульс из-за некоторой задержки между завершением навигации TWebBrowser и выполнением вашего кода.

0 голосов
/ 22 июля 2011

ссылка на API YouTube http://code.google.com/apis/youtube/js_api_reference.html

Я считаю, что в то время, когда вы пытаетесь отключить звук видео, происходит сбой «document.getElementById (" movie_player ")".

попробуйте назвать его как setTimeout ('document.getElementById ("movie_player")', 10000); где 10000 - это 10 секунд или даже больше, возможно, для загрузки плееру требуется несколько секунд.

Я бы также попробовал в разных браузерах посмотреть, действительно ли это что-то, что не работает должным образом в TWebBrowser.

EDIT Я также хотел бы попробовать VLC, он может воспроизводить SWF-файлы локально и удаленно, есть интерфейсы для библиотек VLC, так почему бы и нет? (

...