想要通过RTSP往opencv的接口中推流,然后做一下yolo的推理等练习,本篇主要记录如何搭建RTSP推流服务器,本篇的环境是Windows WSL2,当然也可以在Linux PC中搭建,方法一致,感兴趣的小伙伴可以试试。
博主的环境信息如下:
查阅资料,一般都是通过live555作为推流服务器。
前往官网,下载最新版本的live555安装包。
live555官网
wget http://www.live555.com/liveMedia/public/live.2023.07.24.tar.gz
解压压缩包:
tar -xvf live.2023.07.24.tar.gz
编译源码:
cd live
./genMakefiles linux-64bit
make
发现编译失败:
尝试解决编译问题,但仍无法编译通过。
openrtsp 2023.06.16 build issue #45
于是,放弃最新版本,下载历史版本,在下面的网页中找到live.2021.11.23.tar.gz这个版本,并下载。
live555的历史版本
按照前面的方法,解压、编译:
编译OK。
查看/mediaServer/路径下live555MediaServer是否被编译出来:
下载测试视频文件:
当然,用其他的视频文件也可以。
ffmpeg -i test.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 test.264
将格式转换后的视频文件拷贝到/mediaServer/路径下:
./live555MediaServer
可以看到,服务端已经启动,连接服务端的URL是:rtsp://192.168.181.1:8554/,我们拷进去的视屏文件名字是test.264,那这里的就是test.264。
至此,推流服务端的准备工作都已完成。
现在有了服务端,必须要有客户端来验证,所以需要用到VLC,来验证推流功能是否正常。
前往VLC官网下载Windows版本的VLC:
至此,live555搭建的RTSP推流服务器搭建成功。
在Windows上准备接收程序:
import numpy as np
import cv2
# cap = cv2.VideoCapture(1)
cap = cv2.VideoCapture("rtsp://192.168.181.1:8554/test.264")
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
运行接收程序:
python untitled.py
【1】Ubuntu用live555快速搭建一个RTSP视频流服务器