搭建流媒体服务器
引言
这两天在学习流媒体相关的知识,下面是搭建流RTMP媒体服务器的过程。
准备
linux服务器一台,MP4格式影片一部。
ffmpeg、yasm、lame工具安装部署包。nginx及ngix的rtmp码流插件包
linux的公共组件包pcre-8.44及openssl-1.1.1k。
工具包准备
下面是我准备好的安装文件,可以通过上面的链接去下载新版本,或者直接去RTMP下载我使用的相同版本。
安装
解压并安装yasm汇编器
1 | tar -xvzf yasm-1.3.0.tar.gz //解压 |
yasm –version 可以查看到安装的结果,说明安装成功。
解压并安装解码器lame
1 | tar -zxvf lame-3.99.4.tar.gz |
配置PATH
vi /etc/profile
在文件末尾输入下面两句:
export ENCODER_PATH=/usr
export PATH=${ENCODER_PATH}/bin:$PATH
source /etc/profile
lame –version 可以查看到安装的结果,说明安装成功。
解压并安装ffmpeg
新建ffmpeg 安装目录/root/apps/ffmpeg4_3(这是我创建的安装目录),下面–prefix可以对应改正自己创建的安装目录。
1 | tar -xvzf ffmpeg-4.3.2.tar.xz |
安装完成后到安装目录下可以看到bin;include;lib;share四个文件夹:
配置PATH
vi /etc/profile
在文件末尾输入下面两句:
export FFMPEG_PATH=/root/apps/ffmpeg4_3
export PATH=${FFMPEG_PATH}/bin:$PATH
source /etc/profile
ffmpeg –version 可以查看到安装的结果,说明安装成功。
但是这个时候很有可能会打印下面的错误:
ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory
这是因为lib目录没有加载链接到系统库中,系统ld目录列表在/etc/ld.so.config中,这里面引用了/etc/ld.so.conf.d/下面所有的.conf文件。所以我们要在这创建ffmpeg.conf文件,并且写入/root/apps/ffmpeg4_3/lib
,然后执行ldconfig
再ffmpeg –version 查看版本。
如果进一步出现下面的报错,就在ffmpeg.config中添加/usr/local/lib
ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory
安装部署Nginx
安装nginx
解压文件
1 | tar -xvzf nginx-1.19.10.tar.gz |
进入nginx的解压路径,进行编译与安装
1 | ./configure --prefix=/usr/local/src/nginx --add-module=../nginx-rtmp-module-master --with-http_ssl_module --with-pcre=../pcre-8.44 --with-openssl=../openssl-1.1.1k --without-http_gzip_module |
进行rtmp模块配置
vi /usr/local/src/nginx/conf/nginx.conf
添加下面trmp模块。
1 | rtmp { |
启动nginx
1 | cd /usr/local/src/nginx/sbin |
推流测试
ffmpeg -re -i abc.mp4 -flvflags no_duration_filesize -c copy -f flv rtmp://服务器ip:1935/hangrtmp
看到上面的结果说明安装配置成功
如果出现下面错误,请在腾讯云服务器管理中放开端端口访问权限。
VLC进行网络串流播放
windows下载vlc-3.0.12
媒体-打开网络串流-输入rtmp://服务器ip:1935/hangrtmp-播放