1 line
19 KiB
JSON
Executable File
1 line
19 KiB
JSON
Executable File
{"title":"","byline":"Written by Tim Moody","dir":null,"lang":null,"content":"<div id=\"readability-page-1\" class=\"page\"><div><div><h2 data-selectable-paragraph=\"\" data-testid=\"storyTitle\" id=\"56b4\">Transform Your WebCam into an IP Camera (for Frigate)</h2><div><a href=\"https://medium.com/@timothydmoody?source=post_page-----8cf50fd749e9--------------------------------\" rel=\"noopener follow\"><div aria-labelledby=\"1\" aria-describedby=\"1\" aria-hidden=\"false\"><p><img data-testid=\"authorPhoto\" loading=\"lazy\" height=\"44\" width=\"44\" src=\"https://miro.medium.com/v2/resize:fill:88:88/1*mIovv0S-cIg0FM642YB2pg.png\" alt=\"Tim Moody\"></p></div></a></div></div><figure><div tabindex=\"0\" role=\"button\"><picture><source type=\"image/webp\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" srcset=\"https://miro.medium.com/v2/resize:fit:640/format:webp/1*V-LqCtlKDnreiGAuEwArbQ.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*V-LqCtlKDnreiGAuEwArbQ.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*V-LqCtlKDnreiGAuEwArbQ.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*V-LqCtlKDnreiGAuEwArbQ.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*V-LqCtlKDnreiGAuEwArbQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*V-LqCtlKDnreiGAuEwArbQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*V-LqCtlKDnreiGAuEwArbQ.png 1400w\"><source sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" srcset=\"https://miro.medium.com/v2/resize:fit:640/1*V-LqCtlKDnreiGAuEwArbQ.png 640w, https://miro.medium.com/v2/resize:fit:720/1*V-LqCtlKDnreiGAuEwArbQ.png 720w, https://miro.medium.com/v2/resize:fit:750/1*V-LqCtlKDnreiGAuEwArbQ.png 750w, https://miro.medium.com/v2/resize:fit:786/1*V-LqCtlKDnreiGAuEwArbQ.png 786w, https://miro.medium.com/v2/resize:fit:828/1*V-LqCtlKDnreiGAuEwArbQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*V-LqCtlKDnreiGAuEwArbQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*V-LqCtlKDnreiGAuEwArbQ.png 1400w\" data-testid=\"og\"><img src=\"https://miro.medium.com/v2/resize:fit:700/1*V-LqCtlKDnreiGAuEwArbQ.png\" role=\"presentation\" loading=\"eager\" height=\"442\" width=\"700\" alt=\"\"></picture></div><figcaption data-selectable-paragraph=\"\">Frigate Mission Control Center Performing “Person Detection”</figcaption></figure><figure><figcaption>Full Video Tutorial from @DataSlayerMedia</figcaption></figure><p data-selectable-paragraph=\"\" id=\"f47e\">One of the configuration inputs for frigate is a valid RTSP stream URL. Unfortunately off-the-shelf web cams don’t generate RTSP streams so if we want to use a web cam with our Frigate system we’ll have to generate a valid stream for the service to hook into.</p><h2 data-selectable-paragraph=\"\" id=\"615e\">Download RTSP Simple Server</h2><p data-selectable-paragraph=\"\" id=\"3ab3\">Download the library.</p><pre><span data-selectable-paragraph=\"\" id=\"735d\">wget https://github.com/aler9/rtsp-simple-server/releases/download/v0.16.0/rtsp-simple-server_v0.16.0_linux_amd64.tar.gz</span></pre><p data-selectable-paragraph=\"\" id=\"2198\">Extract the zip.</p><pre><span data-selectable-paragraph=\"\" id=\"44cf\">tar -xzvf rtsp-simple-server_v0.16.0_linux_amd64.tar.gz</span></pre><p data-selectable-paragraph=\"\" id=\"b27d\">Get your machine’s ip address to expose the server on.</p><pre><span data-selectable-paragraph=\"\" id=\"bf49\">hostname -I</span></pre><p data-selectable-paragraph=\"\" id=\"c834\">Run the server exposing the service on your local ip address and port 554. You can theoretically chose another port if needed and it should work so long as it’s not already in use.</p><pre><span data-selectable-paragraph=\"\" id=\"98c3\">RTSP_RTSPADDRESS=192.168.X.X:554 ./rtsp-simple-server</span></pre><figure><div tabindex=\"0\" role=\"button\"><picture><source type=\"image/webp\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" srcset=\"https://miro.medium.com/v2/resize:fit:640/format:webp/1*4-CtXG14WzFe43AYTu3SYQ.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*4-CtXG14WzFe43AYTu3SYQ.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*4-CtXG14WzFe43AYTu3SYQ.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*4-CtXG14WzFe43AYTu3SYQ.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*4-CtXG14WzFe43AYTu3SYQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*4-CtXG14WzFe43AYTu3SYQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*4-CtXG14WzFe43AYTu3SYQ.png 1400w\"><source sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" srcset=\"https://miro.medium.com/v2/resize:fit:640/1*4-CtXG14WzFe43AYTu3SYQ.png 640w, https://miro.medium.com/v2/resize:fit:720/1*4-CtXG14WzFe43AYTu3SYQ.png 720w, https://miro.medium.com/v2/resize:fit:750/1*4-CtXG14WzFe43AYTu3SYQ.png 750w, https://miro.medium.com/v2/resize:fit:786/1*4-CtXG14WzFe43AYTu3SYQ.png 786w, https://miro.medium.com/v2/resize:fit:828/1*4-CtXG14WzFe43AYTu3SYQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*4-CtXG14WzFe43AYTu3SYQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*4-CtXG14WzFe43AYTu3SYQ.png 1400w\" data-testid=\"og\"><img src=\"https://miro.medium.com/v2/resize:fit:700/1*4-CtXG14WzFe43AYTu3SYQ.png\" role=\"presentation\" loading=\"lazy\" height=\"159\" width=\"700\" alt=\"\"></picture></div><figcaption data-selectable-paragraph=\"\">RTSP Server listening on port 554</figcaption></figure><p data-selectable-paragraph=\"\" id=\"5938\">So now we have an RTSP server but we need to direct our webcam output to the server.</p><p data-selectable-paragraph=\"\" id=\"227b\">Leaving the above server running. Execute the following command.</p><pre><span data-selectable-paragraph=\"\" id=\"1876\">sudo ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 -f rtsp -rtsp_transport tcp rtsp://192.168.XXX.XXX:554/mystream</span></pre><p data-selectable-paragraph=\"\" id=\"ab06\">You can tweak these settings like framerate and others.</p><p data-selectable-paragraph=\"\" id=\"dc2b\">The server should acknowledge the stream.</p><figure><div tabindex=\"0\" role=\"button\"><picture><source type=\"image/webp\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" srcset=\"https://miro.medium.com/v2/resize:fit:640/format:webp/1*PPh-lJXXut-QkOEPtK5B0g.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*PPh-lJXXut-QkOEPtK5B0g.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*PPh-lJXXut-QkOEPtK5B0g.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*PPh-lJXXut-QkOEPtK5B0g.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*PPh-lJXXut-QkOEPtK5B0g.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*PPh-lJXXut-QkOEPtK5B0g.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*PPh-lJXXut-QkOEPtK5B0g.png 1400w\"><source sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" srcset=\"https://miro.medium.com/v2/resize:fit:640/1*PPh-lJXXut-QkOEPtK5B0g.png 640w, https://miro.medium.com/v2/resize:fit:720/1*PPh-lJXXut-QkOEPtK5B0g.png 720w, https://miro.medium.com/v2/resize:fit:750/1*PPh-lJXXut-QkOEPtK5B0g.png 750w, https://miro.medium.com/v2/resize:fit:786/1*PPh-lJXXut-QkOEPtK5B0g.png 786w, https://miro.medium.com/v2/resize:fit:828/1*PPh-lJXXut-QkOEPtK5B0g.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*PPh-lJXXut-QkOEPtK5B0g.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*PPh-lJXXut-QkOEPtK5B0g.png 1400w\" data-testid=\"og\"><img src=\"https://miro.medium.com/v2/resize:fit:700/1*PPh-lJXXut-QkOEPtK5B0g.png\" role=\"presentation\" loading=\"lazy\" height=\"145\" width=\"700\" alt=\"\"></picture></div></figure><p data-selectable-paragraph=\"\" id=\"ef9e\">We now have a valid RTSP stream routing our web cam feed into.</p><p data-selectable-paragraph=\"\" id=\"3a31\">To utilize this stream in frigate we can configure the config.yml file to generate a camera entity with this URL.</p><figure><div tabindex=\"0\" role=\"button\"><picture><source type=\"image/webp\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" srcset=\"https://miro.medium.com/v2/resize:fit:640/format:webp/1*Jwt3qpJveqp_VUvRVataRQ.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*Jwt3qpJveqp_VUvRVataRQ.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*Jwt3qpJveqp_VUvRVataRQ.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*Jwt3qpJveqp_VUvRVataRQ.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*Jwt3qpJveqp_VUvRVataRQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*Jwt3qpJveqp_VUvRVataRQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*Jwt3qpJveqp_VUvRVataRQ.png 1400w\"><source sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px\" srcset=\"https://miro.medium.com/v2/resize:fit:640/1*Jwt3qpJveqp_VUvRVataRQ.png 640w, https://miro.medium.com/v2/resize:fit:720/1*Jwt3qpJveqp_VUvRVataRQ.png 720w, https://miro.medium.com/v2/resize:fit:750/1*Jwt3qpJveqp_VUvRVataRQ.png 750w, https://miro.medium.com/v2/resize:fit:786/1*Jwt3qpJveqp_VUvRVataRQ.png 786w, https://miro.medium.com/v2/resize:fit:828/1*Jwt3qpJveqp_VUvRVataRQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*Jwt3qpJveqp_VUvRVataRQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*Jwt3qpJveqp_VUvRVataRQ.png 1400w\" data-testid=\"og\"><img src=\"https://miro.medium.com/v2/resize:fit:700/1*Jwt3qpJveqp_VUvRVataRQ.png\" role=\"presentation\" loading=\"lazy\" height=\"233\" width=\"700\" alt=\"\"></picture></div><figcaption data-selectable-paragraph=\"\">Frigate config.yml referencing our RTSP stream.</figcaption></figure><p data-selectable-paragraph=\"\" id=\"0273\">Start your frigate instance.</p><figure><div><picture><source type=\"image/webp\" sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 640px\" srcset=\"https://miro.medium.com/v2/resize:fit:640/format:webp/1*CNMZQmT0ZNc91k3i3KmbmA.gif 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*CNMZQmT0ZNc91k3i3KmbmA.gif 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*CNMZQmT0ZNc91k3i3KmbmA.gif 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*CNMZQmT0ZNc91k3i3KmbmA.gif 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*CNMZQmT0ZNc91k3i3KmbmA.gif 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*CNMZQmT0ZNc91k3i3KmbmA.gif 1100w, https://miro.medium.com/v2/resize:fit:1280/format:webp/1*CNMZQmT0ZNc91k3i3KmbmA.gif 1280w\"><source sizes=\"(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 640px\" srcset=\"https://miro.medium.com/v2/resize:fit:640/1*CNMZQmT0ZNc91k3i3KmbmA.gif 640w, https://miro.medium.com/v2/resize:fit:720/1*CNMZQmT0ZNc91k3i3KmbmA.gif 720w, https://miro.medium.com/v2/resize:fit:750/1*CNMZQmT0ZNc91k3i3KmbmA.gif 750w, https://miro.medium.com/v2/resize:fit:786/1*CNMZQmT0ZNc91k3i3KmbmA.gif 786w, https://miro.medium.com/v2/resize:fit:828/1*CNMZQmT0ZNc91k3i3KmbmA.gif 828w, https://miro.medium.com/v2/resize:fit:1100/1*CNMZQmT0ZNc91k3i3KmbmA.gif 1100w, https://miro.medium.com/v2/resize:fit:1280/1*CNMZQmT0ZNc91k3i3KmbmA.gif 1280w\" data-testid=\"og\"><img src=\"https://miro.medium.com/v2/resize:fit:640/1*CNMZQmT0ZNc91k3i3KmbmA.gif\" role=\"presentation\" loading=\"lazy\" height=\"348\" width=\"640\" alt=\"\"></picture></div><figcaption data-selectable-paragraph=\"\">Frigate Running from a generic webcam</figcaption></figure><p data-selectable-paragraph=\"\" id=\"8844\">Voila!</p><h2 data-selectable-paragraph=\"\" id=\"cea5\">Final Thoughts</h2><p data-selectable-paragraph=\"\" id=\"784f\">I’m always happy to answer questions or discuss ideas proposed in my articles. So don’t hesitate to reach out to me! 🙌 Also, make sure to <a href=\"https://medium.com/subscribe/@timothydmoody\" rel=\"noopener\"><strong>subscribe</strong></a> or follow to not miss out on new articles.</p><p data-selectable-paragraph=\"\" id=\"3209\"><strong>YouTube</strong>: <a rel=\"noopener ugc nofollow\" href=\"https://www.youtube.com/@DataSlayerMedia\">https://www.youtube.com/@DataSlayerMedia</a></p><p data-selectable-paragraph=\"\" id=\"d034\"><strong>Patreon:</strong> <a rel=\"noopener ugc nofollow\" href=\"https://www.patreon.com/DataSlayer374\">https://www.patreon.com/DataSlayer374</a></p><p data-selectable-paragraph=\"\" id=\"9d62\"><strong>GitHub:</strong> <a rel=\"noopener ugc nofollow\" href=\"https://github.com/dataslayermedia\">https://github.com/dataslayermedia</a></p></div></div>","textContent":"Transform Your WebCam into an IP Camera (for Frigate)Frigate Mission Control Center Performing “Person Detection”Full Video Tutorial from @DataSlayerMediaOne of the configuration inputs for frigate is a valid RTSP stream URL. Unfortunately off-the-shelf web cams don’t generate RTSP streams so if we want to use a web cam with our Frigate system we’ll have to generate a valid stream for the service to hook into.Download RTSP Simple ServerDownload the library.wget https://github.com/aler9/rtsp-simple-server/releases/download/v0.16.0/rtsp-simple-server_v0.16.0_linux_amd64.tar.gzExtract the zip.tar -xzvf rtsp-simple-server_v0.16.0_linux_amd64.tar.gzGet your machine’s ip address to expose the server on.hostname -IRun the server exposing the service on your local ip address and port 554. You can theoretically chose another port if needed and it should work so long as it’s not already in use.RTSP_RTSPADDRESS=192.168.X.X:554 ./rtsp-simple-serverRTSP Server listening on port 554So now we have an RTSP server but we need to direct our webcam output to the server.Leaving the above server running. Execute the following command.sudo ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 -f rtsp -rtsp_transport tcp rtsp://192.168.XXX.XXX:554/mystreamYou can tweak these settings like framerate and others.The server should acknowledge the stream.We now have a valid RTSP stream routing our web cam feed into.To utilize this stream in frigate we can configure the config.yml file to generate a camera entity with this URL.Frigate config.yml referencing our RTSP stream.Start your frigate instance.Frigate Running from a generic webcamVoila!Final ThoughtsI’m always happy to answer questions or discuss ideas proposed in my articles. So don’t hesitate to reach out to me! 🙌 Also, make sure to subscribe or follow to not miss out on new articles.YouTube: https://www.youtube.com/@DataSlayerMediaPatreon: https://www.patreon.com/DataSlayer374GitHub: https://github.com/dataslayermedia","length":1994,"excerpt":"","siteName":null} |