• Jetson-AGX-Orin gstreamer+rtmp+http-flv 推拉流


    Jetson-AGX-Orin gstreamer+rtmp+http-flv 推拉流

    Orin是ubuntu20.04 ARM64架构的系统,自带gstreamer

    1、 测试摄像头

    测试摄像头可以用v4l2-ctl命令或者用gst-launch-1.0

    #用v4l2-ctl测试摄像头,有尖角符号持续打印则正常
    v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap
    
    #gst-launch-1.0 测试摄像头,有摄像头画面实时输出则正常
    gst-launch-1.0 v4l2src device="/dev/video0" ! "video/x-raw, width=1920, height=1080, format=(string)UYVY" ! autovideosink
    
    
    2、安装nvidia-jetpack,使用Orin的硬件编解码器
    sudo apt-get update
    sudo apt-get install nvidia-jetpack
    
    3 、安装SRS流媒体服务器

    SRS(Simple Realtime Server)是一个简单高效的实时视频服务器,支持RTMP、WebRTC、HLS、HTTP-FLV、SRT等多种实时流媒体协议。

    cd /opt
    git clone -b develop https://gitee.com/ossrs/srs.git
    cd srs
    sudo mkdir install
    cd srs/trunk
    ./configure --prefix=/opt/srs/install
    make 
    sudo make install 
    
    4、配置SRS流媒体服务器

    修改/opt/srs/install/conf/srs.conf,使其内容如下

    # main config for srs.
    # @see full.conf for detail config.
    
    listen              1935;
    max_connections     1000;
    #srs_log_tank        file;
    #srs_log_file        ./objs/srs.log;
    daemon              on;
    http_api {
        enabled         on;
        listen          1985;
    }
    http_server {
        enabled         on;
        listen          8080;
        dir             ./objs/nginx/html;
    }
    rtc_server {
        enabled on;
        listen 8000; # UDP port
        # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate
        candidate $CANDIDATE;
    }
    
    vhost __defaultVhost__ {
        #最小延迟打开,默认是打开的,该选项打开的时候,mr默认关闭。
        min_latency     on;
        #Merged-Read,针对RTMP协议,为了提高性能,SRS对于上行的read使用merged-read,即SRS在读写时一次读取N毫秒的数据
        mr {
            enabled     off;
            #默认350ms,范围[300-2000]
            #latency     350;
        }
        #Merged-Write,SRS永远使用Merged-Write,即一次发送N毫秒的包给客户端。这个算法可以将RTMP下行的效率提升5倍左右,范围[350-1800]
        mw_latency      100;
        #enabled         on;
        #https://github.com/simple-rtmp-server/srs/wiki/v2_CN_LowLatency#gop-cache
        gop_cache       off;
        #配置直播队列的长度,服务器会将数据放在直播队列中,如果超过这个长度就清空到最后一个I帧
        #https://github.com/simple-rtmp-server/srs/wiki/v2_CN_LowLatency#%E7%B4%AF%E7%A7%AF%E5%BB%B6%E8%BF%9F
        queue_length    10;
        #http_flv配置
        http_remux {
    	    enabled     on;
    	    mount [vhost]/[app]/[stream].flv;
    	    hstrs	on;
        }
    }
    
    5、运行SRS流媒体服务器,会在后台起一个SRS服务
    cd /opt/srs/install
    ./objs/srs -c conf/srs.conf
    #起完以后可以通过tail 实时查看日志 知晓服务推拉流情况
    tail -f ./objs/srs.log
    
    6、gstreamer进行rtmp推流

    以下是摄像头的rtmp推流。采用的Orin的硬件编码器和硬件图像格式转换引擎。

    gst-launch-1.0 v4l2src device="/dev/video0" ! 'video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080' ! nvvidconv ! omxh264enc profile=2 preset-level=2 MeasureEncoderLatency=1 control-rate=0 bitrate=10000000 iframeinterval=50 ! 'video/x-h264, stream-format=(string)byte-stream' ! h264parse ! flvmux ! rtmpsink location='rtmp://127.0.0.1/live/livestream0/mystream'
    
    7、 http-flv拉流实时播放

    电脑采用网线直连Orin设备,然后使用flv.js 通过网页实时播放

    #以下是摄像头http-flv实时拉流播放,地址与上面的rtmp推流地址相对应
    http://192.168.1.102:8080/live/livestream0/mystream.flv
    
  • 相关阅读:
    OS>>多线程
    汇编-注释
    月入过万很简单?十年软测来谈谈经验~
    理解循环神经网络(RNN)
    Jmeter UI详细介绍及脚本生成,get,转发收藏
    设计模式之桥接模式--连接抽象与实现(你想知道的问题都有)
    Spring Boot爬虫实战:模拟点击按钮下载表格详解
    涂鸦智能物联网平台初探
    分析事件监听器注解:@EventListener、@TransactionalEventListener
    使用mysql语句操作数据表(table)
  • 原文地址:https://blog.csdn.net/qq_33232152/article/details/140390959