流媒体搭建

一、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播放器

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)拉流

二、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)摄像头测试

&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

posted @ 2023-02-15 13:10  泽良_小涛  阅读(183)  评论(0编辑  收藏  举报