Video Stream Out TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Video Stream Out TOP のネットワーク配信機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – 映像をネット配信する

Video Stream Out TOPは、入力したテクスチャをエンコードし、ネットワーク映像ストリームとして送出する TOPです。RTSP サーバー・RTMP 送出・SRT 伝送・WebRTC ピアを出力先として、映像と音声をリアルタイムに配信します。

主な用途 🎯

  • RTSP サーバーとしての映像ストリーム配信
  • YouTube・Twitch への RTMP ライブ配信
  • SRT プロトコルでの低遅延な遠隔伝送
  • WebRTC ピアへのブラウザ向け映像送出
  • 音声付き映像のリアルタイムエンコード配信

データフロー 🔄

入力: テクスチャ (TOP 画像)

エンコード・パケット化処理 (コーデック / プロトコル設定)

出力: ネットワーク映像ストリーム (RTSP / RTMP / SRT / WebRTC)

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

Video Stream Out Page 📡

サーバー制御 .server 🔘

Active .active 🔘
Active (有効化) — サーバーを稼働させるかどうかを切り替えます。
– オフのあいだは、このサーバーが使うポートを占有しません。

配信モード .mode 🎛️

Mode (配信モード) — 配信プロトコルを選択するメニューパラメータ。

項目 内部名 説明
RTSP Server .rtspserver RTSP / RTP プロトコルのサーバーとして動作
RTMP Sender .rtmpsender RTMP プロトコルで YouTube / Twitch 等の配信先へ送出
SRT .srt SRT プロトコルで送信先へ伝送
WebRTC .webrtc WebRTC ピアを使って送出

接続先設定 .destination 🔗

Network Port .port 🔌
Network Port (待ち受けポート) — サーバーが待ち受けるポート番号を指定します。
– 複数の Video Stream Out TOP が、Stream Name を一意にすれば同じポートを共有できます。

Stream Name .streamname 🏷️
Stream Name (ストリーム名) — このノードのストリーム名を指定します。
– URL の ipaddress:port のあとの / 以降に付く名前になります。

Multi-Cast .multicast 📶
Multi-Cast (マルチキャスト) — RTSP サーバーが映像をユニキャストとマルチキャストのどちらの UDP パケットで送るかを切り替えます。

Destination URL .url 🎯
Destination URL (送信先 URL) — SRT / RTMP ストリームの送信先 URL を指定します。
– RTMP の場合は {サービス URL}/{ストリームキー} の形式で、利用する配信サービスごとに正しい URL を確認します。

Force IDR .forceidr 🔑
Force IDR (キーフレーム強制) — デバッグ用に、すべてのクライアントへ送る新しい映像キーフレームを強制生成します。
– クライアントが正しい画像を受け取れないときの復旧手段です。

FPS .fps 🎞️
FPS (フレームレート) — 映像を送出するフレームレートを指定します。

映像コーデック .videocodec 🎬

Video Codec .videocodec 🎬
Video Codec (映像コーデック) — ストリームのエンコードに使うコーデックを選択します。
– すべてのコーデックがすべての配信プロトコルに対応するわけではありません。

H.264 プロファイル .profile 📊

Profile (H.264 プロファイル) — フレームのエンコードに使う H.264 プロファイルを選択します。デコーダによっては特定のプロファイルしか対応しません。

項目 内部名 説明
Baseline .baseline 互換性を重視した基本プロファイル
Main .main 標準的なプロファイル
High .high 高画質向けのプロファイル

エンコード品質 .quality

Quality (エンコード品質) — エンコードの品質レベルを選択します。遅延と画質のバランスを決めます。

項目 内部名 説明
Low-Latency, Low Quality .lowlatencylow 低遅延・低画質
Low-Latency, Medium Quality .lowlatencymedium 低遅延・中画質
Low-Latency, High Quality .lowlatencyhigh 低遅延・高画質
High-Latency, Low Quality .highlatencylow 高遅延・低画質
High-Latency, High Quality .highlatencyhigh 高遅延・高画質
High-Latency, Ultra High Quality .highlatencyultrahigh 高遅延・超高画質

キーフレーム設定 .keyframe 🔑

Keyframe Interval .keyframeinterval 🔑
Keyframe Interval (キーフレーム間隔) — エンコーダのキーフレーム間隔をフレーム単位で設定します。
– GOP 長と IDR 間隔の両方を設定し、各 IDR (キー) フレームのあいだに入るフレーム数を制御します。

Max B-Frames .maxbframes 🔁
Max B-Frames (最大 B フレーム数) — キーフレームの間に入る双方向フレームの最大数を指定します。
– 増やすと遅延は増えますが、必要な帯域は減ります。

Intra-Refresh Period .intrarefreshperiod ♻️
Intra-Refresh Period (イントラリフレッシュ周期) — 大きなキーフレーム 1 枚ではなく、複数フレームへ少しずつ適用する段階的キーフレームの周期をフレーム数で指定します。

Intra-Refresh Length .intrarefreshlength 📏
Intra-Refresh Length (イントラリフレッシュ長) — イントラリフレッシュを分散させるフレーム数を指定します。

ビットレート方式 .bitratemode 📈

Bitrate Mode (ビットレート方式) — 固定 (CBR) と可変 (VBR) のビットレート方式を選択します。多くの配信サービスは固定方式を推奨します。

項目 内部名 説明
Constant (CBR) .constant 固定ビットレート
Variable (VBR) .variable 可変ビットレート
Constant HQ (CBR) .constanthq 高品質の固定ビットレート
Variable HQ (VBR) .variablehq 高品質の可変ビットレート

ビットレート量 .bitrate 📉

Average Bitrate (Mb/s) .avgbitrate 📊
Average Bitrate (Mb/s) (平均ビットレート) — エンコードの目標ビットレートを Mb/s (メガビット毎秒) で指定します。

Max Bitrate (Mb/s) .maxbitrate 📈
Max Bitrate (Mb/s) (最大ビットレート) — エンコードの最大ビットレートを Mb/s で指定します。

Num H264 Slices per Frame .numslices 🍰
Num H264 Slices per Frame (フレームあたりのスライス数) — 各 H.264 フレームを分割するスライス数を指定します。
– 複数スライスを同時にデコードできるデコーダでは、1 より大きくすると効率よく動作します。

Mux Rate (Mb/s) .forcemuxrate 🧵
Mux Rate (Mb/s) (多重化レート) — 多重化レートを Mb/s で指定します。

VBV Buffer Size (Mb) .forcevbvbufsize 🧮
VBV Buffer Size (Mb) (VBV バッファ容量) — VBV バッファの容量を Mb で指定します。

RTMP Buffer Size (S) .forcertmpbufsize
RTMP Buffer Size (S) (RTMP バッファ秒数) — RTMP バッファの長さを秒で指定します。

音声入力 .audiochop 🎵

Audio CHOP .audiochop 🎵
Audio CHOP (音声ソース) — 映像と一緒に送るタイムスライス済みの音声ソースを指定します。
– プロトコルや音声コーデックによっては、Resample CHOP で 44100 または 48000Hz へ変換が必要になります。

音声コーデック .audiocodec 🔊

Audio Codec (音声コーデック) — 音声を圧縮するコーデックを選択します。

項目 内部名 説明
MP3 .mp3 非可逆の圧縮コーデック。2 チャンネルまで対応
AAC .aac 非可逆の音声圧縮コーデック。2 チャンネルまで対応
Opus .opus 非可逆の音声圧縮コーデック

音声ビットレート .audiobitrate 🎚️

Audio Bit Rate (音声ビットレート) — 音声のエンコードに使うビットレートを選択します。

項目 内部名 説明
96 kb/s .b96 96 kb/s
128 kb/s .b128 128 kb/s
192 kb/s .b192 192 kb/s
256 kb/s .b256 256 kb/s
320 kb/s .b320 320 kb/s

無音ストリーム .includesilentaudio 🔇

Include Silent Audio Stream (無音ストリーム付加) — 配信サービスによっては音声ストリームの同梱が必須なため、実際の音声がないときに無音の音声ストリームを付加します。

項目 内部名 説明
Automatic .automatic 自動で判定して付加
On .on 常に無音ストリームを付加
Off .off 無音ストリームを付加しない

フレーム別情報 .perframemetadata 🗂️

Per-Frame Metadata CHOP / DAT .perframemetadata 🗂️
Per-Frame Metadata CHOP / DAT (フレーム別メタデータ) — この OP からのメタデータを映像ストリームの各フレームと一緒に送ります。
– 受信側では Video Stream In TOP に対する Info CHOP / Info DAT でこのデータを受け取れます。


WebRTC Page 🛰️

WebRTC 送出 .webrtc 🛰️

WebRTC DAT .webrtc 📡
WebRTC DAT (WebRTC ピア指定) — 映像ストリームを送る WebRTC DAT (ピア) を設定します。
– 設定すると WebRTC Connection の候補メニューが自動で埋まります。

WebRTC Connection .webrtcconnection 🔗
WebRTC Connection (WebRTC 接続) — WebRTC のピア間接続を選択します。
– 選択すると WebRTC Track の候補メニューが自動で埋まります。

WebRTC Video Track .webrtcvideotrack 🎞️
WebRTC Video Track (映像出力トラック) — WebRTC のピア間接続に含まれる映像出力トラックを選択します。

WebRTC Audio Track .webrtcaudiotrack 🎧
WebRTC Audio Track (音声出力トラック) — WebRTC のピア間接続に含まれる音声出力トラックを任意で選択し、映像と一緒に送ります。


実践アイデア 💡

Example 1: Twitch へのライブ配信 📺

Render TOP → Video Stream Out TOP (RTMP Sender) → Twitch

TouchDesigner でレンダリングした映像を Video Stream Out TOP の RTMP Sender モードで Twitch などの配信サービスへ送出する基本フローです。リアルタイム生成のビジュアルをそのままライブ配信できます。

  1. Render TOP などの映像を Video Stream Out TOP に入力
  2. Mode を RTMP Sender に設定
  3. Destination URL に {サービス URL}/{ストリームキー} 形式で配信先を入力
  4. Active をオンにして配信を開始

Example 2: 音声付き映像の送出 🎵

Render TOP → Video Stream Out TOP (Audio CHOP) → 配信先

映像に音声を重ねて配信する構成です。Resample CHOP で音声をサンプルレート変換してから Video Stream Out TOP の Audio CHOP に渡し、コーデックとビットレートを選んで送出します。

  1. 音声ソースを Resample CHOP で 44100 または 48000Hz に変換
  2. 変換した音声を Video Stream Out TOP の Audio CHOP に指定
  3. Audio Codec と Audio Bit Rate を選択
  4. Active をオンにして音声付き映像を送出

Example 3: RTSP サーバーで社内配信 📡

Render TOP → Video Stream Out TOP (RTSP Server) → 受信クライアント

Video Stream Out TOP を RTSP サーバーとして動かし、同一ネットワーク内のクライアントへ映像を配信する構成です。ポートとストリーム名を決めれば複数ストリームを 1 ポートで共有できます。

  1. Mode を RTSP Server に設定
  2. Network Port と Stream Name を指定
  3. Active をオンにしてサーバーを起動
  4. 受信側で ipaddress:port/streamname の URL に接続

関連オペレータ 🔗

類似機能OP 🔍

組み合わせ推奨OP 🔄

  • Render TOP — 配信する映像を 3D シーンからレンダリング
  • Null TOP — 中継点として配信前の映像を渡す
  • Video Stream In TOP — 送出した映像を受信側で取り込む

前処理・後処理TOP 🎯


Info情報 📊

Video Stream Out TOP は TOP 共通の情報取得に対応しています。

TOP固有情報 🖼️

  • resx: TOP の出力解像度 X (ピクセル単位)
  • resy: TOP の出力解像度 Y (ピクセル単位)
  • aspectx: アスペクト比 X
  • aspecty: アスペクト比 Y
  • depth: 3D テクスチャ / テクスチャ配列の深度 (2D テクスチャでは 1)
  • gpu_memory_used: TOP が消費している GPU メモリ量 (MB 単位)

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • warnings: 警告数
  • errors: エラー数

解像度情報 📐

  • width / height: 配信している映像テクスチャの幅と高さ (ピクセル)
  • aspect: 映像のアスペクト比

配信状態 📶

  • 接続クライアント: サーバーへ接続しているクライアントの状態
  • ビットレート: 実際に送出している映像・音声のビットレート

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: 配信先に映像が届かない
✅ Solution:

  • Active がオンになっているか確認
  • Mode が配信先のプロトコルと一致しているか確認
  • RTMP の場合は Destination URL が {サービス URL}/{ストリームキー} 形式か確認

❌ Problem: 映像にノイズや乱れが出る
✅ Solution:

  • Force IDR で新しいキーフレームを強制送信して復旧を試す
  • Average Bitrate (Mb/s)Max Bitrate (Mb/s) を回線に合わせて調整
  • Quality を低遅延寄りの設定に変更して負荷を下げる

❌ Problem: 配信サービスで音声が認識されない
✅ Solution:

  • Audio CHOPResample CHOP で 44100 または 48000Hz に変換してから指定
  • Audio Codec がサービスの対応形式か確認
  • Include Silent Audio Stream を On にして無音ストリームを付加

参考資料 📚

その他 🔗

公式リソース 📖

関連オペレータ 🔗

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました