目录
一、下载nginx-rtmp-module包
首先讲一下,流服务器会搭建在ubuntu18.04系统主机上,因此nginx-rtmp-module和下边的nginx都是在ubuntu18.04系统主机上的,因此从当前一到后边四的操作均在ubuntu18.04上
git clone https://github.com/arut/nginx-rtmp-module.git
二、安装nginx
wget http://nginx.org/download/nginx-1.21.5.tar.gz
tar -zvxf nginx-1.21.5.tar.gz
cd nginx-1.21.5
./configure --prefix=/usr/local/src/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module
make -j8
make install
其中./configure的时候有可能会失败,报“..../configure: error: SSL modules require the OpenSSL library...”之类的错误,那么ubuntu这里的需要安装一个组件:
sudo apt-get install libssl-dev
还没有配环境变量,先启动测试一下nginx:
cd /usr/local/src/nginx/sbin
./nginx
ps -ef|grep nginx
访问一下,http://你的nginx服务器ip:80
三、nginx配置环境变量
参考:离线安装openresty_RayChiu757374816的博客-CSDN博客_openresty离线部署
ubuntu单独挂载的硬盘权限问题不能友好启动nginx_RayChiu757374816的博客-CSDN博客
sudo vi ~/.bashrc
#然后写入下边这一行,注意对应自己的安装路径
export PATH=$PATH:/usr/local/src/nginx/sbin
source ~/.bashrc
四、在nginx.conf中配置rtmp:
rtmp {
server {
listen 1935; #监听的端口
chunk_size 4000;
application hls { # 这里的hls一定要和/home/raychiu/data/ffmpegTest/hls的hls相同,否则报:rtmp://localhost:1935/home/raychiu/data/ffmpegTest/hls: Input/output error错
live on; #开启实时
hls on; #开启hls
hls_path /home/raychiu/data/ffmpegTest/hls; #rtmp推流请求路径,文件存放路径
hls_fragment 5s; #每个TS文件包含5秒的视频内容
}
}
}
五、安装ffmpeg
ffmpeg在树莓派端安装,用于从树莓派推流至流服务器。
1.安装yasm:
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make && sudo make install
2.安装ffmpeg:
ffmpeg是超快音视频编码器(类似于爱剪辑),ffmpeg音视频处理流程:
安装过程:
wget https://ffmpeg.org/releases/ffmpeg-3.4.6.tar.gz
tar zxvf ffmpeg-3.4.6.tar.gz
cd ffmpeg-3.4.6/
./configure --prefix=/usr/local --enable-shared --enable-static
make && sudo make install
3.配置ld.so.conf增加动态链接库路径:
在文件 /etc/ld.so.conf 末尾加上 /usr/local/ffmpeg 根据你的安装路径来。
ldconfig #使配置生效的命令
4.配置环境变量:
vi ~/.bashrc
export PATH="/usr/local/ffmpeg/bin:$PATH"
source ~/.bashrc
5.验证ffmpeg:
ffmpeg -version
ffserver -version
六、启动nginx服务器后用ffmpeg推流
启动nginx:
nginx
ffmpeg推流:
找一个视频文件,我这里找了一个123.mp4,然后
ffmpeg -re -i 123.mp4 -vcodec copy -codec copy -f flv rtmp://192.168.1.210:1935/hls
日志看出来正在推送视频流:
hls目录下渐渐看到一个个ts文件生成了 :
七、ffmpeg推流过程中用VLC拉流播放
测试推流一个视频文件:
前边一台Ubuntu服务器搭建了流服务器,树莓派上装了ffmpeg进行推流,拉流可以找一个第三方PC电脑测试,这里我们先找了一个windows电脑安装VLC客户端测试拉流。
经测试一定需要在推流过程中才能播放,VLC使用配置请参考:树莓派4B 32位系统初体验csi mipi接口摄像头_RayChiu757374816的博客-CSDN博客
地址:rtmp://192.168.1.210:1935/hls ,ip和端口和前缀hls,就是nginx流服务器配置的,自己对应自己的服务器配置即可。
效果:
测试ffmpeg调用usb摄像头推流
先给树莓派接上usb摄像头,调试可参考:树莓派初体验usb摄像头_RayChiu757374816的博客-CSDN博客
然后用ffmpeg开始推流
ffmpeg -f video4linux2 -i /dev/video0 -f flv rtmp://192.168.1.210:1935/hls
延迟感觉挺厉害,在5s以上吧大概。
八、使用ffplay拉流
ffplay rtmp://192.168.1.210:1935/hls