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

ZLMediaKit学习(一):Window环境下推拉流

ZLMediaKit是一套高性能的流媒体服务框架,目前支持rtmp/rtsp/hls/http-flv流媒体协议。该项目已支持linux、macos、windows、ios、android平台,支持的编码格式包括H264、AAC、H265(仅rtsp支持H265);采用的模型是多线程IO多路复用非阻塞式编程(linux下采用epoll、其他平台采用select)。

该框架基于C++11开发,避免使用裸指针,减少内存拷贝,代码精简可靠,并发性能优异,在linux平台下,单一进程即可充分利用多核CPU的优势;最大限度的榨干CPU、网卡性能;轻松达到万兆网卡性能极限。同时也能在高性能的同时,做到极低延时,画面秒开。

目前ZLMediaKit经过多次版本迭代,编程模型多次升级优化;已经趋于成熟稳定,也在各种生产环境得到了验证,本文主要讨论ZLMediaKit高性能实现原理以及项目特点。

Github主页:https://github.com/ZLMediaKit/ZLMediaKit/

Gitee地址:https://gitee.com/xia-chu/ZLMediaKit

1.Windows编译运行

1.1 下载安装openssl

下载地址:http://slproweb.com/products/Win32OpenSSL.html

【原创】ZLMediaKit学习(一):Window环境下推拉流插图:Window环境下推拉流插图")

【原创】ZLMediaKit学习(一):Window环境下推拉流插图:Window环境下推拉流插图")

配置环境变量:

【原创】ZLMediaKit学习(一):Window环境下推拉流插图1:Window环境下推拉流插图1")

【原创】ZLMediaKit学习(一):Window环境下推拉流插图1:Window环境下推拉流插图1")

1.2 获取代码

#国内用户推荐从同步镜像网站gitee下载

git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit

cd ZLMediaKit

#千万不要忘记执行这句命令

git submodule update --init

【原创】ZLMediaKit学习(一):Window环境下推拉流插图2:Window环境下推拉流插图2")

【原创】ZLMediaKit学习(一):Window环境下推拉流插图2:Window环境下推拉流插图2")

1.3 安装编译器

1.安装 Vistudio Code,选择2017以上版本,否则需要单独安装cmake(注:ZLMediaKit采用cmake来构建项目,通过cmake才能生成Makefile(或Xcode/VS工程),所以必须先安装cmake才能完成后续步骤。)

【原创】ZLMediaKit学习(一):Window环境下推拉流插图3:Window环境下推拉流插图3")

【原创】ZLMediaKit学习(一):Window环境下推拉流插图3:Window环境下推拉流插图3")

1.6 使用vs2017编译

1.7 运行

启动MediaServer:

1 进入D:\NewZLMediaKit\ZLMediaKit\release\windows32\Debug\Release目录

2 双击MediaServer启动

3 你也可以在cmd或powershell中启动,通过MediaServer -h了解启动参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uiaJ0Ggl-1661912852101)(https://i0.wp.com/www.dapan.cc/wp-content/uploads/2022/08/1661910926-clipboard.png?ssl=1&is-pending-load=1 “【原创】ZLMediaKit学习(一)]:Window环境下推拉流插图7”)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GHqifCqg-1661912852101)(https://i0.wp.com/www.dapan.cc/wp-content/uploads/2022/08/1661910926-clipboard.png?ssl=1 “【原创】ZLMediaKit学习(一)]:Window环境下推拉流插图7”)

1.8 推拉流(以RTMP为例)

1.安装ffmeg

下载地址:http://ffmpeg.zeranoe.com/builds/

2. 安装OBS播放器

下载地址:https://obsproject.com/welcome

3.将测试视频文件放到ZLMediaKit\www文件夹,双击启动MediaServer

4.打开windows power shell并定位到ffmpeg根目录,输入指令开始RTMP推流

./ffmpeg -re -i “D:\ZLMdeiaKit\ZLMediaKit\www\video\test.mp4”  -vcodec copy -acodec copy -f flv -y rtmp://localhost/live/0

5.OBS添加媒体源:rtmp://localhost/live/0,点击播放:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9WtFg8Me-1661912852102)(https://i0.wp.com/www.dapan.cc/wp-content/uploads/2022/08/1661910945-clipboard.png?ssl=1&is-pending-load=1 “【原创】ZLMediaKit学习(一)]:Window环境下推拉流插图8”)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xWwLYMGa-1661912852102)(https://i0.wp.com/www.dapan.cc/wp-content/uploads/2022/08/1661910945-clipboard.png?ssl=1 “【原创】ZLMediaKit学习(一)]:Window环境下推拉流插图8”)

转载请注明出处

**声明:**本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

相关文章:

  • voip|网络电话,软件实现电信座机
  • 天玑810和天玑800u哪个好 天玑810和天玑800u差多少
  • Sulfo-Cy3 NHS酯,Sulfo-Cy3 NHS ester,水溶性荧光染料Cy3标记琥珀酰亚胺活化酯
  • Python输入漏洞利用(Python input漏洞)
  • 重启tomcat-Tomcat服务器怎么重启?
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • SQL(及存储过程)跑得太慢怎么办?
  • 如何选择国际通知短信服务商?
  • RocketMQ回顾整理
  • 【大数据分析】FordFulkerson算法(JAVA实现)
  • Linux ARM平台开发系列讲解(GMSL摄像头篇)1.2 MAX9296 GMSL链路配置
  • 小波神经网络的基本原理,小波神经网络算法原理
  • 摄影测量+元宇宙!虚拟校园还有哪些值得我们期待的?
  • LeetCode_数组_中等_915.分割数组
  • Java泛型中的 “?super T“ 与 “?extends T“ 有何不同
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 「面试题」如何实现一个圣杯布局?
  • Elasticsearch 参考指南(升级前重新索引)
  • Javascript 原型链
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Laravel 菜鸟晋级之路
  • VUE es6技巧写法(持续更新中~~~)
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 前端技术周刊 2019-02-11 Serverless
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 探索 JS 中的模块化
  • 携程小程序初体验
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • (2)STM32单片机上位机
  • (k8s中)docker netty OOM问题记录
  • (LeetCode C++)盛最多水的容器
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (转)EOS中账户、钱包和密钥的关系
  • (转)Sublime Text3配置Lua运行环境
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET Reactor简单使用教程
  • .NET 中创建支持集合初始化器的类型
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .Net程序帮助文档制作
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • []C/C++读取串口接收到的数据程序
  • [AutoSar NVM] 存储架构
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [BZOJ2281][SDOI2011]黑白棋(K-Nim博弈)
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法