ZLMediaKit流媒体服务器
一 搭建
公司搭建云导播台系统,0-1。本人先后调研了几个webrtc流媒体服务器框架:
mediasoup:nodejs和c++开发各占一半
janus:c开发插件,用docker镜像安装运行成功,自编译运行坑太多。
ZLMediaKit:c++开发。信令部分需要单独开发,可以团队合作。编译运行一次成功,易用性好。
win10+vscode+ remote ssh连接虚拟机192.168.2.205,截图下边4个箭头从左到右依次点击,根据提示选择选项。编译、调试程序非常方便。无需生成launch.json,tasks.json等配置文件。
源码下载地址
https://github.com/ZLMediaKit/ZLMediaKit
编译参考
https://github.com/ZLMediaKit/ZLMediaKit/wiki/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B
编译成功后,在ZLMediaKit/release/linux/Debug目录下生成MediaServer
须注意,webrtc编译和MediaServer编译有一点点差异,看下文
zlm启用webrtc编译指南 · ZLMediaKit/ZLMediaKit Wiki · GitHub
虚拟机实测,调试运行会提示80,443,554端口被占用或权限问题。手动改端口1080,443,554
ffmpeg循环推流://注意看,此处推的是rtmp,webrtc服务器也能接收到流
ffmpeg -re -stream_loop -1 -i 1.mp4 -vcodec h264 -acodec aac -f flv rtmp://192.168.2.205/live/test1
obs推流:
浏览器播放:
http://192.168.2.205:1080/webrtc
//踩坑记录:因为http默认端口80改成了1080,所以此处要对应改,被坑半天排查问题
url完整显示如下:
http://192.168.2.205:1080/index/api/webrtc?app=live&stream=test1&type=play
二 源码分析
单进程多线程,epoll模型:
ZLMediaKit启动时根据cpu核心数自动创建若干epoll实例(非linux平台为select);每个epoll实例都有一个线程运行epoll_wait
函数来等待事件的触发。
服务器收到accept事件后,会创建一个TcpSession对象并绑定到该epoll实例(同时把与之对应的peer fd加入到相关epoll监听)。Tcp连接:TcpSession对象 1:1,在之后客户端与服务器的数据交互中,该TcpSession对象处理一切与之相关的业务数据,并且该对象之后生命周期内的一切事件都会由该epoll线程触发,这样服务器的每个epoll线程都能均匀的分派到合理的客户端数量
rtsp mediasource最重要的两个元素
sdp
rtp
根据track生成sdp,三个部分,title,video,audio
rtmp mediasource最重要的两个元素
metadata(元数据,分辨率,codecid,samples等)
config,frame(sps,pps,aac adts头)
rtmp packet(h264/aac等)
ZLMediaKit流媒体服务器相关推荐
- 音视频学习之rtsp推拉流学习2(流媒体服务器ZLMediaKit)
公司项目需要实现一个只是rtsp推流和rtsp拉流的业务机制,据说ZLMediaKit能满足rtsp推拉流的相关业务. 对ZLMediaKit流媒体服务器进行安装以及了解. 0:从开源库Readme中 ...
- 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放
场景 目前市面上有很多开源的流媒体服务器解决方案,常见的有SRS.EasyDarwin.ZLMediaKit和Monibuca等. 1.SRS GitHub - ossrs/srs: SRS is a ...
- 流媒体服务器 ZLMediaKit介绍
流媒体服务器是流媒体应用的核心系统,是运营商向用户提供视频服务的关键平台.流媒体服务器的主要功能是对流媒体内容进行采集.缓存.调度和传输播放.流媒体应用系统的主要性能体现都取决于媒体服务器的性能和服务 ...
- 开发流媒体服务器_Github选出10大开源免费的RTSP流媒体项目
Github选出 TOP 10开源免费的RTSP流媒体项目,以下是具体排名及星星数. 1.Easydarwin 星星数:4,307 Easydarwin是国内团队开发的开源流媒体框架.它是基于Go语言 ...
- 开源流媒体解决方案,流媒体服务器,推拉流,直播平台,SRS,WebRTC,移动端流媒体,网络会议,优秀博客资源等分享
开源流媒体解决方案,流媒体服务器,推拉流,直播平台,SRS,WebRTC,移动端流媒体,网络会议,优秀博客资源等分享 一.优秀的流媒体博客资源 1.1 EasyNVR:专注于安防视频互联网化的技术 1 ...
- 学着搭建流媒体服务器
操作系统:NAME="openEuler",架构:aarch64,CPU 运行模式:64-bit 目前有多个开发源代码可以搭建流媒体服务,但要先依赖gcc和cmake,所以首先安装 ...
- 常见的嵌入式端流媒体服务器开源项目!
大家好,今天给大家汇总一些在嵌入式里面常见的流媒体服务器,在以往也有给大家简单提过,今天做一个汇总!希望对大家有用! 常见的流媒体服务器开源项目汇总: 1.srs: 官网: https://ossrs ...
- linux搭建rtsp服务端,手把手搭建RTSP流媒体服务器
0.引言 本文主要讲解如何搭建RTSP流媒体服务器的过程,使用开源项目ZLMediaKit.通过这个开源项目,推RTSP流到服务器,然后拉流端可以拉取RTSP.RTMP等流. ZLMediaKit码云 ...
- FFmpeg入门详解之100:搭建Nginx流媒体服务器
这里小编给大家推荐一款流媒体服务器Nginx,可以实现RTMP和HLS等.搭建完成后,可以使用FFmpeg推流,实现直播功能. 注意:操作环境是Ubuntu18.04, 总共分为几个步骤: 1.安装N ...
- 常见流媒体服务器方案对比分析
目录 前言 正文 SRS 使用步骤 主要功能 EasyDarwin 使用步骤 主要功能 ZLMediaKit 使用步骤 主要功能 Monibuca 使用步骤 主要功能 结尾 对比图表 前言 目前市面上 ...
最新文章
- nginx的pid问题
- shell中echo使用单引号时输出单引号
- Git版本控制管理系统_企业实战上篇
- 数据库java_(六) Java数据库
- 线程管理(一)线程的创建和运行
- android设计个人简历页面_制作个人简历网站教程
- PE文件格式详解(0)
- Spring MVC整合FreeMarker
- ds90ub934 i2c 配置_DS90UB934-Q1 25MHz 至 100MHz 10/12 位 FPD-Link III 串行器和解串器
- WIN10插入耳机没声音,Realtek音频管理器打不开
- React Loadable中文文档
- 写给自己的python基础
- 雅安职业技术学院工业机器人专业_雅安职业技术学院有哪些专业_2020年学费标准_中职中专网...
- linux常用命令_Linux常用命令~~~
- 神经网络控制与matlab仿真,matlab神经网络预测模型
- MS5358 适合用于像 DTV,DVR 和 AV 接收器的系统
- Unity URP打包安卓shader报错 报红 变红
- linux卸载360软件下载,在Deepin及其他Linux系统中使用命令卸载360安全卫士的方法...
- tkinter模块常用控件及描述
- 达人评测 i3-1315U、i5-1335U 和 i7-1355U选哪个 酷睿i31315U、i51335U 和 i71355U对比
热门文章
- python为在线漫画网站自制非官方API(未完待续)
- 软件测试工程师需要学什么?全网最全,测试工程师技能树,吐血整理
- matlab已知随机样本求总体均值与方差的矩估计值(例子应用)
- CAD2008 启动慢 卡住
- win10查看服务器共享文件夹,Win10怎么样查看共享文件夹
- Win10电脑怎么用命令修复系统文件
- IE5的兼容问题——记录给自己看的
- 怎样更改itunes备份位置_正确修改itunes备份文件路径方法
- 以太坊合并后下跌22%,我们分析链上的数据看看是否能找到答
- 分布式 | 浅谈 dble 引入 ClickHouse 的配置操作