使用Python为PyQt WebEngine授权访问摄像头和麦克风

3

我正在构建一个名为Python调用的简单Web应用程序。我正在使用以下代码。当加载此页面时,以编程方式授予访问Cam和Mic的最简单方法是什么?我只在网上找到了C ++示例,无法找到在Python代码中执行此操作的方法。

from PyQt5.QtWidgets import QApplication
from  PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl

app = QApplication([])

view = QWebEngineView()
view.load(QUrl("https://test.webrtc.org/"))
view.show()
app.exec_()

太棒了,eyllanesc厉害!这个工作得非常好。 - Lee Melbourne
如果我的回答有效,您应该将其标记为正确的答案,为此,您必须按下我的问题左侧的箭头。如果您想了解更多详细信息,请查看[tour]。 - eyllanesc
谢谢。我给了你一个“+1”,但没有意识到我需要打勾箭头。最好也把我的过去帖子修复一下。 - Lee Melbourne
2个回答

5
要授权,您必须使用QWebEnginePagesetFeaturePermission方法,但是只有在视图发出featurePermissionRequested信号并指示url和feature时才能执行此操作。请注意保留HTML标记。
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage
from PyQt5.QtCore import QUrl

class WebEnginePage(QWebEnginePage):
    def __init__(self, *args, **kwargs):
        QWebEnginePage.__init__(self, *args, **kwargs)
        self.featurePermissionRequested.connect(self.onFeaturePermissionRequested)

    def onFeaturePermissionRequested(self, url, feature):
        if feature in (QWebEnginePage.MediaAudioCapture, 
            QWebEnginePage.MediaVideoCapture, 
            QWebEnginePage.MediaAudioVideoCapture):
            self.setFeaturePermission(url, feature, QWebEnginePage.PermissionGrantedByUser)
        else:
            self.setFeaturePermission(url, feature, QWebEnginePage.PermissionDeniedByUser)

app = QApplication([])

view = QWebEngineView()
page = WebEnginePage()
view.setPage(page)
view.load(QUrl("https://test.webrtc.org/"))
view.show()
app.exec_()

嗨,eyllanesc。我已经发现在RPi上没有pyqt支持webengine。所以我需要使用c++,这是我完全不懂的一种语言。我从这里开始示例http://doc.qt.io/archives/qt-5.7/qtwebengine-webenginewidgets-minimal-example.html。您能否帮助我如何将自动访问摄像头和麦克风添加到该示例中? - Lee Melbourne

0

我发现树莓派上的PyQt不支持WebEngine功能。因此,在Pi上无法使用PyQt中的WebEngineView类。(我不太明白为什么在Ubuntu上可以正常工作,但在Raspbian上却不行...)。

我开始尝试使用Qt本身,但后来了解到可以使用以下方法:

os.system('chromium-browser --use-fake-ui-for-media-stream %s' % URL)

以预先授权麦克风和摄像头的方式启动Chrome。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接