Отключить звук YouTube в Delphi TWebBrowser

1

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

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

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

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

  • 1
    Какое сообщение об ошибке? Можете ли вы показать код Javascript, где вы загружаете видео YouTube.
  • 0
    Это чистый вопрос JavaScript. Я бы не стал делать это на стороне веб-браузера. И ответ может быть здесь .
Показать ещё 5 комментариев
Теги:
browser
youtube

2 ответа

2
Лучший ответ

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

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

  • 1
    +1 нравится ссылка с полным рабочим и простым примером
0

ссылка на 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, так почему бы и нет? (:

  • 0
    Я действительно попробовал версию setTimeout, прежде чем опубликовать этот вопрос, все еще не повезло. Да, я мог бы сделать это с библиотеками VLC, но это потребовало бы их перераспределения. элемент управления WebBrowser не требует ничего лишнего. :-)
  • 1
    @Matt - более того, TWebBrowser - это оболочка для вашего Internet Explorer, которая у вас есть на вашем компьютере, и если вы сказали, что она работает, если вы запускали ее вручную, то есть только две возможности: 1) она вызывается не так, как Delphi (что менее вероятно); 2) Вы вызываете это слишком рано (попробуйте вызвать его в событии OnDocumentComplete). У меня нет опыта работы с этим плеером, но я бы сказал, что он полностью загружен клиенту (поэтому на OnDocumentComplete должен быть готов movie_player).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню