DUICUO

最新のlibvlc4.0 + Qtデザインビデオプレーヤー

オープンソースの詳細については、以下をご覧ください。

51CTO オープンソース基本ソフトウェアコミュニティ

https://ost..com

I. はじめに

VLCはシンプルで優れた無料のオープンソースソフトウェアです。オープンソースソフトウェアの利点をすべて備え、継続的に更新・メンテナンスされ、優れた互換性などを提供する数少ないオープンソースメディアプレーヤーの一つです。VLCはlibvlcライブラリを提供しており、二次開発が非常に容易です。

安定版、バージョン3.0。公式サイト:https://www.videolan.org/。

VLCは最新バージョン4.0をリリースしました。バージョン3.0で発生していた多くの問題が解決されています。さらに、VLC 4.0はOpenGLとD3Dレンダリングをサポートするレンダリングインターフェースを提供し、二次開発を非常に容易にします。ソースコードには、Qt、SDL、GTK、OpenGLレンダリング、D3Dレンダリングなどを使用した多くのサンプルコードが開発者向けに提供されています。

VLC の最新バージョン 4.0 の公式 Web サイトのホームページは https://nightlies.videolan.org/ です。

II. VLC 4.0のソースコードとライブラリファイルのダウンロード

1. SDKライブラリファイルをダウンロードする

公式サイト:https://nightlies.videolan.org/。

ウェブページを開くと、様々な環境向けのダウンロードオプションが表示されます。私の開発環境はWindowsなので、32ビット版と64ビット版の両方のSDKファイルをダウンロードします。

タイミングに関して言えば、VLC はかなり頻繁に更新されます。

win64 パッケージをダウンロードします。7z パッケージをダウンロードして解凍するだけで、直接使用できます。

win32 パッケージをダウンロードします:

ダウンロードした Win32 および Win64 ライブラリ ファイルは次のとおりです。

デコードディレクトリを開くと、SDKディレクトリが表示されます。このSDKディレクトリには、二次開発に必要なincludeディレクトリとlibディレクトリが含まれています。

外部の libvlc.dll および libvlccore.dll ライブラリ ファイルとプラグイン ディレクトリは、実行時に必要なファイルです。

2. VLCソースコードのダウンロード

Gitを使って最新のソースコードをクローンしてください。ソースコードにはVLC 4.0を使用するためのサンプルコードが含まれているため、すぐにコードを実行できます。

 gitクローンhttps://code.videolan.org/videolan/vlc.git

クローン作成に成功しました: vlc\doc\libvlc ディレクトリには多くの例があります。

ここでは、QtGLとQtPlayerという2つのQtのサンプルを紹介します。これら2つのサンプルを実行してテストを完了します。

QtGL はレンダリングに OpenGL を使用しますが、QtPlayer はレンダリングにウィンドウ ハンドルの埋め込みを使用します。

3. ライブラリファイルをコピーする

サンプル コードを簡単に実行できるように、ダウンロードしたライブラリ ファイルから lib ライブラリ、プラグイン ディレクトリ、および dll ファイルをプロジェクト ディレクトリにコピーし、vlc40_win32 と vlc40_win64 の 2 つのディレクトリを作成します。

QtGL プロジェクトを例に挙げます。

ダウンロードした圧縮ファイルのデコーダー ディレクトリから関連ファイルをコピーします。

プロジェクト ディレクトリにコピーします。

64 ビット ライブラリでも操作方法は同じです。

4. プロジェクトを実行する(QtGL)

(1)プロジェクトを開く

(2).proファイルを変更する

コンパイラが 32 ビットか 64 ビットかに応じて、ライブラリ ファイルとヘッダー ファイルのパスを設定します。

テンプレート=アプリ
ターゲット= qtglvlc

CONFIG += c ++ 14 #link_pkgconfig force_debug_info
PKGCONFIG = libvlc
QT +=ウィジェット
ソース+ = main.cpp qtvlcwidget.cpp
ヘッダー+= qtvlcwidget . h
# 現在のQtビルドスイートに関する情報を出力します
メッセージ( $$QT_ARCH )
# は32ビットビルドキットを示します
( QT_ARCHi386 )を含む
{
INCLUDEPATH += $$PWD \vlc40_win32 \sdk \include #VLCヘッダーファイルのインクルードディレクトリ
INCLUDEPATH += $$PWD \vlc40_win32 \sdk \include \vlc #VLCヘッダーファイルのインクルードディレクトリ
LIBS += $$PWD \vlc40_win32 \sdk \lib \libvlc . lib #VLCライブラリファイルパス
LIBS += $$PWD \vlc40_win32 \sdk \lib \libvlccore .lib
}
# は64ビットビルドキットを示します
( QT_ARCHx86_64 )を含む
{
INCLUDEPATH += $$PWD \vlc40_win64 \sdk \include #VLCヘッダーファイルのインクルードディレクトリ
INCLUDEPATH += $$PWD \vlc40_win64 \sdk \include \vlc #VLCヘッダーファイルのインクルードディレクトリ
LIBS += $$PWD \vlc40_win64 \sdk \lib \libvlc . lib #VLCライブラリファイルパス
LIBS += $$PWD \vlc40_win64 \sdk \lib \libvlccore .lib
}

5. コンパイルして実行(QtGL)

(1)テストを容易にするためにビデオパスを変更します。

`glWidget->playMedia()` 関数は、メディアファイルを開くために `libvlc_media_new_location` 関数を呼び出します。`libvlc_media_new_location` 関数はプロトコルを開くために使用されます。この関数はより強力で、多くのプロトコルをサポートできます。また、この関数を使用してローカルビデオも開くことができるため、汎用性が向上しています。さらに、この関数を使用する場合、パスのスラッシュは通常の左スラッシュ(Linux スタイル)を使用でき、変換は不要です。

一般的な使用例をいくつか示します。

ローカルファイルを開きます: libvlc_media_new_location ( inst , "file:///D:/work/test.mp4" );
RTSP ストリーミングを有効にする: libvlc_media_new_location ( inst , "rtsp://10.0.0.4:554/cam" );
RTMP ストリーミングを有効にする: libvlc_media_new_location ( inst , "rtmp://10.0.0.4:554/cam" );
現在のデスクトップ画面を再生します: libvlc_media_new_location ( inst , "screen://" );

(2)コンパイラの選択

現在使用しているコンパイラは、MSVC_VS2017_32 ビットと MSVC_VS2017_64 ビットです。

(3)プロジェクト建設

プロジェクトを垂直に構築するには、左下隅をクリックします。

ビルドが完了したら、VLC プラグイン ディレクトリと関連する DLL ファイルをビルド シャドウ ディレクトリにコピーします。

(4)最終ランニング効果

コピー後、左下隅の緑色の三角形をクリックしてプログラムを実行します。

6. プロジェクトを実行する(QtPlayer)

(1)プロジェクトを開く

(2).proファイルを変更する

 # 現在のQtビルドスイートに関する情報を出力します
メッセージ( $$QT_ARCH )

# は32ビットビルドキットを示します
( QT_ARCHi386 )を含む
{
INCLUDEPATH += $$PWD \vlc40_win32 \sdk \include #VLCヘッダーファイルのインクルードディレクトリ
INCLUDEPATH += $$PWD \vlc40_win32 \sdk \include \vlc #VLCヘッダーファイルのインクルードディレクトリ
LIBS += $$PWD \vlc40_win32 \sdk \lib \libvlc . lib #VLCライブラリファイルパス
LIBS += $$PWD \vlc40_win32 \sdk \lib \libvlccore .lib
}

# は64ビットビルドキットを示します
( QT_ARCHx86_64 )を含む
{
INCLUDEPATH += $$PWD \vlc40_win64 \sdk \include #VLCヘッダーファイルのインクルードディレクトリ
INCLUDEPATH += $$PWD \vlc40_win64 \sdk \include \vlc #VLCヘッダーファイルのインクルードディレクトリ
LIBS += $$PWD \vlc40_win64 \sdk \lib \libvlc . lib #VLCライブラリファイルパス
LIBS += $$PWD \vlc40_win64 \sdk \lib \libvlccore .lib
}

(3)コードを修正する

サンプル コードでは、libvlc_media_new_path 関数を使用してメディア ファイルを読み込むため、パス内のスラッシュを変換する必要があります。

 Windowsでlibvlc_media_new_path関数を使用する際は、パス内のスラッシュに注意してください。パスは必ず二重のスラッシュで渡してください。デフォルトのパス選択でスラッシュが残っている場合は、std::replace関数を使用して変換できます。

std::replace(fileOpen.begin(), fileOpen.end(), QChar('/'), QChar('\\'));

(4)プロジェクトの運営

注:VLCプラグインディレクトリと関連DLLファイルをランタイムディレクトリにコピーする必要があります。コピーしないと、プログラムが正しく動作しません。具体的な手順については、上記のセクション2.5の指示を参照してください。

ビデオ再生を読み込んでいます:

オープンソースの詳細については、以下をご覧ください。

51CTO オープンソース基本ソフトウェアコミュニティ

https://ost..com