欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 海康摄像头 + M7s(Monibuca) + FFmpeg + Python实现多个网络摄像头视频流推流

海康摄像头 + M7s(Monibuca) + FFmpeg + Python实现多个网络摄像头视频流推流

2025/6/20 16:34:18 来源:https://blog.csdn.net/weixin_43366149/article/details/145848381  浏览:    关键词:海康摄像头 + M7s(Monibuca) + FFmpeg + Python实现多个网络摄像头视频流推流

最近在研究流媒体服务器时,我注意到了一款开源软件——M7s。按照官网的指南部署完成后,我开始进行测试,发现单视频流推送非常顺利,没有任何问题。然而,当我尝试进行多视频流推送时,却发现网上的相关教程寥寥无几,即便找到了一些,也大多与我的需求不完全匹配。面对这种情况,我决定自己动手编写代码来实现多视频流的推送。这样不仅能精准满足我的需求,也能在这个过程中加深对流媒体技术的理解。希望这段探索能为我的项目带来新的突破。
由于python开发脚本方便,便选择了python。视频处理属于CPU密集型任务,使用多进程(multiprocessing)更加匹配任务需求。

一、必要的包

import subprocess
import multiprocessing

subprocess 负责调用ffmpeg的shell命令
multiprocessing 负责调用CPU开启多进程,避开GIL锁

二、monibuca视频流格式

根据官网的格式要求,进行ffmpeg命令编写

ffmpeg -i {input_url} -c:v libx264 -c:a aac -f rtsp {output_url}

input_url为你的视频流地址,我的是海康网络摄像头,格式是

rtsp://admin:pwd@摄像头ip/h264/ch1/sub/av_stream

output_url地址按照monibuca官网要求格式为

rtsp://localhost/app_name/ip_name}

app_name 和 ip_name 根据自己要求设置,不能重复

三、核心代码

subprocess部分

def push_stream(ip_address,srs_server,app_name,i):command = f"ffmpeg -i {input_url} -c:v libx264 -c:a aac -f rtsp {output_url}"process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)    stdout, stderr = process.communicate()

multiprocessing部分

if __name__ == "__main__":processes = []for i in range(0,len(ip_info)):ip_address = f"{ip_info[i]}"p = multiprocessing.Process(target=push_stream, args=(ip_address,srs_server,app_name,i))processes.append(p)p.start()

四、运行程序

成功,我这只是使用了四个测试摄像头
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词