前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流

FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流

原创
作者头像
aqi00
发布2024-06-02 12:33:11
5470
发布2024-06-02 12:33:11
举报
文章被收录于专栏:FFmpeg实战FFmpeg实战

​《FFmpeg开发实战:从零基础到短视频上线》一书在第10章介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流。不过MediaMTX的功能实在是太简单了,无法应用于真实直播的生产环境,真正能用于生产环境的流媒体服务器还要看SRS或者ZLMediaKit。

ZLMediaKit是一款国产的开源流媒体服务器,它基于C++11开发,支持多种流媒体协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC),支持的音视频编码标准包括H265、H264、AAC、G711、OPUS等。 通过结合FFmpeg与ZLMediaKit,可以很方便地测试音视频的推拉流。接下来以华为的欧拉系统为运行环境,介绍如何编译、安装、调试ZLMediaKit,详细的操作步骤说明如下。

一、编译安装ZLMediaKit

1、登录Linux服务器(比如华为云的欧拉系统),运行下列命令安装ZLMediaKit的依赖包。

代码语言:javascript
复制
yum install git
yum install openssl
yum install libsrtp

2、执行下面命令从gitee下载ZLMediaKit的源码。

代码语言:javascript
复制
cd /usr/local/src
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit

3、进入ZLMediaKit的源码目录,执行下面命令更新ZLMediaKit的依赖模块源码。

代码语言:javascript
复制
cd ZLMediaKit
git submodule update --init

4、依次运行下面命令配置ZLMediaKit。

代码语言:javascript
复制
mkdir build
cd build
cmake .. -DENABLE_WEBRTC=on

5、运行下面命令编译ZLMediaKit。

代码语言:javascript
复制
make

6、编译完成后,运行下面命令安装ZLMediaKit。

代码语言:javascript
复制
make install

命令执行完毕,ZLMediaKit的可执行程序将安装到ZLMediaKit源码路径的release/linux/Debug目录下。

二、编译安装FFmpeg

在Linux系统编译安装FFmpeg的详细步骤参见《FFmpeg开发实战:从零基础到短视频上线》一书的“1.2  Linux系统安装FFmpeg”,这里不再赘述。

三、启动ZLMediaKit

1、进入ZLMediaKit的安装目录:

代码语言:javascript
复制
cd /usr/local/src/ZLMediaKit/release/linux/Debug

2、打开配置文件config.ini,把http标签下的sslport值改为8443,如下所示。

代码语言:javascript
复制
sslport=8443

把http标签下的port值改为8080,如下所示。

代码语言:javascript
复制
port=8080

修改完毕,保存并退出config.ini。 3、执行下面命令,启动MediaServer服务。

代码语言:javascript
复制
./MediaServer -d &

若想启用安全协议SSL,则执行下面命令,启动带默认https证书的MediaServer服务。

代码语言:javascript
复制
./MediaServer -d -s ./default.pem &

4、检查服务器是否开启了下列端口: 554端口,用于rtsp协议,访问“rtsp://”开头的直播地址需要。 1935端口,用于rtmp协议,访问“rtmp://”开头的直播地址需要。 8080端口,用于http协议,访问“http://”开头的直播地址需要。 8443端口,用于https协议,访问“https://”开头的直播地址需要。

四、检查ZLMediaKit的视频推拉流

视频推流有RTSP和RTMP两种常见的流媒体协议。其中RTSP全称为“Real Time Streaming Protocol”(实时流传输协议),它由RealNetworks和网景公司共同提交。RTSP协议支持双向传输,允许服务器端和客户端之间实时通信,常用于需要播放、暂停、快进、快退等控制操作的视频点播场合。 RTMP全称为“RTMP    Real Time Messaging Protocol”(实时消息传输协议),它由Adobe公司提交。RTMP协议只支持单向传输,只允许从服务器端传输信息到客户端,常用于实时性较强的视频直播,比如带货直播、视频会议、在线课堂等场合。 下面通过ffmpeg把视频源推流给ZLMediaKit,并使用VLC播放器观察视频拉流效果。 1、执行以下命令,将本地视频通过RTSP协议推流给ZLMediaKit。

代码语言:javascript
复制
ffmpeg -re -stream_loop -1 -i "/usr/local/src/test/2018s.mp4" -vcodec h264 -f rtsp rtsp://127.0.0.1/live/test

若想将本地视频通过RTMP协议推流给ZLMediaKit,则需执行以下命令。

代码语言:javascript
复制
ffmpeg -re -stream_loop -1 -i "/usr/local/src/test/2018s.mp4" -vcodec h264 -f flv rtmp://127.0.0.1/live/test

2、打开VLC播放器,依次选择菜单“媒体”→“打开网络串流”,在网络URL框中输入下列任一地址,观看能否正常播放视频画面。

代码语言:javascript
复制
rtsp://124.***.***.***/live/test
rtmp://124.***.***.***/live/test
http://124.***.***.***:8080/live/test/hls.m3u8
http://124.***.***.***:8080/live/test.live.ts
http://124.***.***.***:8080/live/test.live.mp4
http://124.***.***.***:8080/live/test.live.flv

注意需要把上述地址中的“124.***.***.***”替换为流媒体服务器实际的公网地址。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、编译安装ZLMediaKit
  • 二、编译安装FFmpeg
  • 三、启动ZLMediaKit
  • 四、检查ZLMediaKit的视频推拉流
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档