我找了几个小时,想找到一个让QWebPage静音的好方法。我不想显示网页。我只是获取了它,然后评估了其中的一行javascript代码。然后我关闭QPageView。
但是该网页包含一些mp3流,因此在评估javascript代码时,我可以听到来自该流的消息。我试着切断mp3的声音,直到终止QWebBrowser。
我使用QWebKit而不是QWebEngine,因为msys posix platoform (link)没有可用的包。
所以问题只有一两秒钟。我在QWebSettings page上找不到任何有用的东西
在文件: C:\mysys64\mingw64\include\QtWebKit\5.212.0\QtWebKit\private\qwebpreferences_p.h的第108行中,我发现了以下内容:
void setWebAudioEnabled(bool enable);因此,不知何故,这可能是一种使QWebView或QWebPage静音的方法。
我在stackoverflow中找到了一个答案,它在页面加载时评估javascript代码,以静音页面拥有的所有视频和音频标签。但是这个答案也有一个延迟问题。
那么,如何在python QWebKit - QWebPage中静音网页上的所有声音呢?
发布于 2021-10-27 22:50:47
你有没有考虑过使用QWebPage.ToggleMediaMute?根据C++文档:
静音或取消静音悬停的音频或视频元素。(在Qt 5.2中添加)
这意味着您应该能够从源代码中获取QWebPage并调用qwp.action(QWebPage.ToggleMediaMute),以便将页面中的音频静音。
发布于 2021-10-28 07:02:17
使用selenium解决了这个问题。
此代码片段
pip install seleniumfrom selenium import webdriver
from selenium.webdriver.firefox.options import Options
url = "..."
javascript_code = "..."
firefox_options = Options()
firefox_options.add_argument("--headless")
wd = webdriver.Firefox(executable_path=r'G:\Geckodriver\geckodriver.exe',options=firefox_options)
wd.get(url)
javascript_output = str(wd.execute_script("return "+javascript_code)).strip()对于这种解决方案,我认为有两个问题:
https://stackoverflow.com/questions/69746277
复制相似问题