python - 使用 Python for PyQt WebEngine 授予对 Cam & Mic 的访问权限

标签 python pyqt webrtc pyqt5 qwebengineview

我正在构建一个从 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_()

最佳答案

要授予权限,您必须使用 setFeaturePermission方法QWebEnginePage ,但是当 View 发出 featurePermissionRequested 时要求您这样做时,您必须这样做信号,这将指示 url 和 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_()

关于python - 使用 Python for PyQt WebEngine 授予对 Cam & Mic 的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48676566/

相关文章:

java - 从应用程序而非浏览器将视频流式传输到 WebRTC

webrtc - 回退到 TURN 的预期连接百分比可能是多少?

javascript - 如何使用v2.2(opentok版本)进行视频录制和下载

qt - 在PyQt中覆盖QPaintEvents

python - 如何在没有 QWidget 的情况下使用 TabWidget 启动项目

python - Python 中的 XML 和 lxml

python - 从现有数据框的某些列创建新的 Pandas 数据框

python - 如何使用 PyQt Signal Slot 连接两个类?

python - Windows 上的 Tensorflow 量化

python - 连体模型不学习任何东西,总是将图像编码成零向量