目录

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

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

由于python开发脚本方便,便选择了python。视频处理属于CPU密集型任务,使用多进程(multiprocessing)更加匹配任务需求。

一、必要的包

python 复制代码
import subprocess
import multiprocessing

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

二、monibuca视频流格式

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

shell 复制代码
ffmpeg -i {input_url} -c:v libx264 -c:a aac -f rtsp {output_url}

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

powershell 复制代码
rtsp://admin:pwd@摄像头ip/h264/ch1/sub/av_stream

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

powershell 复制代码
rtsp://localhost/app_name/ip_name}

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

三、核心代码

subprocess部分

python 复制代码
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部分

python 复制代码
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()

四、运行程序

成功,我这只是使用了四个测试摄像头

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
java1234_小锋13 分钟前
一周学会Pandas2 Python数据处理与分析-编写Pandas2 HelloWord项目
python·pandas·python数据分析·pandas2
凯强同学1 小时前
第十四届蓝桥杯大赛软件赛省赛Python 大学 C 组:7.翻转
python·算法·蓝桥杯
sqmeeting2 小时前
Linux NUC小主机化身视频会议服务器: 技术优势与部署实战
linux·服务器·windows·音视频·实时音视频
xxc_my3 小时前
LVS高可用负载均衡
服务器·负载均衡·lvs·高可用
Naomi5213 小时前
自定义汇编语言(Custom Assembly Language) 和 Unix & Git
服务器·开发语言·git·unix
独好紫罗兰4 小时前
洛谷题单3-P1217 [USACO1.5] 回文质数 Prime Palindromes-python-流程图重构
开发语言·python·算法
1alisa4 小时前
Pycharm v2024.3.4 Windows Python开发工具
ide·python·pycharm
H1346948904 小时前
企业服务器备份软件,企业服务器备份的方法有哪些?
运维·服务器·负载均衡
独好紫罗兰4 小时前
洛谷题单2-P1424 小鱼的航程(改进版)-python-流程图重构
开发语言·python·算法
skywalk81634 小时前
OpenRouter开源的AI大模型路由工具,统一API调用
服务器·前端·人工智能·openrouter