libdatachannel を Windows でビルドする
libdatachannel を Windows 環境でビルドする方法を記録するブログです。
libdatachannel とは
libdatachannel は、WebRTC データチャネル、WebRTC メディアトランスポート、WebSocket を C++ でスタンドアロン実装したもので、GNU/Linux、Android、FreeBSD、Apple macOS、iOS、Microsoft Windows など、複数のプラットフォームに対応した C バインディングを備えています。WebRTC は、2 つのデバイス間でリアルタイムのピアツーピアデータとメディア交換を可能にする W3C および IETF 標準です。
https://github.com/paullouisageneau/libdatachannel より引用
examples/media-sender を動かす
libdatachannel を使って Web カメラの映像をブラウザで表示するサンプルを動かします。
前提
(自分の環境だと最初から入ってるものもあるので多分以下が必要)
- VisualStudio (C++ 関連
- OpenSSL
ビルド手順
ビルド
cmake -B build -DUSE_GNUTLS=0 -DUSE_NICE=0 -DCMAKE_BUILD_TYPE=Release
cd build
cmake --build . --config Release
自分は↑の手順でできましたが、ドキュメントには別の方法が書いてありました: https://github.com/paullouisageneau/libdatachannel/blob/master/BUILDING.md#microsoft-windows-with-microsoft-visual-c
ビルドが成功すると、media-sender であれば root ディレクトリから見て、build\examples\media-sender\Release\media-sender.exe
に exe ができます。
実行
事前に GStreamer をインストールしておいてください: https://gstreamer.freedesktop.org/download/#windows
examples\media-sender\main.html
をブラウザで開きます。
example アプリを起動する
.\build\examples\media-sender\Release\media-sender.exe
PowerShell で GStreamer でカメラデバイスから映像を取得し、H.264 でエンコードして UDP 経由でストリーミングするコマンドを実行します (media-sender が 127.0.0.1:6000 で待ち構えてるのでそこにパケットを流し込む)
gst-launch-1.0.exe ksvideosrc device-index=0 ! video/x-raw,width=640,height=480 ! videoconvert ! queue ! x264enc tune=zerolatency bitrate=1000 key-int-max=30 ! "video/x-h264, profile=constrained-baseline" ! rtph264pay pt=96 mtu=1200 ! udpsink host=127.0.0.1 port=6000
examples\media-sender\README.md
にシグナリングのやり方が書いてあるので、その手順通りにやると映像をブラウザに配信することができます!
以上!楽しい!