树莓派3b,摄像头RTMP推送

      因网上许多安装配置教程并不完整,安装过程中存在错误,而无法正常运行,经过多次调整和测试,所以整理成此稿。

系统的版本:Raspberry Pi OS 32 位(Buster)

下载地址文件:https://downloads.raspberrypi.org/raspios_armhf/images/raspios_armhf-2021-05-28/2021-05-07-raspios-buster-armhf.zip

主机:树莓派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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值