🐷

OpenMediaTransport(OMT)について

に公開

こんにちはふろーです。

前日、SiennaよりOMT/OpenMediaTransportという新規プロトコルの発表がありました。

https://x.com/NDI_Cloud/status/1956655418144346253

OpenMediaTransport

LAN中での映像のやり取りを行うプロトコルで、内部にVMXコーデックを使用しています。
Viz(旧NewTek)が開発するNDIを明確にライバルとして捉えており、以下の特徴があります。

NDIと同じ機能

  • クロスプラットフォーム対応
    • Windows, Mac, Linuxで動作出来そう
    • 組み込み対応が気になるところ
  • アルファチャンネル対応
  • mDNSを利用した自動的な映像ソースの探索・識別・接続

NDIにはない機能

  • オープンソース (GitHub)
  • 処理速度の最適化
    • SSE2, Arm, AVX2によるプラットフォームごとの最適化が実施されています
    • 厳密にはOMTではなくVMXコーデック側の最適化
    • NDIはどうなんだろう...?
  • 帯域幅・品質の制御
    • QualityをHigh, Midium, Lowから選択可能です。帯域はGitHubを参照
    • 2160p60, High Qualityでも600Mbps程度。1Gbpsのネットワークでも利用可能
    • 1080p60の場合、86~260Mbps程度で利用が可能です
  • VMXコーデックによる効率的な圧縮
    • vMix Instant Replay で使われているコーデックのようです
    • こちらも同じくGitHub上で公開されています

開発はGitHub上で行われており、.NETでlibomtnetというライブラリが公開されています。

https://github.com/openmediatransport/libomtnet

C/C++など向けバインディングも公開されています。

https://github.com/openmediatransport/libomt

既にOBS-Studio向けプラグインが公開されており、vMix v29(2025/09/25時点でBeta) でも対応されるようです。

わかっていないこと

  • 組み込み機器向けの対応状況が気になります。
    • 厳密には組み込みではないですが、Raspberry Pi 5向けのエンコーダーが公開されていました
  • マルチキャスト対応状況について
    • NDIではマルチキャストを使用し、1本分の帯域で映像を各所に配布することが可能です
  • 受信側でのクオリティ制御
    • NDIではLow Bandwidth Modeが存在し、プレビュー品質での受信が可能でした
    • Tricasterなどの機材では映像がプレビュー/マルチビューの状況では自動的にクオリティを下げて帯域を節約することが可能でした
      • 余談ですが、これはvMixに逆輸入してほしい機能です
  • タリーなどのメタデータ対応状況
    • XMLでの記述が可能なようです。具体的な中身は実装に依存する模様?
    • ドキュメント

別言語のラッパーについて

.NETではライブラリ自体が公開されているため直接利用できる他、C向けのバインディング(ヘッダーファイル)も公開されているため別言語でのラッパー作成も可能そうです。
またらプロトコルもソースコードが公開されているため、ラッパーではなく一から独自に実装することも可能そうです。

試しに、bindgenを使ったRustでの簡単なラッパーを書いてみました。

https://github.com/FlowingSPDG/libomt-rs

Discovery(OMTソースの探索・発見)が機能するのは確認しましたが、映像の送受信にはVMXコーデックの対応が必要そうです。先は長い。気が向いたら作り込もうと思います。

コーデックについて

オーディオは32チャンネル対応です。映像は以下のフォーマットに対応しているようです

  • UYVY = 8bit 4:2:2
  • UYVA = 8bit 4:2:2:4 (アルファチャンネル付)
  • BGRA = 8bit 4:4:4
  • P216 = 16bit Planar 4:2:2
  • PA16 = 16bit Planar 4:2:2:4 (P216に16ビットのアルファチャンネル対応)

映像はVMXコーデックを利用しているようです。
VMXコーデックは元々vMixのInstant Replay機能の為に作られたコーデックのようです。
高品質で負荷も低く、非常に出来が良かった為リバースエンジニアリングが実施されffmpegなど各種外部ソフトウェアでも利用が可能になっています。
OMT Organization以下でもライブラリが公開されています。

https://github.com/openmediatransport/libvmx

開発体制について

GitHub OrganizationにPublicな状態のメンバーはいませんでした。
ですが、複数のレポジトリのcommitログを確認すると、vMixの開発であるMartin氏が積極的libvmx/libomt/libomtnetなどのライブラリに貢献しているのが確認できます。
実質的にvMix公式が開発するプロトコルと捉えて問題なさそうです。

現在対応しているソフトウェア・ハードウェア共に少ないですが、PC/ネットワークへの負担が少ないことやライブラリが公開されていることから、将来性は非常に高く期待できそうです。
vMix v29が公開され次第、プロダクションへの導入・実地試験をしてみようと思います。

Discussion