riscritto per VLC

This commit is contained in:
Gianluca Romito
2021-03-08 16:19:11 +01:00
parent 55ec77508b
commit 1b2a690367
4 changed files with 72 additions and 46 deletions

View File

@@ -1,11 +1,30 @@
Prerequisito
Installare VLC (testato con versione 3.0.6)
installare python (3.9.x va bene, sviluppato sulla 3.9.2)
istruzioni su come installare:
creare una cartella e installare il virtualenv (es. C:\Users\User\Documents\python\webcam>"c:\Program Files\Python39\python.exe" -m venv env)
attivare il virtualenv e installare i prerequisiti:
C:\Users\User\Documents\python\webcam>env\Scripts\activate.bat
C:\Users\User\Documents\python\webcam>pip install -r requirements.txt
copiare lo script nella dir "webcam"
Per farla partire allo startup
Windows logo key + R, scrivi shell:startup
creare un icona con:
command line C:\Users\User\Documents\python\webcam\env\Scripts\python.exe -m flask run --host=0.0.0.0
start in
C:\Users\User\Documents\python\webcam\
Wwebhook per telecamera. Progetto fatto per Angelo.
in pratica tramite ESP8266 (easyesp) se uno preme un bottone, sul PC esce in primo piano una finestra che mostra una IP cam.
Il sito con lo schema
https://community.blynk.cc/t/problem-using-physical-4-buttons-using-nodemcu-esp8266-to-switch-relays/36361/3
La schermata non sempre viene in primo piano. Per questo usare https://efotinis.neocities.org/deskpins/
Sembra che opencv non gestisca correttamente questa cosa (fatto varie prove)
Rule su ESP:
----------------------
@@ -15,9 +34,3 @@ On Bottone#State=1 do
----------------------
per la config di "bottone" vedi png.
Per lanciarlo in prod:
python -m flask run --host=0.0.0.0
python 3.9.2

42
app.py
View File

@@ -1,42 +1,14 @@
import os
import cv2
from flask import Flask, request, Response
import win32gui
import win32con
import subprocess
finestra = 0 # per capire se la finestra è gia aperta...
# http://webcam-garage.romito.net/videostream.cgi
# http://admin:admin@192.168.123.1/cgi-bin/videostream.cgi?user=admin&pwd=admin
# per l'always on top https://efotinis.neocities.org/deskpins/
#print("Before URL")
def openwebcam():
global finestra
if finestra == 0:
finestra = 1
cap = cv2.VideoCapture('http://admin:smart24@webcam-garage.romito.net/videostream.cgi')
WindowName="Main View"
ret, frame = cap.read()
cv2.imshow(WindowName,frame)
text_color = (0,0,0)
while True:
ret, frame = cap.read()
cv2.putText(frame, "Premi q per uscire", (20,15), cv2.FONT_HERSHEY_PLAIN, 1.0, text_color, thickness=2)
cv2.imshow(WindowName,frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
finestra = 0
def playstream():
subprocess.run(["c:\\Program Files\\VideoLAN\\VLC\\vlc.exe","--video-on-top", "--zoom=0.5", "rtsp://admin:admin@192.168.123.199/0"], stdout=subprocess.DEVNULL)
app = Flask(__name__)
@app.route('/webhook', methods=['GET'])
def respond():
openwebcam()
playstream()
return 'Visualizzazione avviata'

44
appold.py Normal file
View File

@@ -0,0 +1,44 @@
import os
import cv2
from flask import Flask, request, Response
import win32gui
import win32con
finestra = 0 # per capire se la finestra è gia aperta...
# http://webcam-garage.romito.net/videostream.cgi
# http://admin:admin@192.168.123.1/cgi-bin/videostream.cgi?user=admin&pwd=admin
# per l'always on top https://efotinis.neocities.org/deskpins/
def openwebcam():
global cap
global finestra
if finestra == 0:
finestra = 1
#cap = cv2.VideoCapture('http://xxx:yyy@indirizzocam/videostream.cgi')
#cap = cv2.VideoCapture('http://admin:admin@192.168.123.199')
cap = cv2.VideoCapture('rtsp://admin:admin@192.168.123.199/0')
WindowName="Telecamera"
ret, frame = cap.read()
frame = cv2.resize(frame, (224, 224))
cv2.imshow(WindowName,frame)
text_color = (255,255,255)
while True:
ret, frame = cap.read()
frame = cv2.resize(frame, (int(1920/3), int(1080/3))) # ridimensiona l'immagine, commentare per default
cv2.putText(frame, "Premi q per uscire", (20,15), cv2.FONT_HERSHEY_PLAIN, 1.0, text_color, thickness=2)
cv2.imshow(WindowName,frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
finestra = 0
app = Flask(__name__)
@app.route('/webhook', methods=['GET'])
def respond():
openwebcam()

View File

@@ -3,7 +3,4 @@ Flask==1.1.2
itsdangerous==1.1.0
Jinja2==2.11.3
MarkupSafe==1.1.1
numpy==1.20.1
opencv-python==4.5.1.48
pywin32==300
Werkzeug==1.0.1