使用 Qt WebEngine 自动授予对麦克风和摄像头的访问权限

李墨尔本

我正在使用 RPi 和 WebRTC 构建家庭安全系统。我只需要一种方法来触发浏览器在给定的 URL 上打开并自动授予对麦克风和相机的访问权限。我曾希望将 WebEngine 库与 PyQt 一起使用,但 PyQt 不支持 RPi 中的 WebEngine。所以我现在正在尝试 Qt 本身。不幸的是,我不熟悉 C++,所以我很挣扎。

这里的例子有我需要的 90%。代码复制如下。我只需要调整它以在请求时授予对麦克风和相机的访问权限。我希望有人能帮我解决这个问题?

#include <QApplication>
#include <QWebEngineView>

QUrl commandLineUrlArgument()
{
    const QStringList args = QCoreApplication::arguments();
    for (const QString &arg : args.mid(1)) {
        if (!arg.startsWith(QLatin1Char('-')))
            return QUrl::fromUserInput(arg);
    }
    return QUrl(QStringLiteral("https://www.qt.io"));
}


int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QApplication app(argc, argv);
    QWebEngineView view;
    view.setUrl(commandLineUrlArgument());
    view.resize(1024, 750);
    view.show();

    return app.exec();
}
埃利亚内斯克

我回答了这个问题,但对于 PyQt5:Grant access to Cam & Mic using Python for PyQt WebEngine,我只会将 C++ 转换为 Python,基础是相同的。

#include <QApplication>
#include <QUrl>
#include <QWebEngineView>

class WebEnginePage: public QWebEnginePage{
    Q_OBJECT
public:
    WebEnginePage(QObject *parent = Q_NULLPTR):QWebEnginePage(parent){
        connect(this, &WebEnginePage::featurePermissionRequested, this, &WebEnginePage::onFeaturePermissionRequested);
    }
private Q_SLOTS:
    void onFeaturePermissionRequested(const QUrl &securityOrigin, QWebEnginePage::Feature feature){

        if(feature  == QWebEnginePage::MediaAudioCapture
                || feature == QWebEnginePage::MediaVideoCapture
                || feature == QWebEnginePage::MediaAudioVideoCapture)
            setFeaturePermission(securityOrigin, feature, QWebEnginePage::PermissionGrantedByUser);
        else
            setFeaturePermission(securityOrigin, feature, QWebEnginePage::PermissionDeniedByUser);
    }
};

QUrl commandLineUrlArgument()
{
    const QStringList args = QCoreApplication::arguments();
    for (const QString &arg : args.mid(1)) {
        if (!arg.startsWith(QLatin1Char('-')))
            return QUrl::fromUserInput(arg);
    }
    return QUrl(QStringLiteral("https://www.qt.io"));
}


int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QApplication app(argc, argv);
    QWebEngineView view;
    view.setPage(new WebEnginePage);
    view.setUrl(commandLineUrlArgument());
    view.resize(1024, 750);
    view.show();

    return app.exec();
}

#include "main.moc"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

qt webengine 在 mac 上请求摄像头和麦克风访问

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

Qt WebEngine失败

是否可以检查用户是否具有摄像头和麦克风,以及是否已使用Javascript授予权限?

Qt5和QML:如何使用WebEngine Quick Nano Browser自动输入用户名和密码

我们如何使用HTML页面访问移动设备的摄像头和麦克风

Qt WebEngine似乎已初始化

如何在Qt WebEngine中禁用CSP?

在 Virt-Manager 中使用网络摄像头和麦克风

启用扬声器、麦克风和摄像头

如何获得麦克风和摄像头设备?

linux下如何访问微信自带的麦克风和摄像头?

Qt WebEngine适用于32Bit Windows

Qt WebEngine中QWebInspector的替代方法是什么?

PyQt WebEngine 设置 http 标头

使用 Angular 访问网络摄像头

如何允许或利用硒的webdriver与Java否认Firefox的麦克风和摄像头弹出的通知

是否可以通过regedit关闭麦克风和摄像头?

WebRTC:无法进行对等连接。浏览器不要求授予对麦克风/网络摄像头的权限

Qt5.9.1和Visual Studio 2015添加了Qt WebEngine模块

在没有摄像头和麦克风的情况下使用RTMP和Red5模拟视频聊天

使用FFMPEG记录来自两个麦克风的音频和来自一个网络摄像头和多路复用器的视频

使用Puppeteer for Node.js自动允许网络摄像头访问

使用JavaFX浏览器/ WebEngine构建Swing项目(Gradle)

在PyQt5 Webengine中使用html中的本地文件

使用SVN时将本地HTML加载到WebEngine中

使用Webengine视频和音频编解码器

webEngine JavaFX 与 Swing 一起使用的问题

如何使用Qt打开网络摄像头并捕获图像并将其保存在系统上