流媒体搭建
一、SRS
1.下载及编译:
git clone -b develop https://gitee.com/ossrs/srs.git &&
cd srs/trunk && ./configure && make && ./objs/srs -c conf/srs.conf
中间如有提示需要安装什么软件,根据提示进行安装,接着后面的步骤进行。
2.检验是否成功
1.Open http://localhost:8080/ to check it(http://10.10.14.103:8080/ )
2. ./etc/init.d/srs status
3.推送视频流
d:
cd D:\Demo\CGAvioRead\Debug
ffmpeg -re -stream_loop -1 -i d:/H264_AAC_2021-02-10_1080P.mp4 -vcodec copy -acodec copy -f flv -y rtmp://10.10.14.103:1935/live/Camera_00002
4.视频的播放
1.VLC
2.SRS播放器
- RTMP (by VLC): rtmp://10.10.14.103/live/livestream
- H5(HTTP-FLV): http://10.10.14.103:8080/live/livestream.flv
- H5(HLS): http:// 10.10.14.103:8080/live/livestream.m3u8
5. RTMP to WebRTC
1).服务器运行
./objs/srs -c conf/rtmp2rtc.conf:
2)推流
ffmpeg -re -stream_loop -1 -i d:/H264_AAC_2021-02-10_1080P.mp4 -vcodec copy -acodec copy -f flv -y rtmp://10.10.14.103:1935/live/Camera_00002
3)拉流
- http://localhost:8080/ (http://10.10.14.103:8080/ )点击进入SRS播放器
- RTC播放器
二、ZLMediaKit
参照:https://segmentfault.com/a/1190000041737848
1.获取代码
代码从git获取,如果没安装git,需要执行
sudo apt-get install git
cd /opt
#拉取项目代码
git clone https://github.com/ZLMediaKit/ZLMediaKit.git
#国内用户推荐从同步镜像网站gitee下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#不要忘了这句命令
git submodule update --init
2.安装编译器
#安装gcc
sudo apt-get install build-essential
#安装cmake
sudo apt-get install cmake
3.依赖库
1)openssl安装编译
#如果之前安装了可以先卸载:apt -y remove openssl
cd /opt
#从git下载
git clone https://github.com/openssl/openssl.git
#如果git下载太慢或者连接有问题(比如我),可以到gitee下载
git clone https://gitee.com/mirrors/openssl.git
#下面的依次执行
mv openssl openssl-src && cd openssl-src
./config --prefix=/opt/openssl
make -j4
sudo make install
cd /opt/openssl && cp -rf lib64 lib
2)libsrtp安装编译
cd /opt
git clone https://gitee.com/mirrors/cisco-libsrtp.git
cd cisco-libsrtp
./configure --enable-openssl --with-openssl-dir=/opt/openssl
make -j4
sudo make install
4.构建和编译ZLMediaKit
cd /opt/ZLMediaKit
mkdir build
cd build
cmake .. -DENABLE_WEBRTC=true -DOPENSSL_ROOT_DIR=/opt/openssl -DOPENSSL_LIBRARIES=/opt/openssl/lib
cmake --build . --target MediaServer
补充GDB调试
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
5.补充操作
上一步操作执行后,运行服务成功但没有demo页面,发现对应的www文件夹以及ssl证书并未放入指定目录,需要进行补充操作
#把www文件夹复制到编译后的目录
cd /opt/ZLMediaKit
sudo cp -r www release/linux/Debug/
#把自带的ssl证书放到编译后的目录
sudo cp -r default.pem release/linux/Debug/
6.启动服务
cd /opt/ZLMediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#以守护进程模式启动
./MediaServer -d &
之后浏览器打开https://你的服务器ip/webrtc(https://10.10.14.103/webrtc)可以成功推流拉流
7、视频推送测试
1)文件推送测试
ffmpeg -re -stream_loop -1 -i d:/H264_AAC_2021-02-10_1080P.mp4 -vcodec copy -acodec copy -f flv -y rtmp://10.10.14.103:1935/live/Camera_00002
2)摄像头测试
- https://10.10.14.103/webrtc
- url: https://10.10.14.103/index/api/webrtc?app=live&stream= Camera_00002
&type=push
- 点击”开始(start)”测试。
8、文件播放测试
1)RTMP用VLC
2)webrtc用自带测试程序
- https://10.10.14.103/webrtc
- url:https://10.10.14.103/index/api/webrtc?app=live&stream=Camera_00002&type=play
- 点击”开始(start)”测试。
三、Live555
参照:https://www.jianshu.com/p/b81cf313b0c2
1.下载安装
- wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz
- tar -xzvf live555-latest.tar.gz
- cd live
- ./genMakefiles linux-64bit
- make
2、运行
- cd mediaServer
- ./live555MediaServer
这样就启动了一个 rtsp server,根据提示当前只支持部分视频格式,并不支持.mp4后缀的文件。
可以看到,提示中有这么一句话:rtsp://10.10.14.103/<filename>。说明可以用rtsp协议来访问文件,试了一下rtsp可以访问,http不行。
可以使用lsof -l:554查看进程是否起来。
3、测试
1)当前目录下创建一个video的文件夹,在文件夹里上传一个如上图所示后缀的视频文件。
2)客户端使用VLC,选择打开网络串流。默认554时不需要添加端口号。
四、nginx搭建rtmp服务器
1.搭建过程
1)安装编译 nginx 所需要的库
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
2)下载 nginx-1.21.6.tar.gz
wget http://nginx.org/download/nginx-1.21.6.tar.gz
3)下载 nginx-rtmp-module
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
4)解压
- 解压nginx文件
tar -zxvf nginx-1.21.6.tar.gz
- 解压rtmp模块
unzip master.zip
5)编译
- 进入解压后的nginx路径
cd nginx-1.21.6
- 编译
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
- 安装
make
sudo make install
6)启动nginx,检测nginx是否能成功运行
sudo /usr/local/nginx/sbin/nginx
如果没有提示报错,则说明运行成功了
7)配置nginx
使用RTMP, /usr/local/nginx/conf/nginx.conf
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
}
}
8)重启nginx服务器
sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/ngin
2、测试
1)OBS推流,推流地址:rtmp://IP:1935/appname/streamname,本次配置使用的appname为live,因此推流地址为:rtmp://1.1.1.1:1935/live/test.
2)也可用ffmpeg推流
ffmpeg -re -stream_loop -1 -i d:/H264_AAC_2021-02-10_1080P.mp4 -vcodec copy -acodec copy -f flv -y rtmp://10.10.14.103:1935/live/Camera_00002
五、ABLMediaServer
1.代码来源
QQ群:873666268 “文件”
2.编译
1)导入相关的库
export LD_LIBRARY_PATH=/home/zzl/ABLMediaServer/Linux/ffmpeg-4.3.4/lib
export LD_LIBRARY_PATH=/home/zzl/ABLMediaServer/bin
2)上述方法是临时导入库,永久性导入可试下述方法
root 用户
vim ~/.bash_profile
LD_LIBRARY_PATH=/home/zzl/ABLMediaServer/Linux/ffmpeg-4.3.4/lib:$LD_LIBRARY_PATH
LD_LIBRARY_PATH=/home/zzl/ABLMediaServer/bin:$LD_LIBRARY_PATH
3)Makefile文件的修改
- 将Makefile文件从./ABLMediaServer复制到./bin文件中
- 修改文件,使编译过后的可执行文件在bin目录中并且能调试。修改过后的makefile文件内容示例:
LIBS = -L./ \
-L../Linux/ffmpeg-4.3.4/lib \
…
g++ -std=c++11 -g -o ABLMediaServer ABLMediaServer.o
…
ABLMediaServer.o:../ABLMediaServer/ABLMediaServer.cpp
g++ -std=c++11 $(INCLUDES) -g -c ../ABLMediaServer/ABLMediaServer.cpp
- 进入bin目录,make clean;make。
3测试
1)用ODB或ffmpeg推流,如:
fmpeg -re -stream_loop -1 -i d:/H264_AAC_2021-02-10_1080P.mp4 -vcodec copy -acodec copy -f rtsp -rtsp_transport tcp rtsp://10.10.14.103:554/live/Camera_00001
2)拉流
VLC:
rtsp://10.10.14.103:554/live/Camera_00001
rtmp://10.10.14.103:1935/live/Camera_00001
http://10.10.14.103:8088/live/Camera_00001.flv
http://10.10.14.103:5088/live/Camera_00001.mp4
http://10.10.14.103:9088/live/Camera_00001.m3u8
easyplay:
ws://10.10.14.103:6088/live/Camera_00002.flv