CV: Camera->RTMP
This commit is contained in:
parent
afcda27417
commit
813b58a4b0
42
projects/CV/CapToRTMP/__main__.py
Normal file
42
projects/CV/CapToRTMP/__main__.py
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
import subprocess
|
||||||
|
import cv2
|
||||||
|
rtmp_url = "rtmp://127.0.0.1:1935/stream/pupils_trace"
|
||||||
|
|
||||||
|
# In my mac webcamera is 0, also you can set a video file name instead, for example "/home/user/demo.mp4"
|
||||||
|
path = 0
|
||||||
|
cap = cv2.VideoCapture(path)
|
||||||
|
|
||||||
|
# gather video info to ffmpeg
|
||||||
|
fps = int(cap.get(cv2.CAP_PROP_FPS))
|
||||||
|
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
|
||||||
|
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
|
||||||
|
|
||||||
|
# command and params for ffmpeg
|
||||||
|
command = ['ffmpeg',
|
||||||
|
'-y',
|
||||||
|
'-f', 'rawvideo',
|
||||||
|
'-vcodec', 'rawvideo',
|
||||||
|
'-pix_fmt', 'bgr24',
|
||||||
|
'-s', "{}x{}".format(width, height),
|
||||||
|
'-r', str(fps),
|
||||||
|
'-i', '-',
|
||||||
|
'-c:v', 'libx264',
|
||||||
|
'-pix_fmt', 'yuv420p',
|
||||||
|
'-preset', 'ultrafast',
|
||||||
|
'-f', 'flv',
|
||||||
|
rtmp_url]
|
||||||
|
|
||||||
|
# using subprocess and pipe to fetch frame data
|
||||||
|
p = subprocess.Popen(command, stdin=subprocess.PIPE)
|
||||||
|
|
||||||
|
|
||||||
|
while cap.isOpened():
|
||||||
|
ret, frame = cap.read()
|
||||||
|
if not ret:
|
||||||
|
print("frame read failed")
|
||||||
|
break
|
||||||
|
|
||||||
|
# YOUR CODE FOR PROCESSING FRAME HERE
|
||||||
|
|
||||||
|
# write to pipe
|
||||||
|
p.stdin.write(frame.tobytes())
|
Loading…
Reference in New Issue
Block a user