编译
- 拉取代码的方式在网上很多介绍,直接只是简单说下:
#国内用户推荐从同步镜像网站gitee下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init
- 安装编译器:
yum -y install gcc
yum -y install gcc-c++
- 安装依赖:
#安装libssl-dev
yum install openssl-devel
#安装libsdl-dev
yum install SDL-devel
- ffmpeg推荐尝试源码安装,这里不做介绍;cmake安装网上都有详细的教程
- 因为要求的ssl版本比较高这里使用下列方式:
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar -xvzf openssl-1.1.1k.tar.gz
yum install -y zlib zlib-devel perl-CPAN
./config shared --openssldir=/usr/local/openssl --prefix=/usr/local/openssl
make && make install
echo "/usr/local/lib64/" >> /etc/ld.so.conf
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig
# ln -s /usr/local/openssl/bin/openssl /usr/local/bin/openssl # 替换系统openssl,非必须,也最好不要
openssl version -a
- libsrtp安装
wget https://github.com/cisco/libsrtp/archive/refs/tags/v2.5.0.tar.gz
tar -xvzf libsrtp-2.5.0.tar.gz
cd libsrtp-2.5.0
./configure --enable-openssl --with-openssl-dir=/usr/local/openssl
make && make install
- 安装ZLMediakit
mkdir build
cd build
cmake .. -DENABLE_WEBRTC=true -DOPENSSL_ROOT_DIR=/usr/local/openssl -DOPENSSL_LIBRARIES=/usr/local/openssl/lib
cmake --build . --target MediaServer
上面的DENABLE_WEBRTC表示开启WebRTC,-DENABLE_FFMPEG=true,表示开启ffmpeg
8. 启动或关闭
./release/linux/Debug/MediaServer // 加-d会一守护进程的方式启动,再加&可以后台不占用当前窗口
killall -2 MediaServer //关闭
- 对于云服务的安全组配置是否打开必要的端口,
- 推流测试
ffmpeg -re -i 11-10-套接字与套接字编程.mp4 -c:v libx264 -c:a aac -f rtsp -rtsp_transport tcp rtsp://39.97.110.12:558/live/test
补充::对于外部访问需要将:
allow_ip_range=::1,127.0.0.1,172.16.0.0-172.31.255.255,192.168.0.0-192.168.255.255,10.0.0.0-10.255.255.255
改为:
allow_ip_range=
或者将自己的ip加入到列表中
拉流
rtsp://39.97.110.12:558/live/test
rtmp://39.97.110.12:1936/live/test
http://39.97.110.12:8081/live/test/hls.m3u8
http://39.97.110.12:8081/live/test.live.ts
http://39.97.110.12:8081/live/test.live.mp4
http://39.97.110.12:8081/live/test.live.flv
网页管理
- webrtc流管理
https://39.97.110.12:8082/webrtc/
这样就可以打开流地址;
- 管理页面
https://39.97.110.12:8081/webassist/index.html
使用addFFmpegSource的api生成水印
- api调用如下
命令如下:
https://39.97.110.12:8081/index/api/addFFmpegSource?src_url=rtsp://127.0.0.1:558/live/test&dst_url=rtmp://127.0.0.1:1936/live/test1&timeout_ms=10000&secret=095c73f7-9e6b-4d8c-a738-d96d2d1925ca
其中的src_url是指已经存在的流的完整链接,也就是要被代理流的地址,
dst_url是指目的地址,一般都是推送给自己;
- 服务配置修改,其中的ffmpeg项目修改如下:
cmd=%s -re -i %s -c:a copy -vf drawtext=text='123hello321':x=(w-tw):y=(2*lh):fontcolor=red:fontsize=150:fontfile='/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf' -c:v libx264 -f rtsp -rtsp_transport tcp %s
也就是将其中cmd项修改成上面的:fontfile一定要指定,如果要支持中文就使用中文字库;
效果如下:
这个是后台管理界面的拉流显示效果。
如果要支持中文字体:
先试用c-list :lang=zh
查看是否有中文字体,如果没有就安装:
- 安装字体
// wqy-zenhei.ttc:文泉驿正黑字体 NotoSansCJK-Regular.ttc(思源字体)
sudo apt-get install fonts-wqy-zenhei fonts-noto-cjk
然后使用下列命令查看安装地址:
find /usr/share/fonts -name "*.ttf"
find /usr/share/fonts -name "*.ttc"
自定义字体安装:
- 安装支持工具
sudo apt install ttf-mscorefonts-installer fontconfig
- 进入到字体目录
cd /usr/share/fonts/truetype/
mkdir myfonts
- 将下载字体文件到
/usr/share/fonts/truetype/myfont
,一般是tts或ttf; - 执行下列命令刷新:
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv
如图: