格兰特凸轮和麦克风使用Python的PyQt的WebEngine访问(Grant access to

2019-09-27 15:21发布

我建立在Python称为一个简单的Web应用程序。 我使用下面的代码。 什么是编程访问权限授予凸轮和麦克风的最简单的方法加载该页面时? 我只在网上找到了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_()

Answer 1:

要赋予权限必须使用setFeaturePermission的方法QWebEnginePage ,但当视图要求你这样做时,它发出的,你必须这样做featurePermissionRequested信号,这将表明URL和功能 。

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


Answer 2:

所以我发现PyQt的对树莓派不包括对WebEngine功能的支持。 因此,在该PyQt的类WebEngineView不能在裨使用。 (我真的不明白为什么它工作正常,在Ubuntu上而不是在Raspbian,但无论如何...)。

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

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

与访问麦克风和摄像头Chrome启动预授权。



文章来源: Grant access to Cam & Mic using Python for PyQt WebEngine