允许访问Cam& Mic使用Python进行PyQt WebEngine

时间:2018-02-08 02:32:16

标签: python pyqt webrtc pyqt5 qwebengineview

我正在构建一个从Python调用的简单Web应用程序。我使用以下代码。什么是以编程方式授予Cam& C的访问权限的最简单方法加载此页面时的麦克风?我只在网上找到了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_()

2 个答案:

答案 0 :(得分:2)

要获得权限,您必须使用setFeaturePermissionQWebEnginePage方法,但是当视图要求您在发出featurePermissionRequested信号时这样做时,您必须这样做,这将表明网址和feature

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_()

答案 1 :(得分:0)

所以我发现Raspberry Pi上的PyQt不包括对WebEngine功能的支持。因此,PyQt中的WebEngineView类不能在Pi上使用。 (我真的不明白为什么它在Ubuntu上工作正常但在Raspbian上没有,但无论如何......)。

我开始使用Qt本身的路径,但后来了解到你可以使用以下方法

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

启动Chrome,可以访问预先授予的麦克风和相机。