1

我在 Delphi 2010 中编写了一个小型视频预览工具,但我想以编程方式使视频静音,因为正如我所说,它是用于预览的。

这段代码我试过好几个版本,但总是会导致脚本错误,最后还是做不到。

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

还尝试等待一段时间让控件完成浏览,但仍然没有。

4

2 回答 2

2

尝试在 TWebBrowser 的OnDocumentComplete事件中调用您的代码。此事件在内部文档完全加载时触发,因此该对象(如果预期存在)已经下载并存在。如果不显示您的 JavaScript 代码,我无法告诉您更多信息。

但我会做不同的事情。我会将这样的代码直接实施您的导航网页中。它可以在onYouTubePlayerReady事件处理程序中立即静音,这意味着当 YouTube 播放器完全加载时立即静音。这比稍后调用该函数要好,因为它可能会因为 TWebBrowser 的导航完成和代码执行之间的一些延迟而产生短暂的声音爆发。

于 2011-07-22T10:51:21.090 回答
0

参考 youtube API 的http://code.google.com/apis/youtube/js_api_reference.html

我相信,当您尝试将视频静音时,“document.getElementById("movie_player")”会失败。

尝试将其称为 setTimeout('document.getElementById("movie_player")', 10000 ); 其中 10000 是 10 秒,甚至更长,可能播放器需要几秒钟才能下载。

我也会在不同的浏览器中尝试一下,看看它是否真的在 TWebBrowser 中不能按预期工作。

编辑 我也想试试“VLC”,它可以在本地和远程播放 swf 文件,有 VLC 库的接口,为什么不呢?(:

于 2011-07-22T08:18:24.127 回答