我正在构建一个从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_()
答案 0 :(得分:2)
要获得权限,您必须使用setFeaturePermission的QWebEnginePage方法,但是当视图要求您在发出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,可以访问预先授予的麦克风和相机。