一 搭建

公司搭建云导播台系统,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流媒体服务器相关推荐

  1. 音视频学习之rtsp推拉流学习2(流媒体服务器ZLMediaKit)

    公司项目需要实现一个只是rtsp推流和rtsp拉流的业务机制,据说ZLMediaKit能满足rtsp推拉流的相关业务. 对ZLMediaKit流媒体服务器进行安装以及了解. 0:从开源库Readme中 ...

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

    场景 目前市面上有很多开源的流媒体服务器解决方案,常见的有SRS.EasyDarwin.ZLMediaKit和Monibuca等. 1.SRS GitHub - ossrs/srs: SRS is a ...

  3. 流媒体服务器 ZLMediaKit介绍

    流媒体服务器是流媒体应用的核心系统,是运营商向用户提供视频服务的关键平台.流媒体服务器的主要功能是对流媒体内容进行采集.缓存.调度和传输播放.流媒体应用系统的主要性能体现都取决于媒体服务器的性能和服务 ...

  4. 开发流媒体服务器_Github选出10大开源免费的RTSP流媒体项目

    Github选出 TOP 10开源免费的RTSP流媒体项目,以下是具体排名及星星数. 1.Easydarwin 星星数:4,307 Easydarwin是国内团队开发的开源流媒体框架.它是基于Go语言 ...

  5. 开源流媒体解决方案,流媒体服务器,推拉流,直播平台,SRS,WebRTC,移动端流媒体,网络会议,优秀博客资源等分享

    开源流媒体解决方案,流媒体服务器,推拉流,直播平台,SRS,WebRTC,移动端流媒体,网络会议,优秀博客资源等分享 一.优秀的流媒体博客资源 1.1 EasyNVR:专注于安防视频互联网化的技术 1 ...

  6. 学着搭建流媒体服务器

    操作系统:NAME="openEuler",架构:aarch64,CPU 运行模式:64-bit 目前有多个开发源代码可以搭建流媒体服务,但要先依赖gcc和cmake,所以首先安装 ...

  7. 常见的嵌入式端流媒体服务器开源项目!

    大家好,今天给大家汇总一些在嵌入式里面常见的流媒体服务器,在以往也有给大家简单提过,今天做一个汇总!希望对大家有用! 常见的流媒体服务器开源项目汇总: 1.srs: 官网: https://ossrs ...

  8. linux搭建rtsp服务端,手把手搭建RTSP流媒体服务器

    0.引言 本文主要讲解如何搭建RTSP流媒体服务器的过程,使用开源项目ZLMediaKit.通过这个开源项目,推RTSP流到服务器,然后拉流端可以拉取RTSP.RTMP等流. ZLMediaKit码云 ...

  9. FFmpeg入门详解之100:搭建Nginx流媒体服务器

    这里小编给大家推荐一款流媒体服务器Nginx,可以实现RTMP和HLS等.搭建完成后,可以使用FFmpeg推流,实现直播功能. 注意:操作环境是Ubuntu18.04, 总共分为几个步骤: 1.安装N ...

  10. 常见流媒体服务器方案对比分析

    目录 前言 正文 SRS 使用步骤 主要功能 EasyDarwin 使用步骤 主要功能 ZLMediaKit 使用步骤 主要功能 Monibuca 使用步骤 主要功能 结尾 对比图表 前言 目前市面上 ...

最新文章

  1. nginx的pid问题
  2. shell中echo使用单引号时输出单引号
  3. Git版本控制管理系统_企业实战上篇
  4. 数据库java_(六) Java数据库
  5. 线程管理(一)线程的创建和运行
  6. android设计个人简历页面_制作个人简历网站教程
  7. PE文件格式详解(0)
  8. Spring MVC整合FreeMarker
  9. ds90ub934 i2c 配置_DS90UB934-Q1 25MHz 至 100MHz 10/12 位 FPD-Link III 串行器和解串器
  10. WIN10插入耳机没声音,Realtek音频管理器打不开
  11. React Loadable中文文档
  12. 写给自己的python基础
  13. 雅安职业技术学院工业机器人专业_雅安职业技术学院有哪些专业_2020年学费标准_中职中专网...
  14. linux常用命令_Linux常用命令~~~
  15. 神经网络控制与matlab仿真,matlab神经网络预测模型
  16. MS5358 适合用于像 DTV,DVR 和 AV 接收器的系统
  17. Unity URP打包安卓shader报错 报红 变红
  18. linux卸载360软件下载,在Deepin及其他Linux系统中使用命令卸载360安全卫士的方法...
  19. tkinter模块常用控件及描述
  20. 达人评测 i3-1315U、i5-1335U 和 i7-1355U选哪个 酷睿i31315U、i51335U 和 i71355U对比

热门文章

  1. python为在线漫画网站自制非官方API(未完待续)
  2. 软件测试工程师需要学什么?全网最全,测试工程师技能树,吐血整理
  3. matlab已知随机样本求总体均值与方差的矩估计值(例子应用)
  4. CAD2008 启动慢 卡住
  5. win10查看服务器共享文件夹,Win10怎么样查看共享文件夹
  6. Win10电脑怎么用命令修复系统文件
  7. IE5的兼容问题——记录给自己看的
  8. 怎样更改itunes备份位置_正确修改itunes备份文件路径方法
  9. 以太坊合并后下跌22%,我们分析链上的数据看看是否能找到答
  10. 分布式 | 浅谈 dble 引入 ClickHouse 的配置操作