GB28181系列三:GB28181流媒体服务器ZLMediaKit

        我的音视频/流媒体开源项目(github)

        GB28181系列目录

目录

一、ZLMediaKit介绍

二、 ZLMediaKit安装、运行(Ubuntu)

1、安装

2、运行

3、配置

三、ZLMediaKit使用


一、ZLMediaKit介绍

        ZLMediaKit是一个基于C++11的高性能运营级流媒体服务框架,项目地址:https://github.com/ZLMediaKit/ZLMediaKit

        ZLMediaKit支持多种协议转发,入下图所示(摘自ZLMediaKit项目):

GB28181的RTP推流支持如下功能:

  • 支持UDP/TCP RTP(PS/TS/ES)推流服务器,可以转换成RTSP/RTMP/HLS等协议
  • 支持RTSP/RTMP/HLS等协议转rtp推流客户端,支持TCP/UDP模式,提供相应restful api,支持主动被动方式
  • 支持H264/H265/AAC/G711/OPUS编码
  • 支持es/ps/ts/ehome rtp推流
  • 支持es/ps rtp转推
  • 支持GB28181主动拉流模式
  • 支持双向语音对讲
  • 支持多轨道模式

二、 ZLMediaKit安装、运行(Ubuntu)

1、安装

#国内用户推荐从同步镜像网站gitee下载 
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --initsudo apt-get install build-essentialsudo apt-get install cmake#除了openssl,其他其实都可以不安装
sudo apt-get install libssl-dev
sudo apt-get install libsdl-dev
sudo apt-get install libavcodec-dev
sudo apt-get install libavutil-dev
sudo apt-get install ffmpegmkdir build
cd build
#macOS下可能需要这样指定openss路径:cmake .. -DOPENSSL_ROOT_DIR=/usr/local/Cellar/openssl/1.0.2j/
cmake ..
make -j4

2、运行

cd ZLMediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#以守护进程模式启动
./MediaServer -d &

3、配置

        配置文件:ZLMediaKit/release/linux/Debug/config.ini

        各个配置项的含义参考项目wiki中的说明。

三、ZLMediaKit使用

        ZLMediaKit的HTTP API是一组通过HTTP协议访问的接口,用于控制和管理ZLMediaKit流媒体服务器的功能和状态。通过以下访问可查看api列表:

curl http://127.0.0.1/index/api/getApiList?secret=xxxxxxxxxxxsecret在配置文件中获取:ZLMediaKit/release/linux/Debug/config.ini

        ZLMediaKit支持GB28181的 ps-rtp推流,支持的编码格式分别为h264/h265/aac/g711/opus。 在收到GB28181推流后,ZLMediaKit会依次做以下事情:

  • rtp排序去重。
  • rtp解析成ps或ts。
  • ps或ts解析成h264/h265/aac/g711/opus。
  • 输入到复用器,生成rtsp/rtmp/ts/fmp4等格式,以便转换成其他协议或容器。

GB28181简单使用:

        ZLMediaKit默认开启10000端口用于接收UDP/TCP的GB28181推流,由于国标推流不好测试,ZLMediaKit同时也支持rtp_mpegts推流,代码会自适应判断是否为ps还是ts。 所以如果大家没有摄像头的情况下,可以用FFmpeg简单测试,基本上体验跟国标推流并无二致。

  • ffmpeg推流命令:
 ffmpeg -re -i www/record/robot.mp4 -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000
  • MediaServer收到推流后的日志:

        上图中,这个推流的rtp ssrc为BFC2C622(16进制打印),这个流的app为rtp, stream_id为BFC2C622。

        需要指出的是,国标推流的app固定为rtp,你只能通过代码来修改它,stream_id为rtp流的ssrc,这个是随机的,在FFmpeg中貌似没法控制。

        另外,每次推流时,请更换ssrc,否则ZLMediaKit发现推流端ip和端口变化后,会直接丢弃rtp包;这样做的目的是为了防止两个设备使用同一个ssrc推流时互相干扰。

        ZLMediaKit也可以往其他国标服务器推流,还有其他的高级功能。都是调用HTTP API实现的,具体可参考项目的wiki。

多个国标设备向ZLMediaKit推流时,都是向ZLMediaKit的10000端口推,ZLMediaKit会根据ip、端口以及RTP的ssrc区分不同的设备。但是在使用openRtpServer接口动态开启国标收流端口后,这个端口只能产生一个流,也就是说,一个摄像头需要一个服务器端口用于接收国标推流。

        ZLMediaKit支持多种推拉流方式(RTSP/HLS/RTMP等),ZLMediaKit的播放url规则如下:

以rtsp://somedomain.com:554/live/0?token=abcdefg&field=value为例,该url分为以下几个部分:协议(scheam) : rtsp协议,默认端口554
虚拟主机(vhost) : somedomain.com,该字段既可以是域名也可以是ip,如果是ip则对应的虚拟主机为__defaultVhost__
服务端口号(port) : 554,如果不指定端口号,则使用协议默认端口号
应用名(app) : live
流ID(streamid) : 0
参数(args) : token=abcdefg&field=value

        刚才的rtp_mpegts推流中app和stream_id都可以看到,通过下面的地址就可以使用rtsp协议拉到流了:

rtsp://127.0.0.1/rtp/BFC2C622

        更多操作请参考项目的wiki,地址:https://github.com/zlmediakit/ZLMediaKit/wiki/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491364.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能增强的音频和聊天协作服务

论文标题:AI-enabled Audio and Chat Collaboration Services 中文标题:人工智能增强的音频和聊天协作服务 作者信息: Emil P. Andersen, Norwegian Defence Research Establishment (FFI), Kjeller, NorwayJesper R. Goksr, Sindre E. Ha…

构建树莓派温湿度监测系统:从硬件到软件的完整指南

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

企业内训|阅读行业产品运营实战训练营-某运营商数字娱乐公司

近日,TsingtaoAI公司为某运营商旗下数字娱乐公司组织的“阅读行业产品运营实战训练营”在杭州落下帷幕。此次训练营由TsingtaoAI资深互联网产品专家程靖主持。该公司的业务骨干——来自内容、市场、业务、产品与技术等跨部门核心岗位、拥有8-10年实战经验的中坚力量…

vue+node+mysql8.0,详细步骤及报错解决方案

1.下载需要安装的插件 下载express npm install express下载cors,用于处理接口跨域问题 npm install cors下载mysql npm install mysql 2.配置服务器 可以在vue项目的src同级创建server文件夹(这里的位置可随意选择) 然后依次创建&#…

C语言刷题(2)

5. 题目描述 KIKG今年5岁了,已经能够认识100以内的非负整数,并且并目能够 进行 100 以内的非负整数的加法计算,不过,老师发现KIK在进行大于等于100的正整数的计算时,规则如下: 1.只保留该数的最后两位,例…

360智脑张向征:共建可信可控AI生态 应对大模型安全挑战

发布 | 大力财经 人工智能的加速发展,有力推动了社会的数智化转型;与此同时,带来的相关安全风险也日益凸显。近日,在北京市举办的通明湖人工智能开发与应用大会上,360智脑总裁张向征以“大模型安全研究与实践”为主题&…

相机标定中的相机模型

一、相机标定基本原理 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到&…

【大模型微调学习6】-实战Hugging Face Transformers工具库

【大模型微调学习6】-实战Hugging Face Transformers工具库 实战Hugging Face Transformers工具库1.Hugging Face Transformers 库是什么?2.HF Transformers 核心模块学习:Pipelines(1)如何下载hugging face的数据集和模型权重&am…

【AIGC进阶-ChatGPT提示词副业解析】探索生活的小确幸:在平凡中寻找幸福

引言 在这个快节奏的现代社会中,我们常常被各种压力和焦虑所困扰,忘记了生活中那些细小而珍贵的幸福时刻。本文将探讨如何在日常生活中发现和珍惜那些"小确幸",以及如何通过尝试新事物来丰富我们的生活体验。我们还将讨论保持神秘感和期待感对于维持生活乐趣的重要性…

使用 rvest 包快速抓取网页数据:从入门到精通

介绍 随着大数据和数据科学的迅速发展,互联网数据的抓取已经成为重要的信息获取手段之一。网页抓取(Web Scraping)可以帮助我们自动化地从网页中提取有价值的数据,应用广泛,包括新闻热点分析、金融数据采集等。在本篇…

在 DDD 中优雅的发送 Kafka 消息

前言 1:host 映射 下载 SwitchHost 配置一个映射地址。点击 添加一个本地环境,之后配置你的 IP kafka 这样就能找这个地址了。IP 为你本地的IP,如果是云服务器就是公网IP地址 使用docker-compose.yml进行一键部署安装 version: 3.0 # docker-compose …

c#上班,上学,交通方式接口

using System;namespace INTERFACE {abstract class Person{public string Name { get; set; }public int Age { get; set; }public virtual void ShowInfo(){Console.WriteLine($"Name: {Name}, Age: {Age}");}}// 接口 IWorkinterface IWork{void GotoCompany();}/…

Halcon 直连相机

一、相机类别 1、大恒示例 DahengCAM 使用大华相机,待补充... 2、大华例程 GigEVision 2.1 关键算子 1、查询指定图像采集接口信息。 info_framegrabber (GigEVision, info_boards, Information, ValueList) 获取结果 unique_name:302fac01cd50_MachineVision_MVA5B57MG20…

RPC 服务与 gRPC 的入门案例

RPC 协议 RPC(Remote Procedure Call Protocol)即远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务的协议,允许一个计算机程序可以像调用本地服务一样调用远程服务 。 RPC的主要作用是不同的服务间方法调用就像本地…

机器学习-正则化技术

文章目录 拟合正则化正则项L1 正则化(Lasso)L2 正则化(Ridge) 多元线性回归的正则化回归形式代码 拟合 过拟合:参数(特征)过多(理解为考虑很多因素)或者说过多专注于原来的训练数据…

数据可视化-2. 条形图

目录 1. 条形图适用场景分析 1.1 比较不同类别的数据 1.2 展示数据分布 1.3 强调特定数据点 1.4 展示时间序列数据的对比 1.5 数据可视化教育 1.6 特定领域的应用 2. 条形图局限性 3. 条形图图代码实现 3.1 Python 源代码 3.2 条形图效果(网页显示&#…

【DBeaver】连接带kerberos的hive[Apache|HDP]

目录 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 1.2 环境配置 二、基于Cloudera驱动创建连接 三、基于Hive原生驱动创建连接 一、安装配置Kerberos客户端环境 1.1 安装Kerberos客户端 在Kerberos官网下载,地址如下:https://web.mit.edu/kerberos…

SpringBoot+IDEA工具框架快捷键+注解备注

快捷键 ctrlr 搜索替换 ctrlshiftr 全局搜索和替换 altfninsert 自行补全函数和构造函数等 ctrlaltt 可以尝试添加东西 可以加try catch ctrlshiftt 生成接口对应的测试函数 ctrlh 可以查看当前类的一个继承和实现关系 大写CD回车 ide会自动生成cdata区的标签 x…

AI前沿分析:ChatGPT搜索上线,Google搜索地位能否守住?

名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼 Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 引言:AI与搜索领域的激烈博弈一、ChatGPT搜索的优势是什么?1. 实时信息获取&#xf…

ScottPlot学习的常用笔记

ScottPlot学习的常用笔记 写在前面版本的选择第一个障碍:版本问题。 ScottPlot4.0的官方网站与示例官方起始页cookbook5.0Demo4.1 demo以4.1为例,解压和运行如下: 下载源代码和编译先说结论: 写在前面 之前调研的TraceCompass&am…