LoginSignup
3
0

More than 3 years have passed since last update.

libsrtのWindowsビルド方法(2020/5/28時点)

Last updated at Posted at 2020-05-29

執筆時点でVRizeで盛り上がってるYothubaです。勢いにまかせて流行りのストリーミングプロトコルのSRTを利用するためのライブラリであるlibsrtをWindows向けにビルドする方法を書いていきます!!!!!!!!!!!!!!!
SRTとは?という方はここを参照してください。

対象者

  • SRTを独自のアプリケーションに組み込みたい方

はじめに

SRTを試す場合libsrtを導入する必要があります。Gstreamer、ffmpegなど一部アプリケーションではその必要はありませんが自分のプログラムにSRTを含みたい場合は、当然のことながらlibsrtが必須です。
linux系などで利用する場合は簡単にビルドできるのですがWindowsでは手順がややこしくなります。また、SRTのGithubが公開してるビルド手順だとWindowsビルドは失敗する可能性があります。(私は成功しませんでした。)

前提ライブラリの準備

srtのビルドには前提として
pthreads(vcpkgで明示的に64bit版を指定します)
OpenSSL
の2点が必要です。
vcpkg install libsrtで全部込みがインストールできますがsrtのバージョンが古かったり、依存関係が解決できてなかったりするので個別に2つのパッケージをインストールします。
どちらもWindowsの公式パッケージマネージャであるvcpkgを使ってインストールします。
vcpkgのバージョンは2020.02.04-nohashを利用しています。

pthreadsについて

pthreadsにはvcpkgで入れたもの以外にもう一つライブラリが必要です。
SRTのGithubのReadMeにやり方が掲載されています。
1. 以下のリンクからpthread-win32をダウンロードします。
https://github.com/GerHobbelt/pthread-win32
ダウンロードしたフォルダの中のpthread_lib.2013.vcxprojを選択しVisualStudioを起動します。(2013verである必要はないようです。私は2017で実行しました。)

2. 構成がReleasex64になっていることを確認します。
3. プロジェクトをビルドします。(pthread_libがビルドされることを確認してください)
4. ビルド後、pthread_lib.libbin/x64_****_.Releaseに生成されているはずです。これをpthreadsのlibファイルにコピーします。
pthreadsのライブラリのパスは[path to vcpkg]/installed/x64-windows/以下にあります。

OpenSSLについて

こちらはvcpkgで通常通りインストールすれば大丈夫です。

CMakeLists.txtにpthreadsへのパスを通す

githubからクローンしたsrtのフォルダを開くとCMakeLists.txtがあるのでこれをテキストエディタ(文字検索機能があるものが好ましい)で開きます。
開いたらPTHREADで部分検索します。ヒットしたら一番最初にPTHREADの文字が出てくる直前で下記のコードを追記します。
pthreadのinclude,libディレクトリは先ほど同様[path to vcpkg]/installed/x64-windows/です。PTHREAD_LIBRARYは必ずディレクトリではなくファイル単体を指定してください。


set(PTHREAD_INCLUDE_DIR   pthreadsのincludeディレクトリのpath)
set(PTHREAD_LIBRARY   pthreadsのlibディレクトリ内の.libファイルのpathを全て空白区切りで入力)

ちなみに私の場合はこんな感じです。


set(PTHREAD_INCLUDE_DIR C:/vcpkg/packages/pthreads_x86-windows/include)
set(PTHREAD_LIBRARY C:/vcpkg/packages/pthreads_x86-windows/lib/pthreadVC3.lib C:/vcpkg/packages/pthreads_x86-windows/lib/pthreadVCE3.lib C:/vcpkg/packages/pthreads_x86-windows/lib/pthreadVSE3.lib C:/vcpkg/packages/pthreads_x86-windows/lib/pthread_lib.lib)

いざビルド!

srtのディレクトリ下で行いますが、そのまま実行すると既存のファイルとビルドファイルが混在してしまうのでbuildなどの分かりやすい名前でディレクトリを作成し、buildがカレントディレクトリの状態で以下のコマンドを実行してください。
僕の場合のディレクトリ構成を載せておきます。

srt-1.3.4/
    ├ srt-1.3.4/
          ├ build/
          ├ CMakeLists.txt
          ├ その他

makeコマンドはこちらです。
[vcpkg root]のところにはvcpkgをインストールしたディレクトリを指定してください。

cmake ../ -G "Visual Studio 16 2019" -A x64
             -DCMAKE_TOOLCHAIN_FILE=[vcpkg root]\scripts\buildsystems\vcpkg.cmake

makeが出来たらbuildディレクトリ下にSRT.slnというプロジェクトファイルが生成されているので選択してVisualStudio2019を起動します。

起動したらビルドからソリューションのビルドを選択します。
qiita01_06.png

ビルドが完了したら今度はビルドから構成マネージャーを開きます。
qiita01_07.png

構成マネージャーからINSTALLプロジェクトをビルド対象にします。
コメント 2020-05-30 014803.png

もう一度ソリューションのビルドを実行します。
これでビルドは完了です!
デフォルトであればProgram Files(x86)下にSRTディレクトリが作成されます!
コメント 2020-05-30 015208.png

後はVisualStudioでSRTを利用したいプロジェクトを作成し、先ほど生成されたSRTディレクトリ内のincludeディレクトリなどのパスをVisualStudioに通してあげます。
ちなみにですが、今後外部ライブラリを使うにあたって、一々パス指定をするのは面倒なので、私はライブラリをひとまとめにして管理しています。
SRTのライブラリもinclude,lib,binディレクトリを全てuserLibraryというディレクトリに移動させています。

image.png

ただ、それでもincludelibdllは個別に指定してあげなくてはいけないのでそれが面倒な場合は、プロパティシートを使うと簡単に管理できます。
そこらへんの話はこちらを見てもらえたらと思います。

おわりに

Linuxとかだと数行で終わることがWindowsになっただけでこんだけ複雑になるとほんとにどうにかならないかなーという気持ちです。近々WSLに来るアプデでどうなるのか楽しみです。
もしも誤記や手順通りにやっても上手くいかなかった場合は気軽に聞いてください。わかる範囲で答えます。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0