qtav ソース パッケージ (qt5.15+msvc2019) をコンパイルし、vlc メディア プレーヤーを使用して rtsp URL を生成し、qml クライアントの qtav を通じて開きます。

QTAV ソース パッケージのコンパイル

ソースコードをダウンロードする

依存ライブラリをダウンロードします (ffmepg およびその他のコンテンツが含まれています)
https://sourceforge.net/projects/qtav/files/depends/QtAV-depends-windows-x86+x64.7z/download
ソースパッケージをダウンロードする
https://github.com/wang-bin/QtAV
  • サブモジュールを更新する
cd QtAV && git submodule update --init

QTAV ソース コードと依存ライブラリを同じルート ディレクトリに解凍します。そうしないと、後で .qmake.conf の内容を変更する必要が生じる可能性があります

構成環境

依存ライブラリの lib\x64、bin\x64、およびインクルード ファイルを Qt インストール ディレクトリ (Qt\5.15.2\msvc2019_64) にコピーします。

.qmake.conf ファイルを開きます

2行追加

INCLUDEPATH += $$PWD/../QtAV-depends-windows-x86+x64/include
#这里我们要注意 如果我们编译器是64位的 填以下路径
#LIBS += -L$$PWD/../QtAV-depends-windows-x86+x64/lib/x64
#这里我们要注意 如果我们编译器是32位的 填以下路径
LIBS += -L$$PWD/../QtAV-depends-windows-x86+x64/lib

構築する

ああ、QtAV.pro を開いてビルドします。私はリリース バージョンを選択しました。途中でエラーが発生します: XXX は C++17 での使用法です。私はそれを pro ファイルに含めることにしましたCONFIG += C++17その後、構築が完了し、例の qml プロジェクトを通常どおり実行できるようになります。lib_win_x86_64内部の .lib および .dll ライブラリ ファイルは、必要なコンパイル済みの QTAV サードパーティ ライブラリです。[Qt オープンソース オーディオおよびビデオ フレームワーク モジュール QtAV] 01: 導入、コンパイル、簡単な使い方を参照してください

qtavをインストールする

QTAV のコンパイル ディレクトリにある sdk_install.bat を見つけて [インストール] をクリックするとインストールされます。

QML での QTAV の使用

Qt は QML 内の qtav を認識しない可能性があるため、pro ファイルに追加できますQML_IMPORT_PATH += [QtAVSourceCodeDir]/qml「プロジェクトで QtAV を使用する」を参照してください

  • テストプロ
QT       += qml quick

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp

HEADERS +=

FORMS +=

# Default rules for deployment.
qnx: target.path = /tmp/$${
    
    TARGET}/bin
else: unix:!android: target.path = /opt/$${
    
    TARGET}/bin
!isEmpty(target.path): INSTALLS += target

RESOURCES += \
    qrc.qrc

QML_IMPORT_PATH += [QtAVSourceCodeDir]/qml


  • main.cpp
#include<QQmlEngine>
#include<QQmlContext>
#include<QQmlApplicationEngine>
#include<QApplication>

int main(int argc, char *argv[])
{
    
    
    QApplication a(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    if (engine.rootObjects().isEmpty())
        return -1;
    return a.exec();
}

  • main.qml
import QtQuick 2.9
import QtQuick.Window 2.2
import QtAV 1.6


Window {
    
    
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Video {
    
    
        id: video
        anchors.fill: parent   
        source: "D://test.mp4"
    }
    MouseArea {
    
    
        anchors.fill: parent
        onClicked: video.play()
    }

}

vlc メディア プレーヤーを使用したスト​​リームのプッシュおよびプル

VLCメディアプレーヤーをダウンロード

公式ウェブサイトにアクセスしてダウンロードしてください

プッシュストリーム

メニュー -> メディア -> ストリーム。「追加」をクリックし、MP4 ビデオを追加し、「ストリーム」をクリックします。
ここに画像の説明を挿入
「次へ」をクリックして
ここに画像の説明を挿入
RTSP を選択し、「追加」をクリックします。
ここに画像の説明を挿入
ポートはデフォルトであり、パスは自分で入力できます。これはデフォルトのクリック ストリーム
ここに画像の説明を挿入
として保持できます。
ここに画像の説明を挿入

ここに画像の説明を挿入
現時点ではこのウィンドウを閉じないでください。

qmlで開く

  • main.qml
import QtQuick 2.9
import QtQuick.Window 2.2
import QtAV 1.6

//修改后
Window {
    
    
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Video {
    
    
        id: video
        anchors.fill: parent    //跟随父节点大小 全屏
         source:"rtsp://127.0.0.1:port//xxx"
    }
    MouseArea {
    
    
        anchors.fill: parent
         onClicked: video.play()

    }

}

その後、ビデオを再生できますが、時々停止したり、画面が真っ暗になったり、画像が非常に不鮮明になったりすることがあります。これはネットワークの問題である可能性があります。この問題はまだ解決されていません。

カメラのキャプチャ、RTSP ストリーミング、再生に vlc を使用する

現時点では、この問題は研究されていません。まず、カメラ キャプチャ、RTSP ストリーミング、および再生に vlc を使用する方法を参照してください。

おすすめ

転載: blog.csdn.net/qaaaaaaz/article/details/131538398