gpt4 book ai didi

qt - 如何在我的自定义应用程序中禁用 flashplayer 上的声音?

转载 作者:行者123 更新时间:2023-12-01 09:23:38 24 4
gpt4 key购买 nike

我使用 Qt QWebView 组件,它使用 flash-player 进行视频播放。如何禁用在我的 QWebView 内执行的 flashplayer 上的声音?

我考虑的一种方法是执行一些 javascript 代码来禁用播放器上的声音,但是什么时候执行呢?例如,如果在调用“load”后 1 秒运行,下一个代码会禁用声音:

page.mainFrame().evaluateJavaScript("""
var mute_all_tags=function(tag){
var elems = document.getElementsByTagName(tag);
for(var i = 0; i < elems.length; i++){
elems[i].muted=true;
//alert(elems[i]);
}
}
mute_all_tags("video");
mute_all_tags("audio");
""")

之前的通话不会停止声音。调用 QWebView.loadFinished 会停止声音,但在那一刻已经发出了一些声音,我怎样才能立即停止声音?

最佳答案

听起来您正在将带有 HTML5 视频或 Flash 视频的外部页面(即第 3 方网站)加载到您的 QWebView 中。此外,从一开始就保持视频静音且绝对没有音频似乎是您正在寻求的关键功能。

解决方案 1

您的page.mainFrame().evaluateJavaScript("...")似乎是最简单的解决方案,但在执行此脚本之前会有延迟。

解决方案 2

另一种方法是抓取目标网站,然后使用正则表达式或类似的东西更改所有 <video>添加静音属性的标签,例如<video controls muted> .对任何 <embed> 做类似的事情标签也是。然后,使用 setHtml() 将修改后的 HTML 加载到 Web View 中。方法,还设置基本 url,可能还有referer header。然后 HTML 将在您的视频从一开始就静音的情况下呈现。

解决方案 3

另一个想法可能是使用 Qt 本身拦截媒体 URL(例如 .mp4、.mov),并最初将它们保存在暂停队列中,调用您的 page.mainFrame().evaluateJavaScript("...")以编程方式使 <video> 静音和 <audio>标签,然后在 evaluateJavaScript() 时允许队列继续进行。调用返回。媒体,如果自动播放,应该开始静音。

关于qt - 如何在我的自定义应用程序中禁用 flashplayer 上的声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29377139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com