0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

moq-rs を試してみる

Last updated at Posted at 2025-12-12

はじめに

  • この記事ではMoQのRust実装であるmoq-rsを試しで動かしてみます。
  • MoQの詳しい説明はしていません。
  • MoQでBig Back Bunny(ウサギの動画)をライブ配信して視聴を試みます。

前提(環境構築)

Publisher、Relay、Subscriberの用意

  • Publisher、Relay、Subscriber の3つのノードを建てます。
  • すべてUbuntu24で建てました。
    • 映像視聴のためにSubscriberだけUbuntuDesktopです。
  • デフォルトゲートウェイはいい感じに設定してください。

moq-rs-topo.png

筆者はProxmox上で構築しました。それぞれのネットワークはSDNでSimpleZone作りました。(正しい使い方なのか?)

moq-rs-proxmox.png

スペック低いと結構辛いので(特にPublisherとSubscriber)、最低でもメモリ4GB以上CPU4コア以上あってもいいかもしれない。(もっとあってもいい)

パッケージのインストールとかクローンとか

以下のコマンドで環境構築します。Publisher、Relay、Subscriberそれぞれでやります。

# 必要パッケージのインストール
sudo apt update
sudo apt install -y build-essential pkg-config libssl-dev ffmpeg clang curl cmake git unar -y

# Rustのインストール
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

# リポジトリのクローンとビルド
git clone https://github.com/cloudflare/moq-rs.git
cd moq-rs
cargo build --release

2025年12月11日現在のmainブランチでやってますが、更新されたりしたらやり方変わるかもしれません。

Relayに自己署名と秘密鍵を作る

OpenSSLで作ります。(なかったら動かなかった)

openssl req -new -newkey rsa:2048 -x509 -nodes -keyout key.pem -out cert.pem -days 365 -subj "/CN=localhost"

Relay起動

--dev をつけるとフィンガープリント提供用のWebサーバーなどを有効にしてくれるらしいです。

./target/release/moq-relay-ietf --tls-cert cert.pem --tls-key key.pem --bind [::]:4443 --dev

コンソール特に出ないけどいいのか?

Publisher起動して配信

ウサギの動画をダウンロード

wget https://download.blender.org/demo/movies/BBB/bbb_sunflower_1080p_60fps_normal.mp4.zip
unar bbb_sunflower_1080p_60fps_normal.mp4.zip

ウサギの動画をffmpegでmp4を断片化させてループでライブ配信をパイプでmoq-rsに流す。試すだけなのでRelayを静的に設定しています。

ffmpeg -hide_banner \
    -v quiet \
    -stream_loop -1 \
    -re \
    -i bbb_sunflower_1080p_60fps_normal.mp4 \
    -an -f mp4 \
    -movflags empty_moov+frag_every_frame+separate_moof+omit_tfhd_offset \
    - \
| ./target/release/moq-pub \
  --name bbb \
  --tls-disable-verify \
  https://10.0.1.11:4443/moq

これでウサギの動画を永遠にライブ放送します。

timestamp: 64000 segment: 1:0 priority: 127 ←こんな感じのが永遠に出てきます。1:01はGOP番号らしい?60fpsだから1秒に付き1増えるはず(たぶん)。ループ再生なので永遠に増えます。

Subscriberで映像視聴

IPはリレーを指定して映像を取得します。パイプでffplayに取得した映像を流せば視聴できます。SubscriberはUbuntuDesktopなので、コマンドを時刻するとGUIが開いてウサギの動画が見れます。

./target/release/moq-sub --name bbb --tls-disable-verify https://10.0.2.11:4443/moq | ffplay -i -

こんな感じで見れるハズ

moq-rs-usagi.png

おわりに

ノードが3つしかない簡単な構成ですが、moq-rsを試してみました。Subscriberが2個あってもいいかも。そうすればRelayがいい感じに働いてPublisher↔Relayの冗長性が解消されるのがわかるかも

疑問

IPが動的ならどうなるのか?URLがドメインだったら?とかが疑問です。CDNを応用すればリレーの発見とかできそうな気がするんですがそんな感じなんですかね?

copyright 2008, Blender Foundation / www.bigbuckbunny.org

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?