C++ Builder CE ネットワークプログラミング

6. rtspLibVLCで処理する 総括ないし補足

rtspをサポートする外部ライブラリとしてLibVLCを使う例を二つ示しましたが、LibVLC内部の関数群を利用するという意味では同じアプローチです。一応出揃ったところで、それぞれの長短について私見を述べておきたいと思います。

1.DLLからimplibないしmkexpを使って、インポートライブラリを作りプロジェクトに追加してプログラムを作る方法。dll群やpluginディレクトリさえ手に入れば、VLC Playerをインストールせずにプログラムが使えてしまうので、これが許容されるかどうかはグレーです。LibVLCのフォーラムhttps://forum.videolan.org/viewforum.php?f=32&start=25で話題になったことがあります。またLibVLCを使う多数のプログラムそれぞれに、dll群とpluginフォルダーをコピーするのは数が多くなるとディスクスペースの浪費でもあります。フリープログラムとして配布しようとする場合には、dll群を添付するかユーザー側で用意してもらう必要があります。長所は、LibVLCに含まれる関数群は全部使えます。これは大きいです。

2.DLL群をロードして、各関数のエントリーポイントを引いて、実際のアドレスを求めて使う方法では、ディスクスペースの節約にはなります。ただしVLC Playerをインストールしておく必要が(普通は)あります。VLC Playerはそれだけで色々と有効な使い方ができますし、直接rtspプロトコルのテスト等ができます。さらにはRenderer経由でchrome cast ultra等へcastすることも簡単にできます。そうしたことを実際自前のプログラムから行うことは難しい場合もあります。上に書いたフォーラムの中を読めば分かります。筆者もここに質問を投げたことがありました。記載したvlcwrapper.hにエントリーされた関数は必要最小限のものであり、追加で関数のエントリーを増やすにはその関数のプロトタイプ宣言、つまり引数の型と数、戻り値の型が正確にわからないとだめです。renderer_discover関数の定義などは、https://fossies.org/dox/vlc-3.0.21/group__libvlc__renderer__discoverer.html等を参考にします。これはバージョン3.0.21ですが、LibVLC自体は4.0.xへ進みつつあるのでバージョンにも注意しましょう。

ということですが、筆者はwrapperを作って比較的簡単に使えるので、LibVLCに関しては2番目のアプローチを取っています。別記事で述べている”らじるらじる聞き逃しサーチアプリ”でもこのアプローチです。

コメント