树莓派nginx+ffmpeg+rtmp搭建流媒体服务器

发布于 2023-05-06  2,782 次阅读


本文半年前就进度过半,不曾想鸽了许久,今天终于闲着可以补完了

基础的nginx安装就不讲了,向前查阅lnmp环境搭建一文

连lnmp都搭不起来不赶紧去好好补基础还有心情搞什么rtmp?

1.安装依赖软件

FFmpeg依赖yasm。FFmpeg 为了提高编译速度,使用了汇编指令,如MMX和SSE。如果没有yasm的话,编译FFmpeg就会报错。

yum install -y yasm

x264是一个基于h.264/AVC的免费开源的视频解码器。

wget https://codeload.github.com/qupai/x264/zip/master
tar -zxvf x264-master
cd x264-master
#查看帮助信息
./configure --help
#我们需要的是x264以.so or .a的形式来支援ffmpeg,所以一般关注shared和static就可以, --disable-cli一定要填,不然make出错
./configure --prefix=/usr/local/x264 --enable-shared --enable-static  --disable-cli --enable-strip --enable-yasm 
make
make install

在FFmpeg官网获取源码 http://ffmpeg.org/download.html ,配置完编译安装

wget https://ffmpeg.org/releases/ffmpeg-5.1.tar.bz2
tar -jxvf ffmpeg-4.1.tar.bz2
cd ffmpeg-4.1
./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-yasm --enable-libx264 --enable-gpl --enable-pthreads --extra-cflags=-I/usr/local/x264/include --extra-ldflags=-L/usr/local/x264/lib --disable-x86asm
make
make instal

2.PKG_CONFIG_PATH 变量设置

ffmpeg 安装程序会在 /usr/local/ffmpeg/lib/pkgconfig 目录下提供 libavcodec.pc libswscale.pc 等5个.pc文件,分别对应安装的五个库文件。必须要让 pkg-config 能找到 ffmpeg 的 *.pc 文件,通过 PKG_CONFIG_PATH 来设置 pkg-config 来更新

cd /usr/local/ffmpeg/lib/pkgconfig/
vim /etc/profile
#添加如下配置:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/local/ffmpeg/lib/pkgconfig
export FFMPEG_HOME=/usr/local/ffmpeg
export PATH=$PATH:$FFMPEG_HOME
#使配置立即生效:
source /etc/profile

3.测试推流

ffmpeg -version
 
ffmpeg -f v4l2  -r 25 -video_size vga -pix_fmt yuv420p -i  /dev/video0  -b:v 300k -c:v h264_omx -f flv rtmp://10.8.0.188/live/01
 
ffmpeg -f video4linux2 -qscale 10 -r 12 -s 640x480 -i /dev/video0 -f alsa -i hw:1 -ab 16 -ar 22050 -ac 1 -f mp3 -f flv rtmp://127.0.0.1/rtmpsvr/rtmp1
ffmpeg -f video4linux2 -s  640x480 -i /dev/video0  -f flv rtmp://127.0.0.1:1935/live/live
 
ffmpeg -r 30  -i /dev/video0 -vcodec h264 -max_delay 100 -f flv -g 5 -b 700000 rtmp://10.8.0.188/rtmpsvr/rtmp1
 
ffmpeg -f v4l2 -framerate 10 -i /dev/video0 -q 10  -f flv rtmp://127.0.0.1/live/wei
 
 
ffmpeg -f v4l2 -framerate 10 -i /dev/video0 -q 10  -f flv rtmp://127.0.0.1/hls/cctv
 
ffmpeg  /dev/video0 
 
ffmpeg  /dev/video0  -f flv rtmp://127.0.0.1/live/live

4.nginx修改配置

vim /etc/nginx/conf/nginx.conf

#在该nginx.conf文件的最后面添加

rtmp { 
 server {
 listen 8888;
    application live {
    live on;
    record off;
    }
  }
}

5.重启&推流到nginx流媒体服务器测试

在树莓派中使用ffmpeg推流一个MP4的文件到流媒体服务器

ffmpeg -re -i test.mp4 -c copy -f flv rtmp://192.168.1.10:8888/live

6.在局域网内任意机器查看rtmp推流

rtmp://192.168.1.10:8888/live

7.推流树莓派CSI摄像头视频流命令

ffmpeg -ss 0 -i /dev/video0 -c:v h264_omx -f flv rtmp://192.168.1.10:8888/live
 
ffmpeg -f v4l2 -r 25 -video_size vga -pix_fmt yuv420p  -i /dev/video0 -b:v 500k -c:v h264_omx -an -f flv rtmp://192.168.1.10:8888/live

END


君子慎独,不欺暗室。卑以自牧,含章可贞。