音视频开发系列
文章目录
- 音视频开发系列
- 前言
- 一、ZLMediaKit是什么?
- 二、使用过程
- 1.编译、安装、运行
- 2.推流、拉流
- 总结
前言
目前、比较有名的流媒体服务器有ZLMediaKit、srs、live555、eadydarwin等。因为srs是单线程服务、对于多核服务器的支持需要通过部署多个服务来充分利用多核特性,本文主要介绍一种通用的简单的可利用多核特性的流媒体服务器是ZLMediaKit,另外一方面其支持多种流媒体协议 rtsp、rtmp、httpflv、hls、fmp4、webrtc等,而且支持视频的直播、录制等功能。
流媒体服务器是流媒体应用的核心系统,是运营商向用户提供视频服务的关键平台。流媒体服务器的主要功能是对流媒体内容进行采集、缓存、调度和传输播放。流媒体应用系统的主要性能体现都取决于媒体服务器的性能和服务质量。因此,流媒体服务器是流媒体应用系统的基础,也是最主要的组成部分。
zlmediakit管网地址:zlmdiekit
一、ZLMediaKit是什么?
• 基于C++
• 支持协议:RTSP、RTMP、HLS、HTTP-FLV、WebSocket-FLV、GB28181、HTTP-TS、WebSocket-TS、HTTP-fMP4、WebSocket-fMP4、MP4、WebRTC
• 基于多路复用/多线程/异步网络IO、并发性能好
• 经过长期的市场验证
• 支持linux、macos、ios、android、windows
• 画面延控制在500毫秒内,最低可达100毫秒
• 提供 C API做为SDK,语言也可以直接调用API
• 可以直接部署为MediaServer服务器
• 提供restful api、web hook
• 支持H265/H264/AAC/G711/OPUS
• 支持集群、按需转协议、按需推拉流、先播后推、断连续推等功能
• 单机10W级别播放器,100Gb/s级别io带宽
二、使用过程
1.编译、安装、运行
环境linux centos7.5的环境,本文介绍linux编译、运行等
下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init
编译
cd ZLMediaKit
mkdir build
cd build
#macOS下可能需要这样指定openss路径:cmake .. -DOPENSSL_ROOT_DIR=/usr/local/Cellar/openssl/1.0.2j/
cmake ..
make -j4
运行
在linux下启动:
注意:配置文件也一并拷贝到了ZLMediaKit/release/linux/Debug,如需自定义功能,可以修改ZLMediaKit/release/linux/Debug
cd ZLMediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#以守护进程模式启动
./MediaServer -d &
2.推流、拉流
推流:
1、rtmp推送到ZLM
#注释因为rtmp流本身flv支持h264+aac,因此相机上必须将视频流设定为h264,音频必须设定为aac,否则ffmpeg不转码的情况下是推流失败的
./ffmpeg -re -rtsp_transport tcp -i rtsp://admin:admin@CameraIp:554/h264/ch33/main/av_stream -vcodec copy -acodec copy -f flv -y rtmp://ServerIp/live/livestream
rtsp推送到ZLM
./ffmpeg -re -rtsp_transport tcp -i rtsp://admin:admin@CameraIp:554/h264/ch33/main/av_stream -c copy -f rtsp -rtsp_transport tcp rtsp://SeverIp/live/livestream
拉流:
rtmp://ServerIp/live/livestream
rtsp://ServerIp/live/livestream
http://ServerIp:80/live/livestream/hls.m3u8
http://ServerIp:80/live/livestream.live.ts
http://ServerIp:80/live/livestream.live.mp4
局域网内,vlc播放相机与zlm的rtsp的时延2s,vlc本身也是有缓存时间的,因此整理来说zlmdiekit实时性特别好。
总结
本文介绍了最简单的ZLM使用实例,希望对你的学习工作有所帮助。