
概要 📖 – RTSP / WebRTC 音声ストリームの受信
Audio Stream In CHOPは、RTSP サーバまたは WebRTC ピアから音声ストリームを受信し、TouchDesigner 内のチャンネル信号として取り込む CHOPです。Server / WebRTC の 2 種類のソースに対応し、Video Stream In TOP に埋め込まれた音声トラックの抽出も可能です。
主な用途 🎯
- RTSP サーバから配信される音声ストリームの受信
- WebRTC ピアツーピア接続による低遅延音声受信
- Video Stream In TOP に埋め込まれた音声トラックの抽出
- ネットワーク経由でのライブ音声入力(リモート会場・配信元連携)
- Audio Sync Offset によるオーディオとビデオの同期補正
データフロー 🔄
入力: RTSP URL / WebRTC peer / Video Stream In TOP
↓
ストリームデコード
↓
Audio Sync Offset 補正
↓
Volume 調整
↓
出力: 音声チャンネル
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Audio Stream In Page 📡
Source Type .srctype 🎚️
音声ストリームの取得元を選択するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Server | .server |
RTSP サーバ URL からストリームを取得 |
| WebRTC | .webrtc |
WebRTC ピアツーピア接続からストリームを取得 |
Server URL .url 🌐
RTSP ストリームの URL アドレス:
- Server URL: ストリームの URL アドレス。例:
rtsp://localhost:554/tdaudio
Video Stream In TOP .videostreamintop 🎬
音声埋め込み済 Video Stream In TOP からのチャンネル抽出:
- Video Stream In TOP 参照: 音声トラック付きストリームを受信している Video Stream In TOP のパスを指定し、その音声チャンネルを抽出
Play .play ▶️
音声ストリーミングのオン / オフ:
- Play: オン (1) で音声ストリーミングを開始、オフ (0) で停止
Open Timeout .opentimeout ⏳
ストリーム接続のタイムアウト時間:
- Open Timeout (ms): TouchDesigner が音声ストリームを開こうと試みる際の待機時間 (ミリ秒)
Audio Sync Offset .syncoffset 🔄
| 項目 | 内部名 | 説明 |
|---|---|---|
| Audio Sync Offset | .syncoffset |
音声再生のオフセット時間。映像と音声のずれを補正するために使用。Audio Device Out CHOP のバッファ等によるシステム側の音声遅延を相殺する。負の値で音声が先行再生される。 |
Audio Sync Offset Unit .syncoffsetunit 📐
Audio Sync Offset パラメータで使用する単位
| 項目 | 内部名 | 説明 |
|---|---|---|
| I (Samples) | .samples |
サンプル数で指定 |
| F (Frames) | .frames |
フレーム数で指定 |
| S (Seconds) | .seconds |
秒数で指定 |
Volume .volume 🔊
出力音量:
- Volume:
0でミュート、1でフルボリューム
WebRTC Page 🌐
WebRTC DAT .webrtc 🔗
音声ストリーム取得元の WebRTC DAT (ピア):
- WebRTC DAT 参照: 音声を取得するピアの WebRTC DAT のパス
WebRTC Connection .webrtcconnection 🤝
WebRTC ピアツーピア接続の選択:
- WebRTC Connection 選択: WebRTC peer-to-peer 接続の選択メニュー
WebRTC Track .webrtctrack 🎤
WebRTC 接続内の音声入力トラックの選択:
- WebRTC Track 選択: 接続内の音声入力トラックを選択
Common Page 🔧
Time Slice .timeslice ⏱️
Time Slice モードの強制設定:
- オン: チャンネルを「タイムスライス」モードに強制
- タイムスライス: 前回のクックフレームから現在のクックフレームまでの時間
Scope .scope 🎯
影響を受けるチャンネルの絞り込み:
- Scope 文字列: 影響を受けるチャンネルを指定する文字列
- パターンマッチング:
*や[1-10]等のパターンが使用可能
Sample Rate Match .srselect ⚡
複数の入力 CHOP のサンプルレートが異なる場合の処理方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Resample At First Input’s Rate | .first |
最初の入力のレートで他をリサンプル |
| Resample At Maximum Rate | .max |
最高サンプルレートでリサンプル |
| Resample At Minimum Rate | .min |
最低サンプルレートでリサンプル |
| Error If Rates Differ | .err |
レート不一致でエラー |
Export Method .exportmethod 📤
CHOP チャンネルをパラメータに接続する方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| DAT Table by Index | .datindex |
DAT テーブルのインデックスでチャンネルとパラメータを対応付け |
| DAT Table by Name | .datname |
DAT テーブルの行名でチャンネルとパラメータを対応付け |
| Channel Name is Path:Parameter | .autoname |
チャンネル名を `path:parameter` 形式で記述し直接対応付け |
Export Root .autoexportroot 🌳
Channel Name is Path:Parameter モード時のパス基点:
- Export Root パス:
autonameモードでチャンネル名のパス部分を相対化する基点 OP のパス
Export Table .exporttable 📋
DAT Table エクスポート方式での参照 DAT:
- Export Table DAT:
datindex/datnameモード時に参照する DAT のパス
Rename from .commonrenamefrom 🔤
リネーム対象チャンネルのパターン:
- Rename from パターン: リネーム対象とするチャンネル名のパターンマッチング文字列
Rename to .commonrenameto 🔁
リネーム後の置換パターン:
- Rename to パターン: Rename from にマッチしたチャンネルの新しい名前パターン (デフォルトはリネームなし)
実践アイデア 💡
Example 1: RTSP サーバからのライブ音声受信 📡
RTSP Server → Audio Stream In CHOP (Server URL) → Audio Device Out CHOP
- Source Type を「Server」に設定
- Server URL に
rtsp://localhost:554/tdaudioを入力 - Play をオンにしてストリーミング開始
- 出力を Audio Device Out CHOP に接続してスピーカーから再生
Example 2: WebRTC ピア接続による低遅延音声受信 🤝
WebRTC DAT → Audio Stream In CHOP (WebRTC) → Audio Spectrum CHOP → Visual
- WebRTC DAT でピアツーピア接続を確立
- Audio Stream In CHOP の Source Type を「WebRTC」に切り替え
- WebRTC DAT / Connection / Track をメニューから選択
- 受信音声を Audio Spectrum CHOP に渡してビジュアライズ
Example 3: Video Stream In TOP からの音声トラック抽出 🎬
Video Stream In TOP → Audio Stream In CHOP (Video Stream In TOP 参照) → Audio Device Out CHOP
- Video Stream In TOP で映像ストリーム (音声埋め込み) を受信
- Audio Stream In CHOP の Video Stream In TOP パラメータに対象 TOP を指定
- 音声チャンネルが自動的に抽出されて出力
- Audio Sync Offset で映像と音声のずれを微調整
関連オペレータ 🔗
類似機能OP 🔍
- Audio Device In CHOP — ローカル音声デバイスからの入力に特化、ネットワーク経由ではない
- Audio File In CHOP — ファイルからの音声読み込み、ネットワークストリームには非対応
組み合わせ推奨OP 🔄
- Audio Device Out CHOP — 受信した音声をスピーカー / オーディオインターフェースに出力
- Audio Spectrum CHOP — 受信音声を周波数領域に変換してビジュアライズ
- Analyze CHOP — 音声レベル (RMS Power / Peak) を抽出して制御信号化
- Video Stream In TOP — 映像ストリームと音声を 1 セットで受信、Audio Stream In が音声を抽出
- WebRTC DAT — WebRTC ピアツーピア接続を確立し Audio Stream In に渡す
前処理・後処理CHOP 🎯
- 前処理: Audio Device In CHOP、Audio File In CHOP、Constant CHOP
- 後処理: Audio Device Out CHOP、Audio Spectrum CHOP、Analyze CHOP、Filter CHOP
Info CHOP情報 📊
Audio Stream In CHOPは Info CHOP による詳細情報取得に対応しています。
CHOP固有情報 🎚️
start: CHOPインターバルの開始(サンプル単位)length: CHOPのサンプル数sample_rate: フレーム毎秒のサンプルレートnum_channels: CHOPのチャンネル数time_slice: タイムスライス有効時は1、無効時は0export_sernum: Export接続の更新回数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間(ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: ストリーム接続に失敗する / 音声が出ない
✅ Solution:
- Server URL のプロトコル (rtsp://) とポート番号が正しいか確認
- Open Timeout を十分長く設定 (ネットワーク遅延が大きい場合)
- Play がオン (1) になっているか、サーバ側の配信が稼働しているか確認
❌ Problem: 映像と音声がずれる
✅ Solution:
- Audio Sync Offset で音声を負の値方向にシフトしてシステム遅延を相殺
- Audio Sync Offset Unit を Seconds に設定して秒単位で微調整
- 後段の Audio Device Out CHOP のキューサイズも遅延要因になるため確認
❌ Problem: WebRTC Connection / Track メニューが空のまま
✅ Solution:
- WebRTC DAT パラメータが正しく設定され、ピア接続が確立しているか確認
- WebRTC DAT 側で音声トラックが対象接続に含まれているか確認
- ピアツーピア接続の signaling が完了するまで待ってから Track を選択
❌ Problem: Video Stream In TOP から音声が抽出されない
✅ Solution:
- 対象ストリームに音声トラックが埋め込まれているか確認 (映像のみのストリームは抽出不可)
- Video Stream In TOP の参照パスが正しいか確認
- Source Type が「Server」のままで Video Stream In TOP 経由になっていない場合があるため、参照パラメータを再設定
参考資料 📚
その他 🔗
- TouchDesigner Wiki — CHOP 概要
- TouchDesigner Wiki — Category:CHOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

