• OrangePI通过ffmpeg和nginx把摄像头输出为rtmp


    首先安装点基础套件

    sudo apt install -y ffmpeg libx264-dev libssl-dev yasm cmake libpcre3-dev
    

    从源码编译安装ffmpeg

    以上命令已经安装了发布版的ffmpeg,不过如果有需要,可以按照源码版的编译安装

    git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
    cd ffmpeg
    sudo ./configure --enable-shared --prefix=/usr/local/ffmpeg
    make
    sudo make install
    

    编译安装nginx

    sudo git clone https://github.com/arut/nginx-rtmp-module.git
    sudo wget http://nginx.org/download/nginx-1.16.1.tar.gz
    sudo tar -xvf nginx-1.16.1.tar.gz
    cd nginx-1.16.1
    sudo  ./configure --prefix=/usr/local/nginx  --add-module=../nginx-rtmp-module  --with-cc-opt="-Wimplicit-fallthrough=0"
    make -j4
    make install
    
    

    nginx配置文件

    nano /usr/local/nginx/conf/nginx.conf
    
    user www-data;
    worker_processes auto;
    pid /tmp/nginx.pid;
    
    events {
      worker_connections 768;
      # multi_accept on;
    }
    
    rtmp {
        server {
            listen 1335;
            application rtmp {
                live on;
                max_connections 1024;
            }
            application zbcs {
                live on;
                record off;
            }
            application hls{
                live on;
                hls on;
                hls_path /rtmp/;
                hls_fragment 1s;
            }
        }
    }
    
    

    写 systemd 配置文件

    mkdir /usr/lib/systemd/system/
    vim /usr/lib/systemd/system/nginx.service
    
    [Unit]
    Description=nginx optimized HTTP server
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    PIDFile=/tmp/nginx.pid
    ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    ExecReload=/usr/bin/kill -HUP $MAINPID
    ExecsTOP=/usr/bin/kill -s QUIT $MAINPID
    privateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    启动

    systemctl enable nginx
    systemctl restart nginx
    systemctl status nginx
    

    推送

    # 摄像头采集推送
    ffmpeg -i /dev/video0  -s 320x240 -f flv -an rtmp://127.0.0.1:1335/rtmp/1
    
    # 视频文件推送
    ffmpeg -stream_loop -1 -i cutb.mp4 -s 320x240 -f flv -an rtmp://127.0.0.1:1335/rtmp/1
    
  • 相关阅读:
    socket的双重属性
    Client/Server 模型 与socket
    简单理解Socket 重要
    C++ 异常处理机制的实现
    ARM汇编之MOV指令
    指令集 与 cpu
    寄存器简介 与 ebp esp
    ESP和EBP 栈顶指针和栈底指针
    函数调用过程栈帧变化详解
    栈帧
  • 原文地址:https://www.cnblogs.com/DragonStart/p/12151452.html
Copyright © 2020-2023  润新知