使用Python我尝试从USB摄像头上传OpenCV帧,并使用RTSP协议,实时流式传输以供任何客户端访问(Web浏览器rtsp:// ip:port或VLC播放器) 。经过几天的搜索,我仍然无法找到任何有用的东西,我也不知道如何做到这一点。
1)rtsp流应该接收的格式是什么?是图像还是字符串还是??? VLC播放器甚至采用什么格式?这是我的主要问题。
2)我在这里读到
http://www.informit.com/articles/article.aspx?p=169578&seqNum=3 和https://cardinalpeak.com/blog/the-many-ways-to-stream-video-using-rtp-and-rtsp/
您可以将TCP或UDP用于RTSP流,但我在这里使用UDP。这会在流式传输帧时引起任何问题吗?
我这里有一些代码可以让我从USB摄像头中捕捉帧
import cv2
import socket
UDP_IP = "127.0.0.1"
UDP_PORT = 5000
cap = cv2.VideoCapture(1)
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #udp
while 1:
ret, frame = cap.read()
#========= What should I do here?
FORMAT_OF_FRAME = What is the format that I should change the frame into?
sock.sendto(FORMAT_OF_FRAME,(UDP_IP, UDP_PORT))
cap.release()
之后,我应该能够通过使用VLC播放器和运行
来查看帧RTSP://127.0.0.1:5000
或打开具有相同网址的网络浏览器
答案 0 :(得分:0)
您不能简单地打开套接字,RTSP是一个完全正常工作的协议,如果您想使用原始套接字,您应该实现该协议。你真的需要一个python程序吗? ffmpeg(参见streaming guide)和gstreamer都提供了命令行工具,可以通过rtsp从输入设备流式传输。