因网上许多安装配置教程并不完整,安装过程中存在错误,而无法正常运行,经过多次调整和测试,所以整理成此稿。
系统的版本:Raspberry Pi OS 32 位(Buster)
主机:树莓派3B
不同版本存在差异,可能会出现其他错误
一、开启VNC并设置屏幕尺寸
sudo raspi-config
1、Display Options > VNC Resolution 设置分辨率
2、Interface Options > VNC > Enable
如果屏幕设置,不能生效可以,看我这个文章
二、更换国内源
sudo nano /etc/apt/sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
sudo apt-get update
安装Nginx
sudo apt-get install gcc g++ make cmake git
sudo apt-get install libavutil-dev libswscale-dev libswresample-dev libavcodec-dev libavformat-dev libavdevice-dev libavfilter-dev
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev
sudo apt-get install libz-dev
wget http://nginx.org/download/nginx-1.19.10.tar.gz
git clone https://github.com/arut/nginx-rtmp-module.git
tar -xzvf nginx-1.19.10.tar.gz
mv nginx-rtmp-module/ nginx-1.19.10/
cd nginx-1.19.10/
./configure --prefix=/usr/local/nginx --add-module=./nginx-rtmp-module --with-http_ssl_module
make -j4 && sudo make install
将nginx设置成服务
sudo nano /etc/init.d/nginx
sudo chmod 777 /etc/init.d/nginx
#! /bin/sh
# chkconfig: 2345 55 25
# Description: Startup script for nginx webserver on Debian. Place in /etc/init.d and
# run 'update-rc.d -f nginx defaults', or use the appropriate command on your
# distro. For CentOS/Redhat run: 'chkconfig --add nginx'
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=nginx
NGINX_BIN=/usr/local/nginx/sbin/$NAME
CONFIGFILE=/usr/local/nginx/conf/$NAME.conf
PIDFILE=/usr/local/nginx/logs/$NAME.pid
ulimit -n 8192
case "$1" in
start)
echo -n "Starting $NAME... "
if [ -f $PIDFILE ];then
mPID=`cat $PIDFILE`
isStart=`ps ax | awk '{ print $1 }' | grep -e "^${mPID}$"`
if [ "$isStart" != '' ];then
echo "$NAME (pid `pidof $NAME`) already running."
exit 1
fi
fi
$NGINX_BIN -c $CONFIGFILE
if [ "$?" != 0 ] ; then
echo " failed"
exit 1
else
echo " done"
fi
;;
stop)
echo -n "Stoping $NAME... "
if [ -f $PIDFILE ];then
mPID=`cat $PIDFILE`
isStart=`ps ax | awk '{ print $1 }' | grep -e "^${mPID}$"`
if [ "$isStart" = '' ];then
echo "$NAME is not running."
exit 1
fi
else
echo "$NAME is not running."
exit 1
fi
$NGINX_BIN -s stop
if [ "$?" != 0 ] ; then
echo " failed. Use force-quit"
exit 1
else
echo " done"
fi
;;
status)
if [ -f $PIDFILE ];then
mPID=`cat $PIDFILE`
isStart=`ps ax | awk '{ print $1 }' | grep -e "^${mPID}$"`
if [ "$isStart" != '' ];then
echo "$NAME (pid `pidof $NAME`) already running."
exit 1
else
echo "$NAME is stopped"
exit 0
fi
else
echo "$NAME is stopped"
exit 0
fi
;;
restart)
$0 stop
sleep 1
$0 start
;;
reload)
echo -n "Reload service $NAME... "
if [ -f $PIDFILE ];then
mPID=`cat $PIDFILE`
isStart=`ps ax | awk '{ print $1 }' | grep -e "^${mPID}$"`
if [ "$isStart" != '' ];then
$NGINX_BIN -s reload
echo " done"
else
echo "$NAME is not running, can't reload."
exit 1
fi
else
echo "$NAME is not running, can't reload."
exit 1
fi
;;
configtest)
echo -n "Test $NAME configure files... "
$NGINX_BIN -t
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status|configtest}"
exit 1
;;
esac
设置成自启动的服务
sudo systemctl enable nginx
修改配置文件
user root;
worker_processes 1;error_log /tmp/nginx_error.log;
pid /tmp/nginx.pid;events {
worker_connections 1024;
}rtmp {
server {
access_log off;
listen 1935;
timeout 10s;ping 10s;
ping_timeout 10s;drop_idle_publisher 10s;
idle_streams off;
#直播
application live {
live on;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
}
#点播
application vod {
play /tmp/video;
}
}
}
启动ffmpeg服务
ffmpeg -framerate 24 -video_size 1280x720 -i /dev/video0 -vcodec h264_omx -f flv rtmp://127.0.0.1/live/camera