linux+nginx安装流媒体服务器

安装PCRE库

首先从剑桥大学计算机科学与技术系的FTP服务器下载PCRE库:

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz

解压和编译安装:

tar -xzvf pcre-8.40.tar.gz
cd pcre-8.40
./configure
make
make install

或者

yum install -y pcre pcre-devel

安装Nginx

参考来自博客的教程Nginx安装 安装Nginx。

下载Nginx流媒体所需的nginx-rtmp-module模块,请自行下载,按以下步骤操作:

链接:http://pan.baidu.com/s/1nv9E45b 密码:1pr8

mv nginx-rtmp-module-master.zip nginx-rtmp-module.zip
unzip nginx-rtmp-module.zip

解压后将文件夹重命名为相应的模块名称,例如“nginx-rtmp-module”。

接下来,在Nginx源代码目录下配置并编译Nginx,假设模块路径为/data/soft/nginx-rtmp-module

cd /path/to/nginx-source-directory
./configure --add-module=/data/soft/nginx-rtmp-module
make

如果之前已安装过Nginx且不想使用make install,则可以手动替换新编译好的Nginx可执行文件,确保先停止旧版Nginx服务:

./nginx -s quit
cp /home/liwei/nginx-1.8.0/objs/nginx /usr/local/nginx/sbin/

image.png

image.png

添加Nginx RTMP支持。

编辑Nginx配置文件以包含RTMP相关的server块,指定一个如/data/rmtp/play的目录作为存储位置。

image.png

同时创建日志文件夹,并初始化日志文件:

mkdir -p /usr/local/nginx/logs
touch /usr/local/nginx/logs/error.log
touch /usr/local/nginx/logs/access.log
mv /usr/local/nginx/logs/access.log /usr/local/nginx/logs/error.log logs/
cd /usr/local/nginx/sbin/
./nginx

安装FFmpeg

安装ffmpeg :官方下载链接
或者
链接:http://pan.baidu.com/s/1boWdoRX 密码:a2bf

从FFmpeg官网下载FFmpeg源码包,或使用给出的百度网盘链接下载并解压:

tar jxf ffmpeg-3.2.4.tar.bz2
cd ffmpeg-3.2.4

配置FFmpeg并安装至/usr/local/ffmpeg

./configure --disable-yasm --enable-shared --prefix=/usr/local/ffmpeg
make
make install

设置环境变量并在全局生效(编辑/etc/profile文件):

vim /etc/profile

添加以下内容:

export FFMPEG_HOME=/data/soft/ffmpeg
export PATH=$FFMPEG_HOME/bin:$PATH
source /etc/profile # 刷新环境变量使其立即生效

实现推流(Pushing Stream)

例如rtmp://192.168.1.151:1935/live,要将本地一个名为test.mp4的视频文件推送到服务器:

# 使用FFmpeg向服务器推流
cd /data/soft/ffmpeg/bin
./ffmpeg -re -i /data/test.mp4 -c copy -f flv rtmp://192.168.1.151:1935/live/mystream
  • -re 参数表示以接近实时的速度读取输入文件。
  • -i test.mp4 是输入文件路径。
  • -c copy 表示尽可能直接复制编码格式,避免重新编码(如果原始视频编码格式已被服务器支持)。
  • -f flv 指定输出格式为FLV,这是RTMP协议常用的封装格式。
  • rtmp://192.168.1.151:1935/live/mystream 是推流目标URL,其中live通常是服务器上的应用名,mystream是流的名称。

实现拉流(Pulling/Pulling Stream)

要从服务器拉取刚才推上去的流并播放,同样可以使用FFmpeg结合ffplay工具或者其他支持RTMP协议的播放器(如VLC)。

使用FFplay拉流播放:

ffplay rtmp://192.168.1.151:1935/live/mystream

如果你想要将拉下来的流保存为文件或者转码后再分发,可以这样操作:

# 将拉流内容保存为新的MP4文件
ffmpeg -i rtmp://192.168.1.151:1935/live/mystream -c copy output.mp4

注意事项:

  • 确保服务器配置正确,允许推流和拉流请求。
  • 确认RTMP服务器的具体URL结构和所需的认证信息(如有必要)。
  • 不同的流媒体服务器可能会有不同的API或控制台管理界面用于创建和管理流。
  • 对于动态生成的流,比如来自摄像头或麦克风的实时音视频流,需要调用正确的设备作为输入源,并且可能需要额外的参数来进行音频和视频的同步和处理。

如果遇到动态链接库加载问题,如error while loading shared libraries: libavdevice.so.52,解决办法是:

  1. 更新系统共享库缓存:
echo "/usr/local/ffmpeg/lib" >> /etc/ld.so.conf
ldconfig -v
  1. 调整相关目录权限:
chmod -R 777 /usr/local/ffmpeg/lib

使用Java推流和拉流(自行百度)

在Java中实现推流和拉流可以通过集成第三方库,如Red5 Client、JavaCV(基于FFmpeg的Java包装)、Xuggler等来完成。

最后,再次尝试运行FFmpeg命令推送流至Nginx RTMP服务器。当所有步骤顺利完成且无错误提示时,表明Nginx与FFmpeg均已成功安装并配置,可以进行实时音视频流传输。

原文链接 https://www.hanyuanhun.cn | https://node.hanyuanhun.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值