opencv安装
本人是在windows下用的python开发环境,通过pip install opencv-python 进行安装,这里就不细说,如果需要在linux环境下安装,需要下载opencv源码进行编译安装
基于nginx的rtmp流服务器安装
GitHub - arut/nginx-rtmp-module: NGINX-based Media Streaming Server
具体步骤可以查看nginx的rtmp流插件github官网进行安装配置,之前的文章中我也详细说明了如何手动安装nginx及https模块,这里的安装方式类似,增加了nginx-rtmp-module模块,如下图
配置nginx流服务器
在nginx中配置rtmp相关流节点,如下所示,端口可以自行修改,完成配置后推流的地址就是
http://你的IP:1936/hls ,端口1936 和 hls名字可以自定义
rtmp {
server {
listen 1936; #监听的端口
chunk_size 4000;
application hls { #rtmp推流请求路径
live on;
}
}
}
编写python代码完成摄像头实时推流
import cv2
import subprocess
# 打开摄像头
cap = cv2.VideoCapture(0)
# 设置摄像头分辨率
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
cap.set(cv2.CAP_PROP_BUFFERSIZE, 2)
fps = cap.get(cv2.CAP_PROP_FPS)
# 定义视频编码器
fourcc = cv2.VideoWriter_fourcc(*'X264')
# 创建FFmpeg命令行参数
# 注意如果是在
ffmpeg_cmd = ['D:\\SOFTWARE\\ffmpeg-master-latest-win64-gpl\\bin\\ffmpeg.exe', # ffmpeg安装路径
'-y', # 覆盖已存在的文件
'-f', 'rawvideo',
'-pixel_format', 'bgr24',
'-video_size', '640x480',
'-i', '-', # 从标准输入读取数据
'-c:v', 'libx264', #使用x264编码器
'-preset', 'ultrafast',
'-tune', 'zerolatency',#零延迟
'-pix_fmt', 'yuv420p',
'-f', 'flv',
'rtmp://你的IP:端口/hls']
# 启动FFmpeg进程
ffmepg_process = subprocess.Popen(ffmpeg_cmd, stdin=subprocess.PIPE)
# 开始采集和推流
while True:
# 采集一帧图像
ret, frame = cap.read()
if ret:
# 通过FFmpeg编码和推流
ffmepg_process.stdin.write(frame.tobytes())
# 停止FFmpeg进程并释放资源
ffmepg_process.stdin.close()
ffmepg_process.wait()
cap.release()
收流测试
ffplay -i rtmp://你的IP:1936/hls
命令行输入上述命令后,等待一会儿会出现一个视频窗口