はじめに
AtomCam2がRTSP対応したので、Streamlitで公開しちゃおう
開発環境
- Windows 10 PC
- Python 3.6
- streamlit
- opencv-python
- pillow
- AtomCam2 (ファームウェア:4.58.0.73)
実装
1.AtomCam2のRTSP通信設定をします
おおお!ついにATOMCamが公式にRTSP対応だぞ!!(現在はベータ版なのでtestflightが必要)
— ひろみつ (@bakueikozo) October 8, 2021
とりあえず動くね。パスワードとユーザー名が内部で生成されるのWyzeと同じ。メモリ転送もwyzeと同じshmなのでそっちから持って来れたのね。おめでとう。 pic.twitter.com/2n0LMfeFue
2.streamlitをインストールします
pip install streamlit
streamlit hello
Ctrl+Cで中断します
3.下記コードを作成し実行します。
streaming.py
import cv2
import streamlit as st
import time
from PIL import Image
st.markdown("# Gachimoto AtomCam2 Live")
cap = cv2.VideoCapture('rtsp://xxxx:yyyy@zzz.zzz.zzz.zzz/live')
_, frame = cap.read()
height, width = frame.shape[:2]
print(height, width) # SD : 1080, 1920
image_loc = st.empty()
while(True):
_, frame = cap.read()
frame = cv2.resize(frame, ((int)(width/4), (int)(height/4)))
frame = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
image_loc.image(frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
streaming.py
streamlit run streaming.py
ngrokで外部公開
ngrokによってローカルサーバーを外部に公開することができます
ngrok.exe authtoken XXXXXXXXXXXXXXXXXXXX_XXXXXXXXXXXXXXXXXXXX
ngrok.exe http 8501
ドメインお持ちの方
ngrok.exe http -subdomain=name 8501
遠隔で見えるわーい
参考