一、准备工作
1、开发环境
Ubuntu 18.04
2、安装python
sudo apt-get install python
3、安装pip
sudo apt-get install python-pip
4、安装opencv
pip install opencv-contrib-python
5、安装推流工具ffmpeg
sudo apt-get install ffmpeg
6、安装RTMP服务器
参考https://blog.csdn.net/zong596568821xp/article/details/92790502
7、RTSP测试视频流来源
可以采用海康大华等网络摄像头,都有RTSP流。如果没有可以下下载以下APP在安卓手机上模拟网络摄像头:https://app.mi.com/details?id=com.shenyaocn.android.WebCam
8、安装VLC播放器
sudo apt-get install vlc
9、安装cmkae
sudo apt-get install cmake
二、开始测试
1、编辑以下python代码,另存为rtsp2rtmp.py文件:
import cv2
import subprocess
rtsp = "rtsp://admin:admin@192.168.0.104:8554/live"
rtmp = 'rtmp://localhost:1935/mylive/test'
#
cap = cv2.VideoCapture(rtsp)
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
sizeStr = str(size[0]) + 'x' + str(size[1])
command = ['ffmpeg',
'-y', '-an',
'-f', 'rawvideo',
'-vcodec','rawvideo',
'-pix_fmt', 'bgr24',
'-s', sizeStr,
'-r', '25',
'-i', '-',
'-c:v', 'libx264',
'-pix_fmt', 'yuv420p',
'-preset', 'ultrafast',
'-f', 'flv',
rtmp]
pipe = subprocess.Popen(command
, shell=False
, stdin=subprocess.PIPE
)
while cap.isOpened():
success,frame = cap.read()
if success:
'''
ai process
'''
cv2.rectangle(frame,(240, 100), (480, 375),color=(0,0,255),thickness=10)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
pipe.stdin.write(frame.tostring())
cap.release()
pipe.terminate()
脚本功能是打开摄像头并画了一个框,再推流到RTMP服务顺路,运行脚本:
python rtsp2rtmp.py
看到打印码流速度即为推流成功,可打开VLC播放(播放网络流地址):
rtmp://localhost:1935/mylive/test
测试效果如下: