CamRelay の全機能を Frigate NVR で使う方法
余ったAndroidスマートフォンを Frigate NVR のカメラにしましょう。CamRelay が音声付きの RTSP を配信し、Frigate に内蔵された go2rtc がそれを受け取って、録画、音声付きライブビュー、 双方向通話に使います。完全な config.yml 付きで手順を順に説明します。
On this page
CamRelay の全機能を Frigate NVR で使う方法
CamRelay を使えば、Android スマートフォンを 1 つの RTSP URL だけ で Frigate に追加できます。Frigate に内蔵されている go2rtc がそのストリームを受け取り、録画、ライブビュー、双方向通話のチャネルに振り分けます。
CamRelay は Banana Studio が提供するアプリで、スマートフォンをローカルネットワーク上の IP カメラにします。H.264 または H.265 の映像を、Opus、G.711、AAC の音声とともに配信します。Web インターフェースを備え、ONVIF に対応し、RTSP バックチャネルで視聴側からの音声も受け取れます。
データの流れ: CamRelay を実行するスマートフォン → go2rtc(Frigate 内)→ 録画、音声付きライブビュー、双方向通話。
以下の設定は Frigate 0.16 に基づいています。今後のバージョンでは一部のキーが変わる可能性があるため、Frigate 公式ドキュメント もご確認ください。
Frigate で使える CamRelay の機能
最初の 4 つの機能は go2rtc を通じて Frigate に届きます。残りはアプリ側で設定し、ストリームを 24 時間 365 日安定して動かすためのものです。
| CamRelay の機能 | Frigate での用途 | 設定場所 |
|---|---|---|
| H.264/H.265 の RTSP ストリーム、スマートフォンのカメラに応じた解像度と FPS | 録画、検出、ライブビュー | go2rtc、手順 2.1 |
| G.711(PCMU/PCMA)、Opus、AAC の音声 | ライブビューと録画の音声 | アプリでコーデックを選択、手順 2.2 |
| 双方向通話(RTSP バックチャネル) | ライブビューのマイクボタン | WebRTC + HTTPS、手順 2.3 |
| 日時、カメラ名、IP、バッテリーと温度、GPS 座標と速度のオーバーレイ | Frigate が録画する映像に焼き込み | アプリ、手順 1 |
| 起動時の自動開始、画面の減光、高温時やバッテリー低下時の一時停止 | ストリームが途切れるのを防止 | アプリ、手順 1 |
| スマートフォン上での MP4 録画、ブラウザでのファイル管理 | Frigate 以外のバックアップ録画 | アプリ、手順 1 |
| Web インターフェース | ストリームを止めずに映像と音声を確認、設定を変更 | 手順 1 |
始める前に
必要なもの:
- インストール済みで稼働中の Frigate サーバー(Frigate のインストールガイド を参照)。スマートフォンと同じローカルネットワーク上にあること。
- CamRelay をインストールした Android スマートフォン。常に充電器につなぎ、ルーターで固定 IP アドレスを割り当てておきます。
- Android 17 の場合:CamRelay に ローカルネットワークへのアクセス を許可してください(Android では 付近のデバイス として表示されます)。許可がないと、Frigate はスマートフォンに接続できません。詳しくは CamRelay 1.0.5 の記事 をご覧ください。
CamRelay のすべての機能を使うには、Frigate のコンテナで次のポートを公開する必要があります。
| ポート | 用途 |
|---|---|
| 8971 | Frigate の HTTPS Web インターフェース。双方向通話に必須 |
| 8554 | go2rtc の RTSP リストリーム |
| 8555 TCP と UDP | WebRTC:音声付きライブビューと双方向通話 |
手順 1:CamRelay を設定する
CamRelay はスマートフォンの言語に合わせて表示されます。以下の設定名は日本語表示のときのものです。注意:設定 を開くとストリームは停止します。CamRelay の配信中は、Web インターフェースから止めずに設定を変更できます。
1.1 RTSP ポート
サーバーポート の項目に RTSP配信ポート(初期値 1935)と Web UIポート(初期値 8888)が表示されます。初期値のままで問題ありません。

1.2 映像
- カメラ選択 で使用するカメラを選びます(通常は背面カメラのほうが画質が良くなります)。
- そのカメラ個別の設定を開き、解像度、フレームレート (FPS)、ビデオビットレート を選びます。選べる解像度とフレームレートはスマートフォンのカメラによって異なります。
- 全体ビデオ設定 → ビデオコーデック で H.264 を選ぶと、ブラウザでライブビューを再生できます。
- キーフレーム間隔 (GOP) は 1s(初期値)のままにしておくと、ライブビューがすばやく開きます。


監視用途なら 1080p・15 FPS で十分で、Frigate サーバーの負荷も軽くなります。H.265 は帯域を節約できますが、ブラウザで再生するには Frigate でトランスコードが必要です(手順 2.2 を参照)。
1.3 音声
オーディオ設定 で オーディオを有効化 をオンにします。ストリームの音声コーデックは 双方向通話 → 双方向通話音声コーデック で選びます。この 1 つの設定が、送出する音声と双方向通話の両方に適用されます。
- G.711 ULAW:Frigate におすすめ。MSE と WebRTC のどちらでもそのまま再生できます(手順 2.2 を参照)。
- OPUS:Android 10 以降の初期値。音声はよりクリアですが、WebRTC でしか再生できません。
- G.711 ALAW:聞き取る側のデバイスが A-law を必要とする場合のみ。
- AAC:再生専用。双方向通話にはトランスコードが必要です。
双方向通話音声モード は 音声通信 のままにしておきます。エコーキャンセルが働くため、双方向通話でハウリングが起きません。

1.4 オーバーレイ、録画、24 時間運用
- ビデオオーバーレイ:日時、カメラ名(カメラ名。空欄にすると端末名を使用)、IP アドレス、バッテリーと温度、GPS 座標、スピードメーターを表示できます。オーバーレイは映像そのものに描き込まれるため、Frigate の録画にも残ります。初期状態ではすべてオフです。
- 録画設定:スマートフォンにもバックアップを残すなら 録画を有効化 をオンにします。MP4 ファイルは
Movies/CamRelayに保存され、録画分割時間(分)ごとに分割されます。最大ストレージ容量 (MB) に達すると、古いファイルから削除されます。 - 安全 & 自動化:端末起動時に自動開始 をオンにすると、スマートフォンの再起動後に CamRelay が自動で配信を再開します。Android 10 以降では、他のアプリの上に重ねて表示する権限も必要です。温度保護 と バッテリー保護 は、スマートフォンが熱くなりすぎたときやバッテリーが少なくなったときに配信を一時停止し、正常に戻ると再開します。
- バッテリーの最適化:CamRelay のバッテリー最適化がオフになっていることを確認してください。オンのままだと、Android がバックグラウンドで CamRelay を停止することがあります。



1.5 配信を開始して URL を取得する
メイン画面に戻り、再生ボタンをタップします。上部のバーには、使用中の解像度、FPS、ビットレート、コーデックが表示されます。下の隅には 3 つのアドレスがコピーボタン付きで表示されます。
rtsp://<phone-ip>:1935/:Frigate 用の RTSP URL。http://<phone-ip>:8888:CamRelay の Web インターフェース。http://<phone-ip>:8889/onvif/device_service:ONVIF サービス。

カメラを固定して使う場合は、月 のアイコン(画面を減光)をタップして画面を真っ暗にしましょう。電力を節約でき、OLED 画面の焼き付きも防げます。ダブルタップで元に戻ります。
以下の例では rtsp://192.168.1.50:1935/ を使っています。CamRelay に表示される URL に置き換えてください。現在のバージョンの CamRelay は RTSP でまだログインを求めないため、信頼できるネットワーク内でのみ使用してください。
近日公開: 次回の CamRelay アップデートでは、ユーザー名とパスワードを設定して RTSP ストリームを保護できるようになります。その場合は go2rtc の URL に追加するだけです。例:
rtsp://user:[email protected]:1935/。
Frigate サーバーから ffprobe でストリームを確認できます。
ffprobe -rtsp_transport tcp rtsp://192.168.1.50:1935/
出力に h264 の映像ストリームと音声ストリーム(G.711 ULAW なら pcm_mulaw、OPUS なら opus)が表示されれば正常です。
手順 2:Frigate で go2rtc を設定する
スマートフォンに接続するのは、Frigate 内の go2rtc だけです。go2rtc が CamRelay の RTSP ストリームを一度だけ取得し、録画、検出、ライブビュー(MSE、WebRTC)、双方向通話に分配します。Frigate 自体は rtsp://127.0.0.1:8554/camrelay から読み込むため、スマートフォンが複数の接続を同時に処理する必要はありません。その分、発熱が抑えられ、バッテリーも長持ちします。
2.1 ストリームを追加する
~/frigate/config/config.yml に go2rtc ブロックを追加します。
go2rtc:
streams:
camrelay: # Frigate のカメラと同じ名前
- rtsp://192.168.1.50:1935/ # CamRelay に表示される URL
webrtc:
candidates:
- 192.168.1.100:8555 # Frigate サーバーの IP
- stun:8555
- RTSP の行は 1 行で十分です。G.711 または Opus の音声なら、go2rtc は映像と音声をそのままブラウザに渡すため、
ffmpeg:によるトランスコードは不要です。この RTSP の行が双方向通話のチャネルも兼ねています。 - 通常の Docker で動かす場合、
webrtc.candidatesは必須です。これがないと、ローカルネットワーク上で WebRTC とマイクが動作しません。ポート 8555 TCP/UDP は「始める前に」で公開済みです。 - ストリーム名がカメラ名と同じなら、Frigate は自動的にそのストリームをライブビューに使います。名前が異なる場合は、カメラに
live.streamsを設定してください。
2.2 コーデックと音声
CamRelay の映像は H.264 に設定します。音声は G.711 がいちばん簡単です。Frigate のドキュメントによると、MSE(標準のライブビュー)は AAC または PCMA/PCMU を、WebRTC(双方向通話で使用)は Opus または PCMA/PCMU を再生できます。両方でそのまま使えるのは G.711 だけです。
| CamRelay の音声 | MSE | WebRTC | go2rtc に追加する行 |
|---|---|---|---|
| G.711 ULAW / ALAW (PCMU/PCMA) | 対応 | 対応 | なし |
| OPUS | 非対応 | 対応 | MSE で聞くには ffmpeg:camrelay#audio=aac |
| AAC | 対応 | 非対応 | WebRTC 用に ffmpeg:camrelay#audio=opus |
主に WebRTC で視聴するなら、Opus のほうが G.711(8 kHz の電話品質)より音声がクリアです。どうしても H.265 を使う場合は、映像のトランスコード行を追加し、RTSP の行はそのまま残します。
go2rtc:
streams:
camrelay:
- rtsp://192.168.1.50:1935/
- "ffmpeg:camrelay#video=h264#hardware" # ブラウザ用の H.264 コピー
2.3 双方向通話
CamRelay は配信中、常に RTSP バックチャネルで音声を受け取れる状態にあり、オンにするスイッチはありません。go2rtc は 2.1 の RTSP の行からこのチャネルを開くため、追加の設定は不要です。
話すときは、ポート 8971 の HTTPS で Frigate を開き、カメラのライブビューでマイクを押します。Frigate は自動的に WebRTC に切り替わります。声はスマートフォンのスピーカーから、CamRelay の 再生音量 で設定した音量で流れます。
ほかのアプリからもスマートフォンと直接通話する必要がある場合は、RTSP URL の末尾に #backchannel=0 を付けて、go2rtc がチャネルを占有しないようにします。
2.4 Frigate にカメラを追加する
go2rtc ブロックの下に cameras ブロックを追加します。カメラはスマートフォンに直接接続せず、go2rtc からストリームを読み込みます。
cameras:
camrelay:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/camrelay # 2.1 の go2rtc ストリーム
input_args: preset-rtsp-restream
roles:
- record
- detect # Frigate で必須、ほかに設定は不要
record:
enabled: true
CamRelay が送るのは 1 つのストリームだけ(サブストリームなし)なので、カメラは録画と検出の両方にそれを使います。
再起動して確認します。
docker compose restart frigate
docker logs -f frigate
go2rtc 単体で確認するには、docker-compose に一時的にポート 1984:1984 を追加し、http://<server-ip>:1984 を開きます。camrelay ストリームに、H264 映像と PCMU/PCMA または OPUS 音声の RTSP ソースがあれば OK です。Frigate のホーム画面に CamRelay が表示されれば完了です。
手順 3:完全な config.yml
以下のファイルには、CamRelay に必要なものだけが含まれています。go2rtc ストリーム、WebRTC、ログイン(双方向通話に必要な HTTPS のため)、音声付き録画です。
go2rtc:
streams:
camrelay:
- rtsp://192.168.1.50:1935/ # CamRelay に表示される URL、H.264 + G.711 ULAW
webrtc:
candidates:
- 192.168.1.100:8555 # Frigate サーバーの IP
- stun:8555
auth:
enabled: true
cameras:
camrelay:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/camrelay
input_args: preset-rtsp-restream
roles: [record, detect] # detect:Frigate で必須
record:
enabled: true
live:
streams:
CamRelay: camrelay
version: 0.16-0
トラブルシューティング
CamRelay を Frigate に追加するときの問題の多くは、ストリームの URL、コーデック、ネットワークのいずれかが原因です。
| 症状 | よくある原因 | 対処法 |
|---|---|---|
| カメラに「No frames received」と表示される | URL やポートの誤り、CamRelay が配信していない、Android がバックグラウンドで停止した | CamRelay のメイン画面から URL をコピーし直す。ffprobe で確認する。http://<ip>:1984(公開している場合)を開き、go2rtc がストリームを受信しているか確認する |
| 同じ Wi-Fi でも接続できない | Android 17 のスマートフォンでローカルネットワークへのアクセスが未許可、ルーターの「クライアント分離」、ゲストネットワーク、VPN | CamRelay に 付近のデバイス を許可する。クライアント/AP 分離をオフにする。サーバーとスマートフォンを同じメインネットワークに接続する |
| 映像がカクつく、乱れる | UDP パケットの損失 | go2rtc の URL に #transport=tcp を追加する |
| ブラウザでライブビューが再生されない | H.265 ストリーム、または WebRTC candidates の未設定 | CamRelay で H.264 を選ぶか、ffmpeg:...#video=h264 でトランスコードする。webrtc.candidates を設定する |
| ときどき接続が切れる | 不安定な Wi-Fi、Android のバッテリー最適化、スマートフォンの過熱 | 固定 IP を使う。スマートフォンを充電したままにする。CamRelay のバッテリー最適化をオフにする。端末起動時に自動開始 をオンにする。減光ボタンを使う。CamRelay 画面上部の温度を確認する。Frigate のログを Settings → System → Logs で確認する |
| ライブビューで音が出ない | オーディオを有効化 がオフ、または CamRelay が OPUS を送っているのに MSE で視聴している | CamRelay で音声をオンにする。MSE と WebRTC の両方で音を聞くには G.711 ULAW を選ぶ |
| マイクが使えない | Frigate を HTTPS ではなく HTTP で開いている、またはポート 8555 が未公開 | Frigate を https://<ip>:8971 で開く。ポート 8555 TCP/UDP を公開し、webrtc.candidates を設定する |
Frigate の GitHub Discussions で質問するときは、設定ファイル、起動時のログ、CamRelay ストリームの ffprobe の出力を添えてください。CamRelay に関するご質問は、アプリの このアプリについて 画面で フィードバック をタップしてお送りください。
Banana Studio のニュース、ガイド、アプリの詳細は xnano.net をご覧ください。
出典:go2rtc については Frigate Live View ドキュメント、CamRelay については CamRelay ユーザーガイド と Google Play のストアページ。
Related app
CamRelay - RTSPライブIPカメラ
Androidスマートフォンを高性能なRTSPネットワークカメラに変身させましょう。
Related posts
古い Android スマホを防犯カメラにする方法
古い Android スマホを防犯カメラとして再活用しましょう。設置場所を工夫し、電源を確保し、再起動後も CamRelay が自動で起動するようにすれば、同じ Wi-Fi 上のどのブラウザからでもカメラを見たり録画したりできます。
Android スマホをライブカメラにする方法
CamRelay を使えば、Android スマホが数分でライブカメラになります。権限を許可して再生ボタンをタップし、同じ Wi-Fi 上のウェブブラウザで映像を見るだけ。アカウントもクラウドも不要で、視聴する側のデバイスには何もインストールする必要がありません。