我正在尝试使用Python从USB摄像头上传OpenCV帧,并使用RTSP协议实时传输,以供任何客户端(web浏览器rtsp://ip:port或VLC player)访问。经过几天的搜索,我仍然找不到任何可以帮助我的东西,我也不知道如何才能做到这一点。
1) rtsp流应该接收的格式是什么?它是图像还是字符串,还是?VLC player到底采用什么格式?这是我的主要问题。
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/
您可以对RTSP流使用TCP或UDP,但我这里使用的是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
或使用相同的URL打开web浏览器
发布于 2018-04-17 23:44:07
你不能简单地打开一个套接字,RTSP是一个完全工作的协议,如果你想使用一个原始套接字,你应该实现它。你真的需要python程序吗?ffmpeg (参见streaming guide)和gstreamer都提供了命令行工具,可以通过rtsp从输入设备进行流式传输。
https://stackoverflow.com/questions/49839805
复制相似问题