Предоставьте доступ к Cam & Mic с помощью Python для PyQt WebEngine
Я строю простое веб-приложение под названием из Python. Я использую приведенный ниже код. Какой самый простой способ программно предоставить доступ к 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_()
2 ответа
Чтобы дать разрешение, вы должны использовать метод 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_()
Итак, я обнаружил, что PyQt на Raspberry Pi не включает поддержку возможностей WebEngine. Поэтому класс WebEngineView в PyQt нельзя использовать на Pi. (Я не очень понимаю, почему он работает нормально на Ubuntu, но не на Raspbian, но в любом случае...).
Я начал использовать сам Qt, но потом узнал, что вы можете использовать следующий подход
os.system('chromium-browser --use-fake-ui-for-media-stream %s' % URL)
запустить Chrome с доступом к микрофону и предварительно предоставленной камере.