本节介绍了Python完成直播推流作用,主要是经过opencv读取视频对视频分割为帧,本文经过实例代码讲解的非常具体
做任何事情都有一定的思路,写代码更是如此,直播推流的整体思路如下:
opencv读取视频
将视频分割为帧
对每一帧进行处理(opencv模板匹配)
在将此帧写入pipe管道
利用ffmpeg进行推流直播
在处理本地视频时,并没有延时卡顿的情况。但对实时视频流的时候,呈现了卡顿延时的作用。在一顿度娘操作之后,采取了多线程的办法。
opencv读取视频
#一个莫名其妙的python群:740322234
def run_opencv_camera():
video_stream_path = 0
# 当video_stream_path = 0 会开启计算机 默认摄像头 也可以为本地视频文件的路径
cap = cv2.VideoCapture(video_stream_path)
while cap.isOpened():
is_opened, frame = cap.read()
cv2.imshow('frame', frame)
cv2.waitKey(1)
cap.release()
OpenCV模板匹配
模板匹配就是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中每一个可能的位置,比较各处与模板是否相似,当相似度足够高时,就认为找到了目标。
#一个莫名其妙的python群:740322234
def template_match(img_rgb):
# 灰度转换
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
# 模板匹配
res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
# 设置阈值
threshold = 0.8
loc = np.where(res >= threshold)
if len(loc[0]):
# 这里直接固定区域
cv2.rectangle(img_rgb, (155, 515), (1810, 820), (