gpt4 book ai didi

qt - 如何通过 id 使用 ffmpeg 记录窗口?

转载 作者:行者123 更新时间:2023-12-04 22:54:56 24 4
gpt4 key购买 nike

我想使用 c++ 或 qml 按名称获取窗口的 id,并在 ffmpeg 中使用此 id 记录特定屏幕。

ffmpeg -f x11grab -wid 0x6200012 -s 1920x1052 -r 30 -i :0.0+0,0
我怎样才能做到这一点?
不需要是id,可以是offset-x和offset-y,我只想在任意位置记录窗口。

最佳答案

我没有看到 x11grab可以通过ID记录一些屏幕为this answer表明答案指出一种选择是使用 GStreamer:

gst-launch-1.0 ximagesrc xid=0x04000007 ! videoconvert ! autovideosink
如何在 Qt 中获取窗口 ID?
  • 如果 QQmlApplicationEngine 与 Window 或 ApplicationWindow 一起使用:
    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    #include <QWindow>

    int main(int argc, char *argv[])
    {
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    const QUrl url(QStringLiteral("qrc:/main.qml"));
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
    &app, [url, &engine](QObject *obj, const QUrl &objUrl) {
    if (!obj && url == objUrl)
    QCoreApplication::exit(-1);
    if(QWindow *w = qobject_cast<QWindow *>(engine.rootObjects().first())){
    qDebug() << w->winId();
    }
    }, Qt::QueuedConnection);
    engine.load(url);

    return app.exec();
    }
  • 使用 QQuickView
    #include <QGuiApplication>
    #include <QQuickView>

    int main(int argc, char *argv[])
    {
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);

    QQuickView view;

    const QUrl url(QStringLiteral("qrc:/main.qml"));
    view.setSource(url);
    view.show();
    qDebug() << view.winId();
    return app.exec();
    }
  • Qt 小部件:
  • #include "mainwindow.h"

    #include <QApplication>
    #include <QDebug>

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    qDebug() << w.winId();
    return a.exec();
    }
    或者一般来说,您应该访问 QWindow 并获取窗口 ID:
    for(QWindow *w : QGuiApplication::allWindows()){
    qDebug() << w->winId();
    }

    关于qt - 如何通过 id 使用 ffmpeg 记录窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62649524/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com