ZLMediaKit简介

ZLMediaKit源码分析(三)拉流创建 ZLMediaKit拉流结构体创建是在RtspSession::onRecv()之后。如何触发onRecv()请参考这里不在赘述。RtspSession::onRecv()数据处理参考这里也不再赘述。 阅读详情

本文属于《ZLMediaKit源码分析》连载系列博客的第一篇,简要介绍了ZLMediaKit的功能定位、技术优势和源码目录结构。

ZLMediaKit是一个采用现代C++标准编写的开源项目,它既可以直接作为流媒体服务器使用,也可以作为音视频、流媒体相关应用(如:播放器、推流器、流媒体服务器二次开发)的SDK。

ZLMediaKit原生支持多种操作系统,比如Windows、Linux、macOS、Android、iOS等,开发调试都十分方便。

让我们先从源码目录开始分析。后文将采用“ZLMediaKit/”来表示ZLMediaKit源码的根目录,在这个目录下可以看到3rdpart、Android、api等子目录。

ZLMediaKit/目录下的内容描述如下:

子目录

内容描述

3rdpart

第三方开源库,包含三个子目录,内容如下:

(1) jsoncpp:用来处理json格式字符串的C++库。

(2) media-server:由老陈提供的C++媒体服务器,里面包含了若干媒体文件格式、传输协议的封装类。

(3) wepoll:epoll for windows。为Windows平台实现的仿epoll API。

(4) ZLToolKit:整个ZLMediaKit项目范围内通用的基础工具库,ZLMediaKit流媒体协议库和MediaServer应用程序就是基于这个库实现的。此库封装的功能包括日志、线程池、定时器、任务、缓冲区、套接字、事件处理循环、工具类等,由于它比较通用,因此可以作为“第三方开源库”给其它项目使用(包括ZLMediaKit项目)。

Android

采用ZLMediaKit框架开发的Android版流媒体播放器。

api

将C++风格的ZLMediaKit核心框架封装成纯C风格的API,供C程序调用。

cmake

可供ZLMediaKit/CMakeLists.txt加载的cmake子模块。

conf

包含流媒体服务器的配置文件config.ini

docker

docker镜像构建脚本

package

rpm包支持

postman

restful接口测试工具postman的测试项目文件

release

项目构建目标输出目录

server

基于3rdpart和src目录中的模块开发的一个流媒体服务器。

src

ZLMediaKit流媒体开发库,主要由各种流媒体传输协议实现构成,还有Player、Pusher和Record等功能模块。

srt

SRT协议支持

tests

测试代码

webrtc

WebRTC协议栈支持

webrtc_player

WebRTC播放器

www

帮助文件


从这一篇文章开始,作者将会连载一系列文章,带读者全面领略流媒体领域的明星开源项目ZLMediaKit的技术风范。

流媒体服务器 ZLMediaKit介绍 支持溯源模式的集群部署,溯源方式支持rtsp/rtmp/hls/http-ts, 边沿站支持hls, 源站支持多个(采用round robin方式溯源)RTSP[S] 服务器,支持RTMP/MP4/HLS转RTSP[S],支持亚马逊echo show这样的设备。支持RTSP/RTMP/HLS转国标推流客户端,支持TCP/UDP模式,提供相应restful api。支持UDP/TCP国标RTP(PS或TS)推流服务器,可以转换成RTSP/RTMP/HLS等协议。 阅读详情

相关推荐

ARM64-ZLMediaKit

本笔记详细记录了 ZLMediaKit 的部署步骤,包括源码下载、依赖安装、编译配置、启动及测试流程,适用于 ARM64 架构环境。ARM64-安装g++和gcc离线包。

2401_86579778的博客 1691

ZLMediaKit 的安装及使用介绍

ZLMediaKit是一个基于C++开发的开源流媒体服务器。它提供了高性能的音视频处理能力,支持常见的流媒体协议,如RTSP、RTMP、HLS和HTTP-FLV,并且具有低延迟和高并发处理能力。总之,ZLMediaKit是一个功能强大且高性能的开源流媒体服务器,适用于构建实时音视频传输和处理的应用,如直播、视频会议、视频监控等。它提供了多种流媒体协议的支持,具有低延迟和高并发处理能力,同时支持动态转码和跨平台运行。

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 2万+

zlmediakit二次开发的若干经验

zlmedikit是一个流媒体服务器源码地址https://github.com/xia-chu/ZLMediaKit 能够处理rtsp,rtmp,hls等多种流媒体协议,与SRS功能相似,虽然没有SRS出名,但是却比SRS有几个重要的优势, 一是支持多线程,运行效率比较高,SRS只能单线程运行 二是代码支持多种平台,windows,linux, macos,arm,对开发学习比较友好。可以在VS中开发,在linux下编译运行 。SRS只能在linux下开发,开发学习略有一点不方便。 三是an...

闲人的专栏 1万+

C++流媒体服务器 ZLMediaKit框架ZLToolKit源码解读

ZLMediaKit是国人开发的开源C++流媒体服务器,同SRS一样是主流的流媒体服务器。基于C++11,大量使用C++11新特性,如智能指针、lambda表达式等,安全性高,是高度运用C++特性的框架。主要分为Thread、Poller、Network、Util四大部分。 EventPollerPool事件循环线程池。

weixin_40355471的博客 1万+

Ubuntu搭建ZLMediaKit

前置环境安装 cmake 安装cmake $ apt-get install -y cmake # 查看cmake版本,如果版本过低需要重新自己下载,ZLM的版本要求使3.13 $ cmake -version # 卸载 $ apt-get remove cmake cmake下载地址 这里选择的使cmake版本3.18.3的。 # 解压 $ tar zxvf cmake-3.18.3-Linux-x86_64.tar.gz # 重命名 $ mv cmake-3.18.3-Linux-x86_64

成长之路 3858

ZLMediaKit压力测试

rtmp://1.14.58.180:1935/live/test 转推摄像头的流,摄像头的带宽稳定2M,跟实际场景比较符合 ffmpeg -rtsp_transport tcp -i rtsp://10.2.64.xxx/xxx -c:v copy -c:a copy -f flv rtmp://1.14.58.180:1935/live/test。## 本地电脑推流或ffmpeg转推摄像头的流,我选择第二种,比较符合实际的场景。## ZLMediaKit版本。

whjy_lsq的博客 1791

WebRTC生态之媒体服务器简介(二):SRS、ZLMediaKit、Janus、MediaSoup、LiveKit、zlm4j、FreeSWITCH

WebRTC生态之媒体服务器简介(二):SRS、ZLMediaKit、Janus、MediaSoup、LiveKit、zlm4j、FreeSWITCH

lonelymanontheway的博客 544

windows下ZLMediaKit编译webrtc部分

环境:vs2019 依赖: openssl libsrtp 一、依赖下载 opessl:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions libstrp下载: 这里我使用的方法是自己去github下载并编译 git clone https://github.com/cisco/libsrtp mkdir build #创建编译目录 mkdir install #...

whjy_lsq的博客 4183

centos下基于ZLMediaKit 的WebRTC 环境搭建

本文详细记录了在 CentOS 7.9 环境下编译和安装 ZLMediaKit 的全过程,涵盖了依赖项的安装、编译步骤以及如何通过修改 hosts 文件在不同机器间实现域名解析。通过这些步骤,我们成功地搭建了一个基于 WebRTC 的流媒体服务环境。希望本文能为需要搭建类似环境的用户提供有价值的参考。如果遇到问题或有改进建议,欢迎提出讨论。你好,我是阿灿,慢慢理解世界,慢慢更新自己,每天进步一点点,成为更好的自己。

wel_006的博客 1946

开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放

目前市面上有很多开源的流媒体服务器解决方案,常见的有SRS、EasyDarwin、ZLMediaKit和Monibuca等。1、SRS3、MonibucaZLMediaKit是一套高性能的流媒体服务框架,目前支持rtmp、rtsp、hls、http-flv等流媒体协议,支持linux、macos、windows三大PC平台和ios、android两大移动端平台。

BADAO_LIUMANG_QIZHI的博客 1万+

【WebLogic】Linux图形化界面安装WebLogic 14.1.2.0

Linux系统图形化界面安装WebLogic 14.1.2.0.0版本

cnskylee的博客 837

Docker 简单部署 ZLMediaKit 超详细图文步骤

1、简介 1.1、概述 一个基于C++11的高性能运营级流媒体服务框架 1.2、项目特点 基于C++11开发,避免使用裸指针,代码稳定可靠,性能优越。 支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC),支持协议互转。 使用多路复用/多线程/异步网络IO模式开发,并发性能优越,支持海量客户端连接。 代码经过长期大量的稳定性、性能测试,已经在

蜗牛的博客 2万+

从AMCL到SLAM Toolbox:在Nav2中实现高精度纯定位的实践指南

本文详细介绍了从AMCL迁移到SLAM Toolbox纯定位模式的实践指南,帮助开发者在Nav2中实现高精度定位。通过对比AMCL与SLAM Toolbox的性能差异,提供环境配置、参数调优、Nav2集成等关键步骤,显著提升机器人在动态环境中的定位精度和重定位效率。

weixin_29292535的博客 148

【实战】ZLMediaKit部署及使用

一个基于C++11的高性能运营级流媒体服务框架http://服务器IP:8080就不过多介绍怎么使用。

喜欢分享,善于记录工作中遇到的问题,和自己的思考 1万+

【算法】图解A* 搜索算法

A* 算法是启发式搜索算法,是根据Dijkstra算法改进而来。 问题引入 如下图所示,S为起始(start)节点,G为目标(goal)节点。 节点之间连线是两点的路径长度,如A到E的路径长度c(A,E) = 9。 节点旁的h值时当前节点到达目标节点(G)的预估值,如h(A)=15, 表示从当前点A到达目标点G的估计路径长度为15,此处h(x)即为启发函数,启发函数的设计有很多方法,具体可......

zhuhua造轮子的博客 4万+

经典算法之——解决全排列问题以及详解

回溯”指的是“状态重置”,可以理解为“恢复现场”,是在编码的过程中,是为了节约空间而使用的,而在递归或者深度优先中根据需要的场合来配合回溯法可以进一步对自己的代码进行优化。, n-1, n},方向都为向左。邻位对换法是全排列生成算法中的其中一种,它的换位是双向的,通过保存数字的“方向性”来快速得到下一个排列。最后以 3 开头的全排列为[3, 1, 2], [3, 2, 1];以 1 开头的全排列为[1, 2, 3], [1, 3, 2];以 2 开头的全排列为[2, 1, 3], [2, 3, 1];

m0_68987535的博客 8794

windows下编译ZLMediaKit

一、准备 首先得安装windows平台的git,参考文章《Windows系统Git安装教程》。 安装cmake,参考文章《Windows下CMake安装教程》。 安装OpenSSL,参考文章《Windows安装使用Openssl》。flash player在播放rtmp时,采用的是复杂握手模式,如果不安装该库,flash player将播放不了zlmediakit 提供的rtmp url,同时ZLMediaKit的https/rtsps相关功能需要使用openssl才能开启。如果是要编译32位的ZLM

崔杰城的博客 5905

车载网络测试实操源码_使用CAPL脚本实现安全访问解锁,并模拟各种测试场景

在车载诊断中,我们经常会使用到安全访问解锁,常见的场景包括软件刷写前、通过2E服务写入某个DID前、通过31服务执行某个例程前等,都必须先通过27服务进行安全访问,解锁相应安全等级后才能执行上述操作。在开发调试或测试时,有时候需要模拟正常的安全解锁、安全访问秘钥错误、连续多次请求安全访问等,手动操作极为不便。本文将介绍如何使用CAPL脚本实现安全访问解锁,并模拟各种测试场景。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1201

安装配置 ZLMediaKit

全面支持 H265/H264/AAC/G711/OPUS。因为默认安装到/usr/local 目录,或者 config 的时候指定/usr/lib,要不就把库链接过去。(RTSP/RTMP/HLS/HTTP-FLV/Websocket-FLV/GB28181/MP4),支持。使用多路复用/多线程/异步网络 IO 模式开发,并发性能优越,支持海量客户端连接。编译完成的程序在 ZLMediaKit/release/linux/Debug 下。基于 C++11 开发,避免使用裸指针,代码稳定可靠,性能优越。

... 5078

5.1 直流无刷电机(BLDC):基本控制概念

本文系统介绍了直流无刷电机(BLDC)控制系统的核心概念与技术。主要内容包括:控制系统的分层结构设计,开环与闭环控制的原理及特点,PWM调速技术及其调制方式,PID控制算法及其数字化实现方法,以及控制系统的性能评估指标。同时探讨了现代BLDC控制器硬件实现方案,并介绍了磁场定向控制(FOC)、直接转矩控制(DTC)等先进控制策略。文章全面阐述了BLDC电机控制从基本原理到前沿技术的知识体系,为相关应用提供了理论指导和技术参考。

技术工作者 489

图神经网络学习笔记-点云数据处理(专题七)

本教程解释了如何利用图神经网络(Graph Neural Networks,GNNs)来处理和训练点云数据。尽管点云默认情况下不具有图结构,但我们可以利用 PyG 的转换工具,将其转化为适合 PyG 所提供的全套 GNN 模型的形式。关键思想是从点云数据中创建一个,通过 GNN 的消息传递机制,从中学习有意义的局部几何结构。这些点的表示可以被用于例如点云分类或分割等任务。

351

ZLMediaKit webRTC编译与测试

一、背景 NB的ZLMediaKit开始支持了webrtc,今天有点时间,好奇测试之。 二、代码下载 拉最新的master代码 已经支持webrtc git pull origin master 还是把dev版本也拉下来保险 git pull origin dev:dev 三、编译 1. 编译环境 OS版本: Ubuntu 16.04 openssl版本: OpenSSL 1.1.1l-dev 2. openssl版本检查 openssl verison 看一下自己系统的版本 我的是openssl-1.0.

一只海星的主页 2万+

PINN求解PDE

PINN求解Dirichlet泊松方程 泊松方程引入 −Δu=f,x∈Ω=(0,1)2-\Delta u=f,x \in \Omega=(0,1)^2−Δu=f,x∈Ω=(0,1)2 u=g,x∈∂Ωu=g,x \in \partial \Omegau=g,x∈∂Ω import torch import time import numpy as np import matplotlib.pyplot as plt import torch.nn as nn def UU(X, order,prob):

forrestguang的博客 3804

ZLMediaKit 切换用于源的RingBuffer

那么把它抽象为技术实现,就是web同时会与ZLMediaKit建立4个pc对象,这个4个pc对象建立后,就不会销毁(直到web播放器关闭),由ZLMediaKit根据web请求的rtsp摄像头标识,将不同摄像头的流转给web。有这样一个需求,基于webrtc实现的web实时流播放器,有4分屏,最大同时显示4个图像rtsp摄像头的图像。对象的生命周期只与任务对象一样长,这样显然不是原始要表达的意图,应该改成如下,在外部定义。中切换源,但是它并未提供这样的功能,根据上面的分析,可以加一个。上连了多少个连流端。

mo4776的博客 1488

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: PC端的开源媒体播放器
下一篇: WebRTC的起源与发展
ADM实验室
博客等级 码龄21年 156粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ADM实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值