Veltioblog

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 カメラの映像をブラウザで表示するサンプルを動かします。

前提

(自分の環境だと最初から入ってるものもあるので多分以下が必要)

ビルド手順

ビルド

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 にシグナリングのやり方が書いてあるので、その手順通りにやると映像をブラウザに配信することができます!

以上!楽しい!