音视频开发5. ZLMediaKit库入门使用 编译安装

  • 一、 ZLMediaKit 库简介
  • 二、编译
  • 三、生成物
    • 1. MedisServer
    • 2. SDK (c语言)
    • 3. 测试程序
    • 4. 问题处理
  • 四、测试
    • 1. rtsp 推流测试
    • 2. rtp 方式推流
    • 3. 测试http api
      • (1) getApiList
      • (2) /index/api/getServerConfig
      • (3) /index/api/getMediaList
    • 4. Http Hook

一、 ZLMediaKit 库简介

ZLMediaKit 是一个基于C++11的高性能运营级流媒体服务框架

官方写的项目特点:

  • 基于C++11开发,避免使用裸指针,代码稳定可靠,性能优越。
  • 支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/Websocket-FLV/GB28181/MP4),支持协议互转。
  • 使用多路复用/多线程/异步网络IO模式开发,并发性能优越,支持海量客户端连接。
  • 代码经过长期大量的稳定性、性能测试,已经在线上商用验证已久。 支持linux、macos、ios、android、windows全平台。
  • 支持画面秒开、极低延时(500毫秒内,最低可达100毫秒)。 提供完善的标准C API,可以作SDK用,或供其他语言调用。
  • 提供完整的MediaServer服务器,可以免开发直接部署为商用服务器。 提供完善的restful api以及web hook,支持丰富的业务逻辑。 打通了视频监控协议栈与直播协议栈,对RTSP/RTMP支持都很完善。
  • 全面支持H265/H264/AAC/G711/OPUS。

其功能非常多,支持RTSP、RTMP[S]、HLS、GB28181等多种流媒体格式。

二、编译

测试环境: 深度系统(Deepin20)

#国内用户推荐从同步镜像网站gitee下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init
# 安装gcc
sudo apt-get install build-essential
# 安装cmake
sudo apt-get install cmake
# 安装依赖库
#除了openssl,其他其实都可以不安装
sudo apt-get install libssl-dev -y
sudo apt-get install libsdl-dev -y
sudo apt-get install libavcodec-dev -y
sudo apt-get install libavutil-dev -y
sudo apt-get install ffmpeg -y
# 构建和编译项目
cd ZLMediaKit
mkdir build
cd build
cmake ..
# 如果编译release版本 使用 cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

https://gitee.com/xia-chu/ZLMediaKit/wikis/%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B?sort_id=2009070

三、生成物

编译完成后,生成release目录 , 主要的目标文件有三种

1. MedisServer

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

2. SDK (c语言)

  • 头文件: ZLMediaKit/api/include
  • 库文件: ZLMediaKit/release/linux/Debug/libmk_api.so

3. 测试程序

在 ZLMediaKit/tests 下。

4. 问题处理

提示: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory

# 复制libssl库,从其它电脑复制或自行编译下面库文件,放到/usr/lib64目录下
# libcrypto.so.1.0.0
# libssl.so.1.0.0
# 建立软连接
ln -s libssl.so.1.0.0 libssl.so.10
ln -s libcrypto.so.1.0.0 libcrypto.so.10

四、测试

1. rtsp 推流测试

# h264推流
ffmpeg -re -i "/path/to/test.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test
# h265推流
ffmpeg -re -i "/path/to/test.mp4" -vcodec h265 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test

2. rtp 方式推流

# h264推流
ffmpeg -re -i "/path/to/test.mp4" -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000
# h265推流
ffmpeg -re -i "/path/to/test.mp4" -vcodec h265 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000

日志格式:

2020-04-10 12:51:52.331 I | regist rtsp __defaultVhost__ rtp 206442D7^           ^         ^      ^schema      vhost      app stream_id

3. 测试http api

本地测试不需要带secret参数
完整文档位置:
https://github.com/xia-chu/ZLMediaKit/wiki/MediaServer%E6%94%AF%E6%8C%81%E7%9A%84HTTP-API

这里仅测试几个接口看看:

(1) getApiList

返回所有API接口

(2) /index/api/getServerConfig

获取服务器配置

(3) /index/api/getMediaList

获取流列表,可以筛选参数。

4. Http Hook

把内部事件使用http post方式通知出来。
详细文档
相关配置:

[hook]
enable=1
admin_params=secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
timeoutSec=10on_flow_report=https://127.0.0.1/index/hook/on_flow_report
on_http_access=https://127.0.0.1/index/hook/on_http_access
on_play=https://127.0.0.1/index/hook/on_play
on_publish=https://127.0.0.1/index/hook/on_publish
on_record_mp4=https://127.0.0.1/index/hook/on_record_mp4
on_rtsp_auth=https://127.0.0.1/index/hook/on_rtsp_auth
on_rtsp_realm=https://127.0.0.1/index/hook/on_rtsp_realm
on_shell_login=https://127.0.0.1/index/hook/on_shell_login
on_stream_changed=https://127.0.0.1/index/hook/on_stream_changed
on_stream_none_reader=https://127.0.0.1/index/hook/on_stream_none_reader
on_stream_not_found=https://127.0.0.1/index/hook/on_stream_not_found
on_server_started=https://127.0.0.1/index/hook/on_server_started

音视频开发5. ZLMediaKit库入门使用 编译安装相关推荐

  1. C++音视频开发从放弃到入门(基于FFmpeg+OpenCV)

    前言 音视频开发一定要学C++吗?答案是肯定的.虽然其它语言也能搞音视频开发,甚至使用起来更简单,但"语言越高级,离真相就越远",当你的功能需求日益增多,程序的性能需求越来越迫切, ...

  2. 音视频开发(4)---Windows下Red5安装与使用入门

    Windows下Red5安装与使用入门 简介 Red5是一个采用Java开发开源的Flash流媒体服务器.它支持:把音频(MP3)和视频(FLV)转换成播放流: 录制客户端播放流(只支持FLV):共享 ...

  3. Android 音视频开发入门指南

    最近收到很多网友通过邮件或者留言说想学习音视频开发,该如何入门,我今天专门写篇文章统一回复下吧. 音视频这块,目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的,希望我后面能挤出时间整 ...

  4. C++音视频开发核心知识,小白入门必看基础知识

    经常收到一些网友的来信或者留言,反馈如下这样的困惑: "我是一名应届毕业生,该如何快速地成长起来" "我只懂 C/C++,是学 Android 开发有前途,还是 iOS ...

  5. 音视频开发总结之二Android平台相关

    一. 音视频采集流程 串联整个音视频录制流程,完成音视频的采集.编码.封包成 mp4 输出. 通过摄像头和麦克风获得实时的音视频数据: 播放流程: 获取流->解码->播放. 录制播放路程: ...

  6. 从开发小白到入职抖音音视频开发岗位技术总结

    1.职业发展的迷茫 前几天发了一篇关于音视频开发学习录总结,文章链接:https://blog.csdn.net/Linuxhus/article/details/112705431 收到一些网友的来 ...

  7. 都2021了作为一名Android开发者,还不学音视频开发?我劝你早点认清现实!

    缘起 最近经常遇到一些同学问我如何学习音视频,怎样才能快速上手?还有一些对音视频不了解的同学问我该不该学习音视频?作为一名音视频行业的10年Android老兵,我有一些思考分享给大家,希望能对你有所帮 ...

  8. 做音视频开发,你读对书了吗?(内有福利)

    相比于易学难精的很多技术,音视频开发可以说是难入门.更难精通了,尤其是那些查无可查的bug想想都头痛,就算是从业十多年的老兵或许都还有很多棘手的案例,"音视频开发--从入门到弃坑" ...

  9. 2022全网最详细的音视频开发学习路线,零基础到项目实战,从小白到音视频专家

    前言 音视频的历史与前景在这里就不介绍了,小编之前的文章里面都有讲到. 行业现状分析 核心竞争力:定义音视频是程序届的皇冠,掌握音视频意味着拿到通往未来的船票,不用担心会被其他人替代.音视频是有门槛的 ...

最新文章

  1. 一群机器狗亮相MIT,集体后空翻、踢足球,网友:赶紧去看黑镜压压惊
  2. peoplepicker控件的使用
  3. html引入外部css_CSS 三种基础选择器
  4. 0x80004005错误代码解决方法_记一次win10更新升级失败的解决
  5. HDU 3350 #define is unsafe
  6. 肖哥所有课程/HCNA HCNP/安全/云计算/虚拟化/linux/视频教程/资料软件下载链接
  7. Zotero | zotero与endnote题录与pdf文件的完整互转(2)
  8. 企业资源计划(ERP)原理与实践第一章
  9. 人工智能(7)---一文读懂人脸识别技术:商业应用、产品落地、核心技术、市场规模
  10. 讲师靓照大集合,为最喜爱的讲师投票吧!iOS DevCamp Android DevCamp
  11. 关系型数据库设计之从E-R图绘制到数据库表设计
  12. 【记录】解决visio流程图复制到word中字符间距改变的问题
  13. 黑马全新推出《2022年最实用的PS全套教程》
  14. 看阿玛尼迪迪的总结后的自感
  15. 云村简史:网易云音乐八年生死时速
  16. ERP的实施步骤是什么?
  17. java设计中期检查表_毕业实习中期检查表以附件形式上传
  18. 315Mhz、433Mhz无线遥控信号的解码分析和模拟 超再生遥控器
  19. python如何清空excel表格_python 删除excel表格重复行,数据预处理操作
  20. 计算机科学与技术学费贵吗,在职计算机科学与技术研究生学费贵吗?

热门文章

  1. 正则表达式—HTML中的匹配
  2. 热血男孩滕文泽 受邀担任第六季完美童模全球总决赛形象大使
  3. 用java创建person类_创建一个Person类,有以下属性:名字、身高、性别、年龄,创建10个对象,用java程序...
  4. Teamcenter8 更改料号所有者操作
  5. LIB,DLL区别 及 QT中如何添加LIB,DLL
  6. [时间序列分析][4]--AR模型,MA模型,ARMA模型介绍
  7. [CodeForces908G]New Year and Original Order
  8. 程序员应对面试的好东西
  9. Vue调用摄像头录制视频和音频并上传给后端或下载到本地
  10. Attention Map