RTSP、WebRTC、HomeKit、FFmpeg、RTMP などをサポートする究極のカメラ ストリーミング アプリケーション。
すべての OS (Windows、macOS、Linux、ARM) 向けの依存関係なし、構成なしの小型アプリ
サポートされている多くのプロトコルで遅延ゼロ (ストリーミング遅延を可能な限り低く抑える)
RTSP、RTMP、DVRIP、HTTP (FLV/MJPEG/JPEG/TS)、USB カメラ、その他のソースからのストリーミング
FFmpeg でサポートされる任意のソースからのストリーミング
RTSP、WebRTC、MSE/MP4、HomeKit HLS、または MJPEG へのストリーミング
あらゆるソースを人気のストリーミング サービス (YouTube、Telegram など) に公開します。
HomeKit カメラからのストリーミングをサポートする世界初のプロジェクト
ブラウザーで WebRTC の H265 をサポート (Safari のみ、詳細を読む)
FFmpeg を介したサポートされていないコーデックのオンザフライ トランスコーディング
スピーカー付きの一部のカメラでオーディオ ファイルとライブ ストリームを再生する
マルチソース双方向コーデックネゴシエーション
さまざまなソースのトラックを単一のストリームにミキシングする
クライアントがサポートするコーデックを自動照合する
一部のカメラの双方向オーディオ
ngrok を介したプライベート ネットワークからのストリーミング
任意のスマート ホーム プラットフォームに統合することも、スタンドアロン アプリとして使用することもできます
に触発された:
@deepch による一連のストリーミング プロジェクト
webrtc go ライブラリと @pion チーム全体
@aler9 からの rtsp-simple-server のアイデア
GStreamer フレームワーク パイプラインのアイデア
MediaSoup フレームワークのルーティングのアイデア
@brutella の HomeKit アクセサリ プロトコル
プロジェクトのロゴの作成者 @v_novoseltsev
ファストスタート
go2rtc: バイナリ
go2rtc: ドッカー
go2rtc: ホーム アシスタント アドオン
go2rtc: ホーム アシスタントの統合
go2rtc: 開発バージョン
構成
双方向オーディオ
出典: RTSP
出典: RTMP
ソース: HTTP
出典: ONVIF
ソース: FFmpeg
ソース: FFmpeg デバイス
出典: エグゼクティブ
出典: エコー
出典: Expr
出典: ホームキット
出典: バブル
出典: DVRIP
出典: タポ
出典: カサ
出典: GoPro
出典: イビデオン
出典: ハス
出典: ISAPI
出典: ネスト
出典: ロボロック
出典: WebRTC
出典: ウェブトレント
受信ソース
カメラへのストリーミング
ストリームの公開
モジュール: ストリーム
モジュール: API
モジュール: RTSP
モジュール: RTMP
モジュール: WebRTC
モジュール: ホームキット
モジュール: WebTorrent
モジュール: ngrok
モジュール: ハス
モジュール: MP4
モジュール: HLS
モジュール: MJPEG
モジュール: ログ
安全
コーデックフィルター
コーデックの狂気
コーデックのネゴシエーション
go2rtc を使用したプロジェクト
カメラ体験
ヒント
よくある質問
バイナリをダウンロードするか、Docker または Home Assistant のアドオンまたは統合を使用します
Web インターフェイスを開く: http://localhost:1984/
オプションで:
ストリームを構成ファイルに追加します
webrtc への外部アクセスをセットアップする
開発者:
独自の Web インターフェイスを作成する
Web APIをスマートホームプラットフォームに統合
最新リリースから OS のバイナリをダウンロードします。
go2rtc_win64.zip
- Windows 10 以降 64 ビット
go2rtc_win32.zip
- Windows 7 以降 32 ビット
go2rtc_win_arm64.zip
- Windows ARM 64 ビット
go2rtc_linux_amd64
- Linux 64 ビット
go2rtc_linux_i386
- Linux 32 ビット
go2rtc_linux_arm64
- Linux ARM 64 ビット (例: Raspberry 64 ビット OS)
go2rtc_linux_arm
- Linux ARM 32 ビット (例: Raspberry 32 ビット OS)
go2rtc_linux_armv6
- Linux ARMv6 (古い Raspberry 1 および Zero 用)
go2rtc_linux_mipsel
- Linux MIPS (例: Xiaomi Gateway 3、Wyze カメラ)
go2rtc_mac_amd64.zip
- macOS 10.13+ Intel 64 ビット
go2rtc_mac_arm64.zip
- macOS ARM 64 ビット
Linux および Mac では権利chmod +x go2rtc_xxx_xxx
忘れずに修正してください。
Docker コンテナーalexxit/go2rtc
amd64
、 386
、 arm64
、およびarm
を含む複数のアーキテクチャをサポートします。このコンテナはホーム アシスタント アドオンと同じ機能を提供しますが、ホーム アシスタントとは独立して動作するように設計されています。 FFmpeg、ngrok、Python がプリインストールされています。
アドオンをインストールします。
[設定] > [アドオン] > [Plus] > [リポジトリ] > https://github.com/AlexxIT/hassio-addons
を追加]
go2rtc > インストール > 開始
セットアップの統合
WebRTC カメラ カスタム コンポーネントは、Windows 上の HassWP を含む、あらゆる Home Assistant インストールで使用できます。 go2rtc の最新バージョンを自動的にダウンロードして使用できます。または、既存のバージョンの go2rtc に接続することもできます。この場合のアドオンのインストールはオプションです。
最新ですが、おそらく不安定なバージョン:
バイナリ: 最新の夜間リリース
Docker: alexxit/go2rtc:master
またはalexxit/go2rtc:master-hardware
バージョン
Hass アドオン: go2rtc master
またはgo2rtc master hardware
バージョン
デフォルトでは、go2rtc は現在の作業ディレクトリ内のgo2rtc.yaml
検索します。
api
サーバーはデフォルトの1984 ポート(TCP) で起動します
rtsp
サーバーはデフォルトの8554 ポート(TCP) で起動します。
webrtc
接続にポート8555 (TCP/UDP) を使用します。
ffmpeg
デフォルトのトランスコーディング オプションを使用します
構成オプションと設定の完全なリストは wiki にあります。
利用可能なモジュール:
ストリーム
api - HTTP API (WebRTC サポートにとって重要)
rtsp - RTSP サーバー (FFmpeg サポートにとって重要)
webrtc - WebRTC サーバー
mp4 - MSE、MP4 ストリーム、および MP4 スナップショット サーバー
hls - HLS TS または fMP4 ストリーム サーバー
mjpeg - MJPEG サーバー
ffmpeg - FFmpeg の統合
ngrok - ngrok 統合 (プライベート ネットワークへの外部アクセス)
hass - ホームアシスタントの統合
ログ - ログ構成
go2rtc はさまざまなストリーム ソース タイプをサポートしています。任意のタイプの 1 つまたは複数のリンクをストリーム ソースとして構成できます。
利用可能なソースタイプ:
rtsp - 双方向オーディオをサポートするRTSP
およびRTSPS
カメラ
rtmp - RTMP
ストリーム
http - HTTP-FLV
、 MPEG-TS
、 JPEG
(スナップショット)、 MJPEG
ストリーム
onvif - ONVIF
プロトコルを使用してカメラのRTSP
リンクとスナップショット リンクを取得します
ffmpeg - FFmpeg 統合 ( HLS
、 files
、その他多数)
ffmpeg:device - ローカル USB カメラまたは Web カメラ
exec - 外部アプリ出力からメディアを取得します
echo - bash または Python からストリームリンクを取得します
expr - 組み込みの式言語を介してストリーム リンクを取得します
ホームキット - ホームキットカメラからのストリーミング
バブル - ESeeCloud/dvr163 NVR からストリーミング
dvrip - DVR-IP NVR からのストリーミング
tabo - 双方向オーディオをサポートする TP-Link Tapo カメラ
kasa - TP-Link Kasa カメラ
gopro - GoPro カメラ
ivideon - Ivideon サービスの公共カメラ
hass - ホームアシスタントの統合
isapi - Hikvision (ISAPI) カメラ用の双方向オーディオ
roborock - カメラ付き Roborock 掃除機
webrtc - WebRTC/WHEP ソース
webtorrent - 別の go2rtc からの WebTorrent ソース
受信ソースについて詳しく読む
サポートされているソース:
ONVIF プロファイル T を備えた RTSP カメラ (バック チャネル接続)
DVRIP カメラ
TP-Link Tapo カメラ
Hikvision ISAPI カメラ
Roborock カメラ付き掃除機モデル
サーバー上でオーディオを実行する
あらゆるブラウザをIPカメラとして使用可能
WebRTC テクノロジーを使用してブラウザで双方向音声を使用できます。ブラウザーは、HTTPS サイトに対してのみマイクへのアクセスを許可します (詳細を参照)。
go2rtc は、このカメラでのオーディオ ファイルの再生とライブ ストリームもサポートしています。
ストリーム:sonoff_camera: rtsp://rtsp:[email protected]/av_stream/ch0 ダーファカメラ: - rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif- rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=1 amcrest_ドアベル: - rtsp://ユーザー名:パスワード@192.168.1.123:554/cam/realmonitor?channel=1&subtype=0#backchannel=0 unifi_カメラ: rtspx://192.168.1.123:7441/fD6ouM72bWoFijxK glichy_camera: ffmpeg:rtsp://ユーザー名:パスワード@192.168.1.123/live/ch00_1
推奨事項
Amcrest Doorbellユーザーは、アクティブなストリームでは通話ボタンが機能しないため、双方向音声を無効にすることをお勧めします。 YAML 構成ファイルの RTSP リンクの末尾に#backchannel=0
を追加する必要があります
Dahua Doorbellユーザーはバックチャネル オーディオ コーデックを変更したい場合があります
Reolinkユーザーは RTSP プロトコルをまったく使用したくないかもしれません。一部のカメラ モデルには非常にひどく使用できないストリーム実装があります。
Ubiquiti UniFiユーザーは、HTTPS 検証を無効にすることができます。 rtsps://
の代わりにrtspx://
プレフィックスを使用します。 ?enableSrtp
サフィックスは使用しないでください
go2rtc はログインとパスワードなしでのログインをサポートしているため、 TP-Link Tapoユーザーはログインとパスワードをスキップできます。
カメラに 2 つの RTSP リンクがある場合、両方をソースとして追加できます。これは、ストリームに異なるコーデックがある場合に便利です。たとえば、メイン ストリームでは AAC オーディオ、2 番目のストリームでは PCMU/PCMA オーディオです。
カメラからのストリームに不具合がある場合は、ffmpeg ソースを使用してみてください。トランスコーディングを使用しない場合、CPU 負荷は追加されません
カメラからのストリームに非常に不具合がある場合は、ffmpeg ソースでトランスコーディングを使用してみてください。
その他のオプション
形式: rtsp...#{param1}#{param2}#{param3}
カスタム タイムアウト#timeout=30
(秒単位) を追加します。
音声を無視する - #media=video
またはビデオを無視する - #media=audio
双方向オーディオ API #backchannel=0
を無視します - 一部の不具合のあるカメラにとって重要です
WebSocket トランスポート#transport=ws...
WebSocket 上の RTSP
ストリーム: # WebSocket 認証あり、RTSP - なし 軸-rtsp-ws: rtsp://192.168.1.123:4567/axis-media/media.amp?overview=0&camera=1&resolution=1280x720&videoframeskipmode=empty&Axis-Orig-Sw=true#transport=ws://user:[email protected]:4567/ rtsp-over-websocket # 認証なしの WebSocket、RTSP - あり dahua-rtsp-ws: rtsp://user:[email protected]/cam/realmonitor?channel=1&subtype=1&proto=Private3#transport=ws://192.168.1.123/rtspoverwebsocket
RTMP サーバー (たとえば、nginx-rtmp-module を使用する Nginx) からストリームを取得できます。
ストリーム: rtmp_stream: rtmp://192.168.1.123/live/camera1
サポートコンテンツタイプ:
HTTP-FLV ( video/x-flv
) - RTMP と同じですが、HTTP を介します
HTTP-JPEG ( image/jpeg
) - カメラのスナップショット リンク。go2rtc によって MJPEG ストリームに変換可能
HTTP-MJPEG ( multipart/x
) - HTTP 経由の単純な MJPEG ストリーム
MPEG-TS ( video/mpeg
) - 従来のストリーミング形式
ソースは、さまざまな形式( MJPEG 、 H.264/H.265 ビットストリーム、 MPEG-TS )の自動検出を備えた HTTP および TCP ストリームもサポートしています。
ストリーム: # [HTTP-FLV] video/x-flv 形式のストリーム http_flv: http://192.168.1.123:20880/api/camera/stream/780900131155/657617 # Dahua カメラからの [JPEG] スナップショットは MJPEG ストリームに変換されます dahua_snap: http://admin:[email protected]/cgi-bin/snapshot.cgi?channel=1 # [MJPEG] ストリームは変更せずにプロキシされます http_mjpeg: https://mjpeg.sanford.io/count.mjpeg # [MJPEG または H.264/H.265 ビットストリームまたは MPEG-TS] tcp_magic: tcp://192.168.1.123:12345 # カスタムヘッダーを追加する Custom_header: "https://mjpeg.sanford.io/count.mjpeg#header=認証: ベアラー XXX"
PS. Dahua カメラにはバグがあります。RTSP の 2 番目のストリームに MJPEG コーデックを選択すると、スナップショットが機能しません。
v1.5.0の新機能
カメラの RTSP とスナップショット リンクをすでに知っている場合、このソースはあまり役に立ちません。しかし、そうでなくても便利です。
WebUI > Web ページのサポート ONVIF 自動検出を追加します。サーバーはカメラと同じサブネット上にある必要があります。 docker を使用する場合は、「ネットワーク ホスト」を使用する必要があります。
ストリーム: dahua1: onvif://admin:[email protected] reolink1: onvif://admin:[email protected]:8000 tabo1: onvif://admin:[email protected]:2020
FFmpeg 経由で任意のストリーム、ファイル、デバイスを取得し、go2rtc にプッシュできます。誰かがストリームの視聴を開始すると、アプリは適切な引数を使用して FFmpeg を自動的に開始します。
DockerおよびHass アドオンユーザー向けに事前インストールされた FFmpeg
Hass アドオンユーザーは /media フォルダーからファイルをターゲットにできます
形式ffmpeg:{input}#{param1}#{param2}#{param3}
。例:
streams: # [FILE] すべてのトラックはトランスコーディング コーデックなしでコピーされます ファイル1: ffmpeg:/media/BigBuckBunny.mp4 # [FILE] ビデオは H264 にトランスコードされ、オーディオはスキップされます ファイル2: ffmpeg:/media/BigBuckBunny.mp4#video=h264 # [FILE] ビデオがコピーされ、オーディオが PCMU にトランスコードされます ファイル3: ffmpeg:/media/BigBuckBunny.mp4#video=copy#audio=pcmu # [HLS] ビデオはコピーされ、オーディオはスキップされます hls: ffmpeg:https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/gear5/prog_index.m3u8#video=copy # [MJPEG] ビデオは H264 にトランスコードされます mjpeg: ffmpeg:http://185.97.122.128/cgi-bin/faststream.jpg#video=h264 # [RTSP] 回転のあるビデオはトランスコードする必要があるため、H264 を選択します 回転: ffmpeg:rtsp://rtsp:[email protected]/av_stream/ch0#video=h264#rotate=90
すべてのトランスコーディング形式には、組み込みテンプレートがあります: h264
、 h265
、 opus
、 pcmu
、 pcmu/16000
pcmu/48000
/48000 、 pcma
、 pcma/16000
、 pcma/48000
、 aac
、 aac/16000
。
ただし、YAML 構成を介してそれらをオーバーライドできます。独自の形式を構成に追加し、ソースパラメータとともに使用することもできます。
ffmpeg: bin: ffmpeg # ffmpeg バイナリへのパス h264: "-codec:v libx264 -g:v 30 -preset:v superfast -tune:v zerolatency -profile:v main -level:v 4.1" mycodec: "-ffmpeg でサポートされている任意の引数..." 私の入力: "-fflags nobuffer -flags low_delay -timeout 5000000 -i {input}" myraw: "-ss 00:00:20"
go2rtc ストリーム名を ffmpeg 入力として使用できます (例: ffmpeg:camera1#video=h264
)
video
とaudio
パラメータは複数回使用できます (例: #video=copy#audio=copy#audio=pcmu
)
90
、 180
、 270
、または-90
の値でrotate
パラメータを使用できます。これはトランスコーディングで重要です (例: #video=h264#rotate=90
)
トランスコーディングで重要となるwidth
および/またはheight
パラメータを使用できます (例: #video=h264#width=1280
)
タイムスタンプを追加するには、 drawtext
使用できます (例: drawtext=x=2:y=2:fontsize=12:fontcolor=white:box=1:boxcolor=black
)。
これにより、ハードウェア アクセラレーションを使用した場合でも、サーバーの CPU が大幅に増加します。
追加の FFmpeg 引数にはraw
param を使用できます (例: #raw=-vf transpose=1
)
input
パラメータを使用してデフォルトの入力テンプレートをオーバーライドできます (例: #input=rtsp/udp
RTSP トランスポートを TCP から UDP+TCP に変更します)
生の入力値を使用できます (例: #input=-timeout 5000000 -i {input}
)
独自の入力テンプレートを追加できます
ハードウェア アクセラレーションについて詳しくは、こちらをご覧ください。
PS. WebUI 追加ページで利用可能なハードウェアを確認することをお勧めします。
任意の USB カメラまたは Web カメラからビデオを RTSP または WebRTC ストリームとして取得できます。これは FFmpeg 統合の一部です。
Webインターフェースで利用可能なデバイスを確認する
video_size
とframerate
カメラでサポートされている必要があります。
Linux では今のところビデオのみサポートされています
macOS の場合は、Facetime カメラまたはデスクトップ全体をストリーミングできます。
macOS の場合、適切なフレームレートを設定することが重要
形式: ffmpeg:device?{input-params}#{param1}#{param2}#{param3}
ストリーム: linux_usbcam: ffmpeg:device?video=0&video_size=1280x720#video=h264 windows_webcam: ffmpeg:device?video=0#video=h264 macos_facetime: ffmpeg:device?video=0&audio=1&video_size=1280x720&framerate=30#video=h264#audio=pcma
PS. WebUI の追加ページで利用可能なデバイスを確認することをお勧めします。
実行ソースは任意の外部アプリケーションを実行し、そこからのデータを期待できます。パイプ( v1.5.0 以降) とRTSPという 2 つのトランスポートがサポートされています。
RTSPトランスポートを使用する場合は、コマンドの任意の場所に{output}
引数を含める必要があります。起動時に、RTSP サーバーのローカル アドレスに置き換えられます。
パイプは、アプリの標準出力からさまざまな形式でデータを読み取ります: MJPEG 、 H.264/H.265 ビットストリーム、 MPEG-TS 。また、パイプは、 PCMAとPCM/48000 の2 つの形式でアプリの標準入力にデータを書き込むことができます。
ソースは次のものとともに使用できます。
FFmpeg - go2rtc ffmpeg ソースは実行ソースへの単なるショートカットです
FFplay - サーバー上でオーディオを再生します
Gストリーマー
ラズベリーパイカメラ
独自のソフトウェア
パイプ コマンドはパラメーターをサポートしています (形式: exec:{command}#{param1}#{param2}
):
killsignal
- プロセスを停止するために送信されるシグナル (数値形式)
killtimeout
- sigkill による強制終了の時間 (秒)
backchannel
- 双方向オーディオのバックチャネルを有効にします
ストリーム: ストリーム: exec:ffmpeg -re -i /media/BigBuckBunny.mp4 -c copy -rtsp_transport tcp -f rtsp {出力} picam_h264: exec:libcamera-vid -t 0 --inline -o - picam_mjpeg: exec:libcamera-vid -t 0 --codec mjpeg -o - pi5cam_h264: exec:libcamera-vid -t 0 --libav-format h264 -o - canon: exec:gphoto2 --capture-movie --stdout#killsignal=2#killtimeout=5 play_pcma: exec:ffplay -fflags nobuffer -f alaw -ar 8000 -i -#backchannel=1 play_pcm48k: exec:ffplay -fflags nobuffer -f s16be -ar 48000 -i -#backchannel=1
一部のソースには動的リンクが含まれる場合があります。また、bash または Python スクリプトを使用して取得する必要があります。スクリプトはソースへのリンクをエコーする必要があります。 RTSP、FFmpeg、またはサポートされているソースのいずれか。
DockerおよびHass アドオン ユーザーには、 python3
、 curl
、 jq
がプリインストールされています。
Wiki で例を確認してください。
ストリーム: apple_hls: echo:python3 hls.py https://developer.apple.com/streaming/examples/basic-stream-osx-ios5.html
v1.8.2の新機能
echo
ソースと似ていますが、組み込みの expr 式言語を使用します (詳細を参照)。
重要:
Apple デバイス (iPhone、iPad など) がなくてもHomeKit カメラを使用できますが、これは単なる別のプロトコルです
HomeKit デバイスは 1 つのエコシステムとのみペアリングできます。したがって、iPhone (Apple Home) とペアリングしている場合、Home Assistant や go2rtc とペアリングすることはできません。または、go2rtc とペアリングしている場合 - iPhone とペアリングすることはできません
HomeKit デバイスは、デバイスと go2rtc の間で mDNS が機能する同じネットワーク内にある必要があります。
go2rtc は、ホーム アシスタントからペアリングされた HomeKit デバイスをインポートすることをサポートします。したがって、HomeKit カメラを Hass と go2rtc で同時に使用できます。 Hass を使用している場合は、デバイスを Hass とペアリングすることをお勧めします。これにより、より多くのオプションが提供されます。
HomeKit ページでデバイスを go2rtc とペアリングできます。デバイスが表示されない場合は、ページをリロードしてください。また、HomeKit デバイスを再起動 (電源をオフ) してみてください。それでも表示されない場合は、mDNS に問題があります。
デバイスが表示されてもペア ボタンがない場合、そのデバイスは何らかのエコシステム (Apple Home、Home Assistant、HomeBridge など) にペアリングされています。そのエコシステムからデバイスを削除する必要があります。そうすれば、ペアリングできるようになります。デバイスのペアリングを解除できない場合は、デバイスをリセットする必要があります。
重要:
HomeKit オーディオは、非常に非標準のパラメータと仕様違反を持つ非常に非標準のAAC-ELDコーデックを使用します。
オーディオはVLC
およびおそらく他のプレーヤーで再生できません
MSE、WebRTC などで使用するには、音声をトランスコードする必要があります。
WebRTC、MSE、MP4、RTSP で HomeKit Camera を使用するための推奨設定:
streams: aqara_g3: - hass:Camera-Hub-G3-AB12 - ffmpeg:aqara_g3#audio=aac#audio=opus
任意のプレーヤーの「通常の」オーディオを含む RTSP リンク: rtsp://192.168.1.123:8554/aqara_g3?video&audio=aac
このソースは現在開発中です。 Aqara Camera Hub G3 (EU バージョンと CN バージョンの両方) でのみテストされています。
v1.6.1の新機能
他の名前: ESeeCloud、dvr163。
username
、 password
、 port
、 ch
、 stream
がデフォルトの場合はスキップできます
異なるチャンネルとストリームに個別のストリームを設定する
ストリーム: カメラ 1: bubble://ユーザー名:パスワード@192.168.1.123:34567/bubble/live?ch=0&stream=0
v1.2.0の新機能
他の名前: DVR-IP、NetSurveillance、Sofia プロトコル (NETsurveillance ActiveX プラグイン XMeye SDK)。
username
、 password
、 port
、 channel
、 subtype
がデフォルトの場合はスキップできます
異なるチャンネルに個別のストリームを設定する
Main ストリームにはsubtype=0
を使用し、Extra1 ストリームにはsubtype=1
使用します
TCP プロトコルのみがサポートされています
ストリーム:only_stream: dvrip://username:[email protected]:34567?channel=0&subtype=0 Only_tts: dvrip://ユーザー名:パスワード@192.168.1.123:34567?backchannel=1 双方向オーディオ: - dvrip://ユーザー名:パスワード@192.168.1.123:34567?channel=0&subtype=0- dvrip://ユーザー名:パスワード@192.168.1.123:34567?backchannel=1
v1.2.0の新機能
双方向オーディオをサポートする TP-Link Tapo 独自のカメラ プロトコル。
ストリーム品質はRTSPプロトコルと同じです
クラウド パスワードを使用してください。これは RTSP パスワードではありません。ログインを追加する必要はありません。
admin
ユーザー名でクラウドパスワードから大文字の MD5 ハッシュを使用することもできます。
一部の新しいカメラのファームウェアには、MD5 ではなく SHA256 が必要です
ストリーム: # ユーザー名のないクラウドパスワード カメラ1:tapo://[email protected] # 管理者ユーザー名と大文字の MD5 クラウドパスワード ハッシュ カメラ 2: タポ://admin:[email protected] # 管理者ユーザー名と大文字の SHA256 クラウドパスワードハッシュ カメラ3: タポ://admin:[email protected]
echo -n "クラウドパスワード" | MD5 | awk '{print toupper($0)}'echo -n "クラウドパスワード" |シャサム -a 256 | awk '{print toupper($0)}'
v1.7.0の新機能
TP-Link Kasa 非標準プロトコルの詳細。
username
- urlsafe メール、 [email protected]
-> alex%40gmail.com
password
- Base64パスワード、 secret1
-> c2VjcmV0MQ==
ストリーム: kc401: kasa://ユーザー名:パスワード@192.168.1.123:19443/https/stream/mixed
テスト済み: KD110、KC200、KC401、KC420WS、EC71。
v1.8.3の新機能
USB または Wi-Fi 経由で Linux、Mac、Windows に接続された GoPro カメラからのストリーミングをサポートします。続きを読む。
Ivideon サービスの公共カメラをサポートします。
ストリーム: ウズラカメラ: ivideon:100-tu5dkUPct39cTp9oNEN2B6/0
ホーム アシスタント設定ファイルからのカメラ リンクのインポートをサポートします。
汎用カメラ、GUI 経由のセットアップ
ホームキットカメラ
ONVIF
カメラ付きロボロック掃除機
hass: config: "/config" # Hass アドオンの場合はこの設定をスキップします userstreams: generic_camera: hass:Camera1 # 設定 > 統合 > 統合名 aqara_g3: hass:カメラ-ハブ-G3-AB12
WebRTC カメラ( v1.6.0 以降)
WebRTC 形式のカメラはすべてサポートされています。ただし、現時点では、Home Assistant はこの形式の一部の Nest カメラのみをサポートしています。
重要。 Nest API では、ストリームへのリンクを取得できるのは 5 分間のみです。フリゲートでは使用しないでください。ストリームの有効期限が切れると、Frigate は数秒以内にマシン上の利用可能な RAM をすべて消費します。 Nest ソースを使用することをお勧めします。Nest ソースはストリームの拡張をサポートしています。
ストリーム: # ホーム アシスタント監視へのリンク hass-webrtc1: hass://supervisor?entity_id=camera.nest_doorbell # 有効期間の長いアクセス トークンを使用して外部 Hass にリンクします hass-webrtc2: hass://192.168.1.123:8123?entity_id=camera.nest_doorbell&token=eyXYZ...
RTSPカメラ
デフォルトでは、ホーム アシスタント API では、カメラ ストリームへの動的な RTSP リンクを取得できません。したがって、Tuya などのより多くのカメラや、おそらく他のカメラも、この方法を使用してインポートできます。
v1.3.0の新機能
このソース タイプは、Hikvision ISAPI プロトコルのバックチャネル オーディオのみをサポートします。したがって、RTSP プロトコルに加えて 2 番目のソースとして使用する必要があります。
ストリーム: hikvision1: - rtsp://admin:[email protected]:554/Streaming/Channels/101-isapi://admin:[email protected]:80/
v1.6.0の新機能
現在、WebRTC カメラのみがサポートされています。
簡単にするために、Nest/WebRTC カメラを Home Assistant に接続することをお勧めします。ただし、何らかの方法で以下のパラメータを取得できれば、Nest/WebRTC ソースは Hass なしで動作します。
ストリーム: ネストドアベル: ネスト:?client_id=***&client_secret=***&refresh_token=***&project_id=***&device_id=***
v1.3.0の新機能
このソースタイプは、カメラ付きの Roborock 掃除機をサポートします。既知の動作モデル:
Roborock S6 MaxV - ビデオのみ (掃除機にはマイクがありません)
Roborock S7 MaxV - ビデオと双方向オーディオ
Roborock Qrevo MaxV - ビデオと双方向オーディオ
ソースサポートは、Home Assistant カスタム統合またはコア統合から Roborock 資格情報を読み込みます。それ以外の場合は、Roborock アカウントにログインする必要があります (MiHome アカウントはサポートされていません)。 go2rtc WebUI > Web ページの追加に移動します。バキュームのroborock://...
ソースをコピーし、 go2rtc.yaml
構成に貼り付けます。
掃除機用のグラフィック ピンがある場合は、それを数値ピン (行: 123、456、789) として roborock-link の最後に追加します。
v1.3.0の新機能
このソース タイプは 4 つの接続形式をサポートします。
うーん
WebRTC/WHEP - WebRTC ビデオ/オーディオ ビューア用の WebRTC/WISH 標準に置き換えられます。ただし、一部のサードパーティ ソフトウェアではすでにサポートされている場合があります。 go2rtc でサポートされています。
go2rtc
この形式は go2rtc でのみサポートされます。 WHEP とは異なり、非同期 WebRTC 接続と双方向オーディオをサポートします。
openipc ( v1.7.0 以降)
OpenIPC カメラへの接続をサポートします。
ワイズ( v1.6.1 以降)
WebRTC プロトコルを使用した Wyze カメラへの接続をサポートします。 docker-wyze-bridge プロジェクトを使用して接続資格情報を取得できます。
キネシス( v1.6.1 以降)
WebRTC プロトコルを使用して、Amazon Kinesis Video Streams をサポートします。クエリパラメータ、 client_id
、 ice_servers
リストのすべての認証情報を JSON 形式で指定して、シグナリング WebSocket URL を指定する必要があります。
ストリーム: webrtc-whep: webrtc:http://192.168.1.123:1984/api/webrtc?src=camera1 webrtc-go2rtc: webrtc:ws://192.168.1.123:1984/api/ws?src=camera1 webrtc-openipc: webrtc:ws://192.168.1.123/webrtc_ws#format=openipc#ice_servers=[{"urls":"stun:stun.kinesisvideo.eu-north-1.amazonaws.com:443"}] webrtc-wyze: webrtc:http://192.168.1.123:5000/signaling/camera1?kvs#format=wyze webrtc-kinesis: webrtc:wss://...amazonaws.com/?...#format=kinesis#client_id=...#ice_servers=[{...},{...}]
PS. kinesis
ソースの場合は、echo を使用して、 bash
/ python
またはその他のスクリプト言語を使用して接続パラメータを取得できます。
v1.3.0の新機能
このソースは、WebTorrent プロトコル経由で別の go2rtc からストリームを取得できます。
ストリーム: webtorrent1: webtorrent:?share=huofssuxaty00izc&pwd=k3l2j9djeg8v8r7e
デフォルトでは、go2rtc は、クライアントが要求したときにソースへの接続を確立します。 Go2rtc は、クライアントがなくなるとソースへの接続を切断します。
Go2rtc は、RTSP、RTMP、HTTP、 WebRTC/WHIP形式の受信ソースも受け入れることができます。
クライアントが存在しない場合、Go2rtc はそのようなソースを停止しません
データを既存のストリームにのみプッシュできます(構成で空のソースを使用してストリームを作成します)
複数の受信ソースを同じストリームにプッシュできます
データを空でないストリームにプッシュできるため、内部に追加のコーデックが含まれます。
例
任意のコーデックを使用した RTSP
ffmpeg -re -i BigBuckBunny.mp4 -c copy -rtsp_transport tcp -f rtsp rtsp://localhost:8554/camera1
MJPEG コーデックを使用した HTTP-MJPEG
ffmpeg -re -i BigBuckBunny.mp4 -c mjpeg -f mpjpeg http://localhost:1984/api/stream.mjpeg?dst=camera1
H264、AAC コーデックを使用した HTTP-FLV
ffmpeg -re -i BigBuckBunny.mp4 -c copy -f flv http://localhost:1984/api/stream.flv?dst=camera1
H264 コーデックを備えた MPEG-TS
ffmpeg -re -i BigBuckBunny.mp4 -c copy -f mpegts http://localhost:1984/api/stream.ts?dst=camera1
v1.3.0の新機能
あらゆる PC またはモバイルのブラウザを、ビデオと双方向音声をサポートする IP カメラに変えることができます。または、PC 画面をブロードキャストすることもできます。
go2rtc.yaml
に空のストリームを作成する
go2rtc WebUI に移動
ストリームのlinks
ページを開く
camera+microphone
またはdisplay+speaker
オプションを選択してください
webrtc
ローカル ページを開くか (go2rtc はHTTPS 経由で動作するはずです! )、WebTorrent テクノロジー経由でshare link
(デフォルトでは HTTPS 経由で動作します)。
v1.3.0の新機能
OBS Studioまたは WHIP プロトコルをサポートするその他のブロードキャスト ソフトウェアを使用できます。この規格はまだ承認されていません。ただし、OBS Studio 開発バージョンをダウンロードすることはできます。
設定 > ストリーム > サービス: WHIP > http://192.168.1.123:1984/api/webrtc?dst=camera1
v1.3.0の新機能
go2rtc サポートは、双方向オーディオ サポート (RTSP/ONVIF カメラ、TP-Link Tapo、Hikvision ISAPI、Roborock 掃除機、任意のブラウザ) を備えたカメラでオーディオ ファイル (例: 音楽または TTS) およびライブ ストリーム (例: ラジオ) を再生します。
API の例:
POST http://localhost:1984/api/streams?dst=camera1&src=ffmpeg:http://example.com/song.mp3#audio=pcma#input=file
ストリーミング可能: ローカル ファイル、Web ファイル、ライブ ストリーム、または FFmpeg でサポートされている任意の形式
オーディオをカメラがサポートしているコーデックにトランスコードするには、ffmpeg ソースを使用する必要があります。
ストリームがアクティブなときに、go2rtc WebUI 情報ページでカメラ コーデックを確認できます。
一部のカメラは低品質のPCMA/8000
コーデックのみをサポートしています (例: Tapo)
カメラがサポートしている場合は、より高品質のフォーマットを選択することをお勧めします (例: 一部の Dahua カメラではPCMA/48000
)。
http リンク経由でファイルを再生する場合は、ファイルがリアルタイムでトランスコードされて再生されるように、トランスコーディング用の#input=file
パラメータを追加する必要があります。
ライブ ストリームを再生する場合は、すでにリアルタイムであるため、 #input
param をスキップする必要があります。
空のsrc
パラメータを指定して API を呼び出すことで、アクティブな再生を停止できます。
ストリーミング中に go2rtc WebUI 情報ページに 1 つのアクティブなプロデューサーと 1 つのアクティブなコンシューマーが表示されます。
v1.8.0の新機能
RTMP/RTMPS 経由でストリーミング サービス (YouTube、Telegram など) に任意のストリームを公開できます。重要:
サポートされているコーデック: ビデオの場合は H264、オーディオの場合は AAC
YouTube には AAC オーディオが必要です。オーディオのないビデオは機能しません
このタスクをリッスンする RTMP モジュールを有効にする必要はありません
API を使用できます。
POST http://localhost:1984/api/streams?src=camera1&dst=rtmps://...
または設定ファイル:
public: # ストリーム「video_audio_transcode」を Telegram に公開します video_audio_transcode: - rtmps://xxx-x.rtmp.t.me/s/xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxx # ストリーム「audio_transcode」を Telegram と YouTube に公開します audio_transcode: - rtmps://xxx-x.rtmp.t.me/s/xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxx- rtmp://xxx.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx-xxxxstreams: video_audio_transcode: - ffmpeg:rtsp://user:[email protected]/stream1#video=h264#hardware#audio=aac audio_transcode: - ffmpeg:rtsp://user:[email protected]/stream1#video=copy#audio=aac
Telegram デスクトップ アプリ> 任意のパブリックまたはプライベート チャネルまたはグループ (管理者) > ライブ ストリーム > 開始... > ストリーミングを開始します。
YouTube > 作成 > ライブ配信 > ストリーム遅延: 超低遅延 > コピー: ストリーム URL + ストリーム キー。
HTTP API は、アプリケーションと対話するための主要な部分です。デフォルトのアドレス: http://localhost:1984/
。
重要! go2rtc は、HTTP 認証が設定されている場合でも、localhost および UNIX ソケットからのリクエストを HTTP 認証なしで渡します。 API への安全な外部アクセスを設定するのはあなたの責任です。適切に構成されていない場合、攻撃者がカメラやサーバーにアクセスする可能性があります。
APIの説明。
モジュール構成
listen: ""
で HTTP API を無効にし、たとえば RTSP クライアント/サーバー プロトコルのみを使用することができます。
listen: "127.0.0.1:1984"
設定を使用すると、ローカルホストでのみ HTTP API を有効にできます。
メインアプリのWebサーバーのサブURLでAPIのbase_path
とホストgo2rtcを変更できます
ルート パスでホストされているstatic_dir
のすべてのファイル: /
未加工の TLS 証明書/キーのコンテンツまたはファイルへのパスを使用できます
api: listen: ":1984" # デフォルト ":1984"、HTTP API ポート ("" - 無効) ユーザー名: "admin" # デフォルト ""、WebUI の基本認証 パスワード: "pass" # デフォルト ""、WebUI の基本認証 Base_path: "/rtc" # デフォルト ""、サブ URL で提供するための API プレフィックス (/api => /rtc/api) static_dir: "www" # デフォルト ""、静的ファイルのフォルダー (カスタム Web インターフェイス) 起点: "*" # デフォルト ""、CORS リクエストを許可します (* のみサポート) tls_listen: ":443" # デフォルト ""、HTTPS サーバーを有効にする tls_cert: | # デフォルト ""、HTTPS 用の PEM エンコードされたフルチェーン証明書 -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- tls_key: | # デフォルト ""、HTTPS 用の PEM エンコードされた秘密鍵 -----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY----- unix_listen: "/tmp/go2rtc.sock " # デフォルト ""、API の UNIX ソケット リスナー
追伸:
Chrome のバグにより、WebSocket 上の MJPEG はネイティブ MJPEG よりも再生されます。
MP4 over WebSocket は、MSE とネイティブ MP4 をサポートしていないため、Apple iOS 専用に作成されました。
任意のストリームを RTSP ストリームとして取得できます: rtsp://192.168.1.123:8554/{stream_name}
RTSP ストリームの外部パスワード保護を有効にすることができます。パスワード保護はローカルホスト呼び出しに対して常に無効になります (例: 同じサーバー上の FFmpeg または Hass)。
rtsp: listen: ":8554" # RTSP サーバーの TCP ポート、デフォルト - 8554 ユーザー名: "admin" # オプション、デフォルト - 無効 パスワード: "pass" # オプション、デフォルト - 無効 デフォルト_クエリ: "ビデオとオーディオ" <sp