当前位置: 首页 > news >正文

海康摄像头 + 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()

四、运行程序

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

http://www.lryc.cn/news/542595.html

相关文章:

  • 抖音视频如何下载保存去水印
  • 【鸿蒙开发】第三十九章 LazyForEach:数据懒加载
  • HTTP-
  • 创建型模式 - 原型模式 (Prototype Pattern)
  • Android 8.0 (API 26) 对广播机制做了哪些变化
  • Unity汽车笔记
  • html中rel、href、src、url的区别
  • 【idea问题排查技巧】
  • SQL: DDL,DML,DCL,DTL,TCL,
  • WordPress R+L Carrier Edition sql注入漏洞复现(CVE-2024-13481)(附脚本)
  • DeepSeek基础之机器学习
  • QSplashScreen --软件启动前的交互
  • Python 循环嵌套
  • 性能测试项目实战
  • Web自动化之Selenium实战案例2:东方财富网股吧评论爬取
  • 【Java八股文】09-计算机操作系统面试篇
  • 【Redis】在Java中以及Spring环境下操作Redis
  • MFC—加法器
  • SpringBoot五:Web开发
  • 电机控制的空间矢量调制 (SVPWM)
  • jupyterhub on k8s 配置用户名密码 简单版
  • c++笔试准备
  • 【Docker】如何在Linux、Windows、MacOS中安装Docker
  • 欧拉回路与哈密尔顿回路: Fleury算法与Hierholzer 算法(C++)
  • JavaSE学习笔记26-集合(Collection)
  • 本地开发用ASP.NET Core Web API项目创建及测试
  • Redis——用户签到BitMap,UV统计
  • 一文详解U盘启动UEFI/Legacy方式以及GPT/MBR关系
  • Unity Shader 学习13:屏幕后处理 - 使用高斯模糊的Bloom辉光效果
  • 小迪安全-24天-文件管理,显示上传,黑白名单,访问控制