fmo*_*ter 11 python video rtsp video-streaming
我最近设置了一个Raspberry Pi相机,并通过RTSP流式传输帧.虽然它可能不是完全必要的,但这里是我使用广播视频的命令:
raspivid -o - -t 0 -w 1280 -h 800 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/output.h264}' :demux=h264
Run Code Online (Sandbox Code Playgroud)
这完美地传输了视频.
我现在要做的是用Python解析这个流并分别读取每个帧.我想做一些运动检测用于监视目的.
我完全迷失在这个任务的开始.谁能指点我一个好的教程?如果这不能通过Python实现,我可以使用哪些工具/语言来实现这一目标?
Sam*_*adi 11
一个hacky解决方案,但你可以使用VLC python绑定(你可以安装它pip install python-vlc)并播放流:
import vlc
player=vlc.MediaPlayer('rtsp://:8554/output.h264')
player.play()
Run Code Online (Sandbox Code Playgroud)
然后每隔一秒拍一次快照:
while 1:
time.sleep(1)
player.video_take_snapshot(0, '.snapshot.tmp.png', 0, 0)
Run Code Online (Sandbox Code Playgroud)
然后您可以使用SimpleCV或其他东西进行处理(只需将图像文件加载'.snapshot.tmp.png'到您的处理库中).
小智 7
使用 opencv
video=cv2.VideoCapture("rtsp url")
Run Code Online (Sandbox Code Playgroud)
然后你可以捕获帧。阅读 openCV 文档访问:https : //docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_video_display/py_video_display.html
小智 7
使用“ depu”列出的相同方法对我来说非常合适。我只是用实际摄像机的“ RTSP URL”替换了“视频文件”。以下示例适用于AXIS IP摄像机。(在早期版本的OpenCV中暂时无法使用)在OpenCV 3.4.1 Windows 10上有效
import cv2
cap = cv2.VideoCapture("rtsp://root:pass@192.168.0.91:554/axis-media/media.amp")
while(cap.isOpened()):
ret, frame = cap.read()
cv2.imshow('frame', frame)
if cv2.waitKey(20) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
根据流类型,您可能可以查看此项目以获取一些想法。
https://code.google.com/p/python-mjpeg-over-rtsp-client/
如果你想成为超级专业人士,你可以使用http://opencv.org/(我相信可用的 Python 模块)之类的东西来处理运动检测。
| 归档时间: |
|
| 查看次数: |
44754 次 |
| 最近记录: |