Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NoETA: Research Google Nest Camera support. #164

Open
winlinvip opened this issue Mar 13, 2024 · 0 comments
Open

NoETA: Research Google Nest Camera support. #164

winlinvip opened this issue Mar 13, 2024 · 0 comments
Assignees
Labels
TransByAI Translated by AI/GPT.

Comments

@winlinvip
Copy link
Member

winlinvip commented Mar 13, 2024

See guide Get Started for Google Nest Camera.

The offer from player, which is Chrome.
v=0
o=- 2438137430814423544 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1 2
a=extmap-allow-mixed
a=msid-semantic: WMS
m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:4kR3
a=ice-pwd:jwZFoG+ASYCg+LL2jMsXcv/e
a=ice-options:trickle
a=fingerprint:sha-256 A1:6F:81:07:0A:B2:19:7B:00:D5:C9:72:4E:2E:C5:82:0D:0C:32:42:05:C7:92:9C:3B:6D:40:FC:3F:76:B6:36
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=recvonly
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:63 red/48000/2
a=fmtp:63 111/111
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:126 telephone-event/8000
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 35 36 37 38 102 103 104 105 106 107 108 109 127 125 39 40 41 42 43 44 45 46 47 48 112 113 114 115 116 117 118 49
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:4kR3
a=ice-pwd:jwZFoG+ASYCg+LL2jMsXcv/e
a=ice-options:trickle
a=fingerprint:sha-256 A1:6F:81:07:0A:B2:19:7B:00:D5:C9:72:4E:2E:C5:82:0D:0C:32:42:05:C7:92:9C:3B:6D:40:FC:3F:76:B6:36
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=recvonly
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:98 VP9/90000
a=rtcp-fb:98 goog-remb
a=rtcp-fb:98 transport-cc
a=rtcp-fb:98 ccm fir
a=rtcp-fb:98 nack
a=rtcp-fb:98 nack pli
a=fmtp:98 profile-id=0
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=98
a=rtpmap:100 VP9/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=fmtp:100 profile-id=2
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:35 VP9/90000
a=rtcp-fb:35 goog-remb
a=rtcp-fb:35 transport-cc
a=rtcp-fb:35 ccm fir
a=rtcp-fb:35 nack
a=rtcp-fb:35 nack pli
a=fmtp:35 profile-id=1
a=rtpmap:36 rtx/90000
a=fmtp:36 apt=35
a=rtpmap:37 VP9/90000
a=rtcp-fb:37 goog-remb
a=rtcp-fb:37 transport-cc
a=rtcp-fb:37 ccm fir
a=rtcp-fb:37 nack
a=rtcp-fb:37 nack pli
a=fmtp:37 profile-id=3
a=rtpmap:38 rtx/90000
a=fmtp:38 apt=37
a=rtpmap:102 H264/90000
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:103 rtx/90000
a=fmtp:103 apt=102
a=rtpmap:104 H264/90000
a=rtcp-fb:104 goog-remb
a=rtcp-fb:104 transport-cc
a=rtcp-fb:104 ccm fir
a=rtcp-fb:104 nack
a=rtcp-fb:104 nack pli
a=fmtp:104 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=rtpmap:105 rtx/90000
a=fmtp:105 apt=104
a=rtpmap:106 H264/90000
a=rtcp-fb:106 goog-remb
a=rtcp-fb:106 transport-cc
a=rtcp-fb:106 ccm fir
a=rtcp-fb:106 nack
a=rtcp-fb:106 nack pli
a=fmtp:106 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=106
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f
a=rtpmap:125 rtx/90000
a=fmtp:125 apt=127
a=rtpmap:39 H264/90000
a=rtcp-fb:39 goog-remb
a=rtcp-fb:39 transport-cc
a=rtcp-fb:39 ccm fir
a=rtcp-fb:39 nack
a=rtcp-fb:39 nack pli
a=fmtp:39 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f
a=rtpmap:40 rtx/90000
a=fmtp:40 apt=39
a=rtpmap:41 H264/90000
a=rtcp-fb:41 goog-remb
a=rtcp-fb:41 transport-cc
a=rtcp-fb:41 ccm fir
a=rtcp-fb:41 nack
a=rtcp-fb:41 nack pli
a=fmtp:41 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=f4001f
a=rtpmap:42 rtx/90000
a=fmtp:42 apt=41
a=rtpmap:43 H264/90000
a=rtcp-fb:43 goog-remb
a=rtcp-fb:43 transport-cc
a=rtcp-fb:43 ccm fir
a=rtcp-fb:43 nack
a=rtcp-fb:43 nack pli
a=fmtp:43 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=f4001f
a=rtpmap:44 rtx/90000
a=fmtp:44 apt=43
a=rtpmap:45 AV1/90000
a=rtcp-fb:45 goog-remb
a=rtcp-fb:45 transport-cc
a=rtcp-fb:45 ccm fir
a=rtcp-fb:45 nack
a=rtcp-fb:45 nack pli
a=rtpmap:46 rtx/90000
a=fmtp:46 apt=45
a=rtpmap:47 AV1/90000
a=rtcp-fb:47 goog-remb
a=rtcp-fb:47 transport-cc
a=rtcp-fb:47 ccm fir
a=rtcp-fb:47 nack
a=rtcp-fb:47 nack pli
a=fmtp:47 profile=1
a=rtpmap:48 rtx/90000
a=fmtp:48 apt=47
a=rtpmap:112 H264/90000
a=rtcp-fb:112 goog-remb
a=rtcp-fb:112 transport-cc
a=rtcp-fb:112 ccm fir
a=rtcp-fb:112 nack
a=rtcp-fb:112 nack pli
a=fmtp:112 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f
a=rtpmap:113 rtx/90000
a=fmtp:113 apt=112
a=rtpmap:114 H264/90000
a=rtcp-fb:114 goog-remb
a=rtcp-fb:114 transport-cc
a=rtcp-fb:114 ccm fir
a=rtcp-fb:114 nack
a=rtcp-fb:114 nack pli
a=fmtp:114 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=64001f
a=rtpmap:115 rtx/90000
a=fmtp:115 apt=114
a=rtpmap:116 red/90000
a=rtpmap:117 rtx/90000
a=fmtp:117 apt=116
a=rtpmap:118 ulpfec/90000
a=rtpmap:49 flexfec-03/90000
a=rtcp-fb:49 goog-remb
a=rtcp-fb:49 transport-cc
a=fmtp:49 repair-window=10000000
m=application 9 UDP/DTLS/SCTP webrtc-datachannel
c=IN IP4 0.0.0.0
a=ice-ufrag:4kR3
a=ice-pwd:jwZFoG+ASYCg+LL2jMsXcv/e
a=ice-options:trickle
a=fingerprint:sha-256 A1:6F:81:07:0A:B2:19:7B:00:D5:C9:72:4E:2E:C5:82:0D:0C:32:42:05:C7:92:9C:3B:6D:40:FC:3F:76:B6:36
a=setup:actpass
a=mid:2
a=sctp-port:5000
a=max-message-size:262144
The answer from Google Media Server.
v=0
o=- 0 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 2 1
a=msid-semantic: WMS 16494823137545746398/448405540 virtual-6666
a=ice-lite
m=audio 19305 UDP/TLS/RTP/SAVPF 111
c=IN IP4 172.253.118.127
a=rtcp:9 IN IP4 0.0.0.0
a=candidate: 1 udp 2113939711 2404:6800:4003:c05::7f 19305 typ host generation 0
a=candidate: 1 tcp 2113939710 2404:6800:4003:c05::7f 19305 typ host tcptype passive generation 0
a=candidate: 1 ssltcp 2113939709 2404:6800:4003:c05::7f 443 typ host generation 0
a=candidate: 1 udp 2113932031 172.253.118.127 19305 typ host generation 0
a=candidate: 1 tcp 2113932030 172.253.118.127 19305 typ host tcptype passive generation 0
a=candidate: 1 ssltcp 2113932029 172.253.118.127 443 typ host generation 0
a=ice-ufrag:fftvWfBghcGP3AoKWigaIAQQABgHCAMGBQQBAggSDAiS
a=ice-pwd:BUKYH3UWD45MJ9NTVRS99RVF
a=fingerprint:sha-256 65:17:2B:F7:11:BC:85:50:2C:FA:3D:1C:30:1F:00:BC:67:1A:3D:97:B6:14:82:14:ED:D9:66:67:4C:BF:C0:31
a=setup:passive
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=sendrecv
a=msid:virtual-6666 virtual-6666
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=ssrc:6666 cname:6666
m=video 9 UDP/TLS/RTP/SAVPF 106 107
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:fftvWfBghcGP3AoKWigaIAQQABgHCAMGBQQBAggSDAiS
a=ice-pwd:BUKYH3UWD45MJ9NTVRS99RVF
a=fingerprint:sha-256 65:17:2B:F7:11:BC:85:50:2C:FA:3D:1C:30:1F:00:BC:67:1A:3D:97:B6:14:82:14:ED:D9:66:67:4C:BF:C0:31
a=setup:passive
a=mid:1
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=sendrecv
a=msid:16494823137545746398/448405540 16494823137545746398/448405540
a=rtcp-mux
a=rtpmap:106 H264/90000
a=rtcp-fb:106 transport-cc
a=rtcp-fb:106 ccm fir
a=rtcp-fb:106 nack
a=rtcp-fb:106 nack pli
a=rtcp-fb:106 goog-remb
a=fmtp:106 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=106
a=ssrc-group:FID 448405540 1513395890
a=ssrc:448405540 cname:448405540
a=ssrc:1513395890 cname:448405540
m=application 9 DTLS/SCTP 5000
c=IN IP4 0.0.0.0
a=ice-ufrag:fftvWfBghcGP3AoKWigaIAQQABgHCAMGBQQBAggSDAiS
a=ice-pwd:BUKYH3UWD45MJ9NTVRS99RVF
a=fingerprint:sha-256 65:17:2B:F7:11:BC:85:50:2C:FA:3D:1C:30:1F:00:BC:67:1A:3D:97:B6:14:82:14:ED:D9:66:67:4C:BF:C0:31
a=setup:passive
a=mid:2
a=sctpmap:5000 webrtc-datachannel 1024

The ip 172.253.118.127 is the Google Cloud server IP.

In reality, it is not possible to configure a Google camera to stream directly to SRS (Simple Real-time Streaming Server). Instead, the stream can only be pulled from Google's server at the IP address 172.253.118.127, as the camera pushes its feed to Google's server. A potential solution would be to use a Go program to extract the WebRTC stream and then convert it to WHIP (WebRTC-HTTP ingestion protocol) for pushing to the SRS stack.

Google Nest Camera ---WebRTC----> Google Media Server ---WebRTC---> Go ---WHIP--> SRS Stack

After forward stream to SRS Stack, you are able to restream, record, or do whatever you want.

TRANS_BY_GPT4

@winlinvip winlinvip converted this from a draft issue Mar 13, 2024
@winlinvip winlinvip added the TransByAI Translated by AI/GPT. label Mar 13, 2024
@winlinvip winlinvip self-assigned this Mar 13, 2024
@winlinvip winlinvip removed the status in Oryx Roadmap Mar 13, 2024
@winlinvip winlinvip moved this to 📋 Backlog in Oryx Roadmap Mar 13, 2024
@winlinvip winlinvip changed the title Research Google Nest Camera support. NoETA: Research Google Nest Camera support. Apr 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
TransByAI Translated by AI/GPT.
Projects
Status: 📋 Backlog
Development

No branches or pull requests

1 participant