linux环境搭建nginx+ffmpeg流媒体
2025-05-10 12:58:18 0 举报
AI智能生成
linux环境搭建nginx+ffmpeg流媒体,实现rtsp转rtmp,通过hls实现浏览器在线播放监控画面、回放视频文件等,例如海康的rtsp流
作者其他创作
大纲/内容
nginx
mkdir /opt/software<br>
下载nginx压缩包,并上传到software<br>
下载rtmp模块包,并上传到software
cd /opt/software<br>
tar -xvf nginx-1.XXX.tar.gz<br>如果需要解压到其他文件夹,增加指令-C /opt/software
unzip nginx-rtmp-module-master.zip<br>如果需要解压到其他文件夹,增加指令-d /opt/software
如果没有unzip,请安装yum install unzip
安装nginx依赖<br>yum install -y gcc-c++zlib zlib-developenssl openssl-devel pcre pcre-devel<br>
./configure --add-module=/opt/software/nginx-rtmp-module --with-http_ssl_module --with-http_mp4_module<br>默认安装到/usr/local/nginx,如需修改请添加指令--prefix=/usr/local/nginx-1.xxx,安装到指定目录下<br>
make && make install
/usr/local/nginx/sbin/nginx<br>启动nginx
ps -ef |grep nginx<br>查看是否有nginx进程,以便检查是否安装成功
/usr/local/nginx/sbin/nginx -s stop<br>停止nginx
修改配置<br>vim /usr/local/nginx/conf/<br>
在nginx下创建vod文件夹<br>mkdir /usr/local/nginx/vod<br>
启动NGINX<br>
ps -ef | grep nginx<br>检查是否在运行<br>
开通防火墙端口,视实际情况而定,ffmpeg和nginx-rtmp在同一台服务器,则1935可以不开,8554为对外提供视频支持的端口,也可以再加一个nginx代理,或者直接在这个nginx上做调整,同时具备拉流和转发接口请求的能力<br>firewall-cmd --zone=public --add-port=1935/tcp --add-port=8554/tcp --permanent<br>
使防火墙配置生效<br>firewall-cmd --reload<br>
ffmpeg
安装
下载依赖nasm,并上传到software<br>
安装依赖
安装X264(建议安装,作为备用,因为不支持补装,后续如果要用,需要卸载ffmpeg,再重新安装,会比较麻烦,虽然可能用不到x264)<br>具体看处理器是否支持硬编码方式<br>
下载X264编码器,并上传到software(如果不用x264编码,可以忽略)<br>
安装bzip2<br>yum -y install bzip2<br>
如果没有,可以更新软件包列表<br>yum update
解压tar jxvf x264-master.tar.bz2
./configure --enable-shared --enable-static --prefix=/usr/local/x264<br>make && make install<br>
检查是否安装成功<br>x264 --version
如果安装时,指定了路径--prefix,需要执行下面的步骤<br>mv /usr/local/x264/lib/pkgconfig/x264.pc /usr/share/pkgconfig<br>
下载ffmpeg的安装包
tar -xvf ffmpeg-xxx.tar.xz<br>
安装ffmpeg,建议指定--prefix,否则会安装到local下<br>
添加环境变量,便于调用
测试
测试是否具备推流能力:启动推流,后台运行模式(注意,请确保nginx-rtmp已运行)<br>采用的软编码方式,好处是不容易出错,基本上能兼容大部分操作系统,坏处是占用资源非常多,实际运行根据自己的服务器,结合ffmpeg的参数进行调优,一般采用硬编码+限制分辨率/压缩率/编码速度等来降低资源占用<br>
1 代表标准输出<br>2 代表标准错误<br>1>/dev/null 把标准输出导入到null设备,也就是消失不见,如果要重定向到某个文件,可以1>1.txt<br>2>&1 把标准错误也导入到标准输出同样的地方
如果提示错误:ffmpeg: error while loading shared libraries: libavdevice.so.61: cannot open shared object file: No such file or directory<br>
修改文件<br>vi /etc/ld.so.conf<br>
最后一行添加<br>/usr/local/lib<br>/usr/local/ffmpeg/lib<br>
执行<br>ldconfig
卸载
进入源码的目录,执行<br>make uninstall<br>然后进入安装目录/usr/local/执行<br>rm -rf ffmpeg<br>然后进入源码目录,删除源码
0 条评论
下一页