文章最后更新时间为:2021 年 07 月 23 日 10:03:28 Loading... # OBS下载 官方下载: https://obsproject.com/zh-cn/download # 利用docker搭建推流服务器 先拉取docker镜像 > docker pull alfg/nginx-rtmp 运行容器 > docker run -it -p 1935:1935 -p 8080:80 --rm nginx-rtmp 外部端口可自定义 记得在防火墙放行这两个端口 # OBS推流设置  填好自己服务器的地址(注意不要填错) > rtmp://ip:1935/stream/  右下角有个绿色的框表示推流成功 再访问 > http://ip:8080/static  有当前rtmp服务器的推流信息 # 观看rtmp推流的视频 python脚本 ```python import threading import time import cv2 import win32con import win32gui class Producer(threading.Thread): """docstring for Producer""" def __init__(self, rtmp_str): super(Producer, self).__init__() self.rtmp_str = rtmp_str # 通过cv2中的类获取视频流操作对象cap self.cap = cv2.VideoCapture(self.rtmp_str) # 调用cv2方法获取cap的视频帧(帧:每秒多少张图片) # fps = self.cap.get(cv2.CAP_PROP_FPS) self.fps = self.cap.get(cv2.CAP_PROP_FPS) print(self.fps) # 获取cap视频流的每帧大小 self.width = int(self.cap.get(cv2.CAP_PROP_FRAME_WIDTH)) self.height = int(self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) self.size = (self.width, self.height) print(self.size) # 定义编码格式mpge-4 self.fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', '2') # 定义视频文件输入对象 self.outVideo = cv2.VideoWriter('saveDir1.avi', self.fourcc, self.fps, self.size) def run(self): print('in producer') ret, image = self.cap.read() while ret: # if ret == True: self.outVideo.write(image) cv2.imshow('video', image) cv2.waitKey(int(1000 / int(self.fps))) # 延迟 if cv2.waitKey(1) & 0xFF == ord('q'): self.outVideo.release() self.cap.release() cv2.destroyAllWindows() break ret, image = self.cap.read() if __name__ == '__main__': print('run program') rtmp_str = 'rtmp://ip:1935/stream' # 修改为自己的rtmp地址 # rtmp_str = 'rtmp://media3.scctv.net/live/scctv_800' # CCTV # rtmp_str = 'rtmp://58.200.131.2:1935/livetv/hunantv' # 湖南卫视 producer = Producer(rtmp_str) # 开个线程 producer.start() ```  成功显示,但是有一定延迟,而且吃服务器带宽和配置。 Last modification:July 23, 2021 © Allow specification reprint Support Appreciate the author Like 0 如果觉得我的文章对你有用,请随意赞赏
4 comments
你文章页面怎么了?
终于换主题了Joe是真的不爱看
我觉得还行啊
之前就买了handsome一直没用
:@(鼓掌)