精华内容
下载资源
问答
  • rtmp实时推流的demo,可在基于海思,Realtek芯片底层上运行。
  • 基于海思3516cv300编译的nginx服务器,在海思平台可以直接推流Rtmp,可以参考博客:https://blog.csdn.net/gf8956/article/details/90516560
  • 海思开发板FFmpeg+Nginx推流RTSP播放(优秀教程收集+实操整理)安装FFmpeg及移植Nginx的安装(windos\Ubuntu):开始推流拉流播放 安装FFmpeg及移植 FFmpeg是一款功能强大的集合库,能够编辑视频,能够截取图片,也...

    安装FFmpeg及移植

    FFmpeg是一款功能强大的集合库,能够编辑视频,能够截取图片,也可生成git图片,简直不要太好用。这里就简单介绍一下这个库的其中一个用的比较多的功能–推流。

    我的配置是: 开发板拉取摄像头流,推到winodows的Nginx服务器,然后用Ubuntu 的FFplay进行播放,若你的配置方案和我的不一样,下面也整理了对应完整例程供参考。一起交流学习~


    一般而言,对于大部分的Ubuntu的库的源码方式安装,都离不开几个步骤
    1.通过官网下载源码/其他途径获取源码
    2.解压 tar -zxvf xxx.tar.gz / tar -jxvf xxx.tar.bz2
    3.编写简单脚本 main.sh 调用configure (不用命令行慢慢输入,好配置编译选项)
    4.编译 make
    5.安装 make install(安装进你指定的目录)
    6.编译生成文件夹下的/bin放进开发板的/bin 。/lib放进/lib

    (如果有些依赖库--with--xxx=DIR 你已经添加进sh脚本,但是configure总是说找不到,
    就export PKG_CONFIG_PATH=.....$PKG_CONFIG_PATH 把那个依赖库输出路径
    的/lib/pkgconfig/xxx.pc 文件路径添加进去 
    这个xxx.pc 相当于库的说明文件,
    声明lib和include文件放在哪个目录,这样pkg-config命令才能找到这些依赖库。当然,如果库移动了,xxx.pc也要更改)
    
    如果还是不行(应该是交叉编译的ld工具查找不到对应库),
    这个时候就只能在配置脚本xxx.sh里的./configure里面增加一行 LDFLAGS=-L<dir> 
    意思是在调用编译的时候直接指定包含的库的路径
    
    还是不行的话分两种情况:
    如果没有生成Makefile,就把对应库文件INCLUDE 和lib,放到你gcc编译器使用的lib目录。
    交叉编译器的lib目录可能要费点心思,根据常用库看看在哪里,如线程库find ./ -name "libpthread*"。
    普通的桌面gcc目录就去/usr/include
    生成了Makefile就好办,直接根据提示的错误找到Makefile文件的对应行,在对应语句后面增加搜索路径 -L/xx/xxx/lib -lxx(库名字)
    

    1.通过官网下载源码/其他途径获取源码
    xvid、x264、ffmpeg源码下载及编译
    官方的ffmpeg源码下载z
    FFmpeg的configure 配置选项的翻译(根据需要编译)
    我的ffmpeg移植到开发板,这里附上我的FFmpeg配置脚本,供大家参考:

    #!/bin/bash   
    ./configure \
    	--prefix=/home/ouser/temp/ffmpeg_hisix200/ \   # 存放位置
    	--disable-debug  \
    	--disable-avdevice \
    	--enable-encoders \
    	--enable-ffmpeg \
    	--enable-gpl \
    	--enable-small \
    	--target-os=linux \
    	--arch=arm \                              # 目标为arm平台
    	--enable-nonfree \
    	--enable-cross-compile \
    	--cross-prefix=arm-himix200-linux- \      #定义编译工具前缀
    	--enable-encoder=libx264 \
    	--enable-libx264 \  #表示引入x264库,下面两句是指明x264路径,还需在profile内添加语句
    	--extra-cflags=-I/home/ouser/temp/x264/include \   
    	--extra-ldflags=-L/home/ouser/temp/x264/lib \ 
    	--enable-static \               # 编译为静态库(把库整合编译进/bin下可执行文件,10MB左右,)
    	--cc=arm-himix200-linux-gcc \   # 再次定义交叉工具链为海思提供的工具链
    

    附上我x264解码库的配置脚本(如果ffmpeg选择需要x264库,就需要在下面的开发板/etc/profile文件里添加它的编译后的lib库,否则会报错找不到库):

    #!/bin/bash
    ./configure \
    --prefix=/home/ouser/temp/x264 \
    --host=arm-himix200-linux \
    --cross-prefix=arm-himix200-linux- \
    --enable-shared \
    --disable-asm
    

    PS:想指明第三方库所在路径,有四种方法:,
    1,添加xx.pc文件export PKG_CONFIG_PATH=/xxx:$PKG_CONFIG_PATH和指定搜索路径的export LD_LIBRARY_PATH=/yourdir/:$LD_LIBRARY_PATH
    2,在 /etc/ld.so.conf 文件中添加库的搜索路径。将库文件的绝对路径/lib直接写进去就OK。
    3,丢到编译器的默认搜索路径。使用 arm-前缀-gcc -print-file-name=xxx.so 来找到默认路径
    4,在configure阶段,添加-LDFLAG 增加编译选项给编译器直接增加搜索路径
    如果你移动了lib库文件,对应的xx.pc也要同步更新,且放到pkgconfig搜索目录下!!否则pkg-config会搜索不到!

    编译完FFmpeg及想要的编解码库之后,安装就非常简单了:
    1,找到你指定的安装目录,
    2,把bin目录下的文件丢去/usr/bin
    3,把lib目录下的文件丢去/usr/lib,
    这样就完成了。但是如果像我一样根目录(/ )下空间不足,无奈只能放在其他挂载在大分区下的文件系统的情况,就需要在开发板的 /etc/profile 处加下面两句让系统找得到可执行文件和链接库 【$后的语句类似int a= 0 的 a,是变量描述符】:

    export LD_LIBRARY_PATH=[你放的目录]:$LD_LIBRARY_PATH
    export PATH=[你放的目录]:$PATH
    

    最后附上FFmpeg官方文档
    官方英文文档 - 最全文档,但全英文
    GitHub中文档 - 东西比较少,但好歹看得懂

    FFmpeg编译问题收录:

    static declaration of ‘cbrt’ follows non-static declaration

    有些版本的ffmpeg会有些奇怪的问题,就比如下图:
    在这里插入图片描述
    查看出问题的libm.c就知道了,是没有声明该函数。这并不是源码错误,而是./config.h里面设置出错了,在./config.h找到对应的项目的宏定义,改为1开启它即可。
    在这里插入图片描述

    ERROR: srt >= 1.3.0 not found using pkg-config

    这种情况一般是libsrt没有安装到位,编译器找不到它。一种是libsrt编译中找不到依赖库。具体情况具体分析,根据提示,可以查看./ffbuild/config.log找到原因。
    在这里插入图片描述
    我遇到的问题是srt依赖库libgcc_s.so libstdc++.so无法找到。这两个库的关系可以点这里看,而我的编译工具是交叉编译工具,默认库搜索路径比较复杂,所以通过arm-himix200-gcc -print-file-name=libstdc++.so找到了库实际所在目录。找到文件就好办,链接它呗!

    想让编译器搜索到指定库,可以通过
    ①编译脚本添加$LD_LIBRARY_PATH
    ②编译脚本添加--extra-cflags=-L/xx/ --extra-ldflags=-L指定搜索路径。
    ③最终大招在已有搜索路径下建立软连接
    很幸运我前两个方法还是失败,查看./ffbuild/config.log发现总是有部分文件在编译时无法链接到srt依赖库libgcc_s.so libstdc++.so
    在这里插入图片描述

    --extra-ldflags=-rpath的解释

    最后通过第三招在默认搜索路径增加软连接成功通过configure阶段。软连接添加命令ln -s /源文件 ./要生成的目标文件

    遇到过一种比较坑爹的情况,就是ffmpeg链接库的时候会调用pkg-config工具,但我这个linux版本居然没有这个工具,于是参考文章步骤安装了pkg-coinfig。pkg-config源码下载

    在这里插入图片描述

    其余问题集锦


    Nginx的安装(windos\Ubuntu):

    Nginx在Ubuntu下的安装

    Nginx在Windows下的安装并配置rtmp模块


    我的Nginx是放在windows的,windows下安装完成后,在conf/nginx.conf 文件添加RTMP直播支持
    这样推流的rtmp服务器地址是 rtmp://your_ip:1935/live/test1

    rtmp_auto_push on;
    rtmp {
        server {
            listen 1935;
    
            application live {
                live on;
            }
    		
    		application history {
                live on;
            }
    		
            application hls {
                live on;
                hls on;  
                hls_path temp/hls;  
                hls_fragment 8s;  
            }
        }
    }
    #这样推流的rtmp服务器地址是 rtmp://your_ip:1935/live/test1
    

    完事了在Nginx目录shift+右键命令行,输入:

    nginx.exe -c conf\xxx.conf //执行rtmp配置文件,不同版本配置文件名不一样,要注意,你上面修改了哪个,就执行哪个配置文件。

    注意:此时命令行会一直处于执行中 不用理会。

    开始推流

    到这一步,确定你的Nginx服务器已经搭建好,FFmpeg也移植好后,就执行这条命令
    这里我测试的是Nginx搭建在Windows下,开发板循环推流一个mp4文件到windos的Nginx服务器:

    //开发板端:
    ffmpeg -re -stream_loop -1 -i 123test.mp4 -c:av copy -f flv rtmp://192.168.0.100:1935/live
    [-stream_loop -1]: 表示无限循环播放该视频
    [rtmp://192.168.0.100:1935/live]: ip:端口号/live代表是直播
    
    //测试保留-----把rtsp获取的视频流推流到rtmp服务器
    ffmpeg -re -i rtsp://username:password@ip:port/xxxxxxx -vcodec copy -acodec copy -f flv -y rtmp://ip:port/live/test
    

    附上其他博主的详细教程
    Nginx在windos下的参考文章
    Nginx在Ubuntu下的参考文章

    拉流播放

    这个就简单了,桌面Ubuntu:

    ffplay rtmp://192.168.0.100:1935/live
    

    桌面windos: 就直接使用VLC,然后媒体选择网络串流,输入URL即可。VLC播放器百度一下即可找到下载链接

    6666


    最后感谢上面所有被我引用了文章的博主!

    展开全文
  • 硬件在淘宝买的现成开发板: 卖家qq:501930128 ...3518_librtmp为rtmp视频打包程序。 2、编译源码: 编译mpp: 1进入mpp/sample/hisi_rtmp_demo2make HIARCH=hi3518e CROSS_COMPILE=ar
    硬件在淘宝买的现成开发板:

    卖家qq:501930128

    1、下载rtmp源码,其中,mpp_rtmp为采集视频程序。3518_librtmp为rtmp视频流打包程序。
    2、编译源码:
    编译mpp:
    1
    进入mpp/sample/hisi_rtmp_demo
    2
    make HIARCH=hi3518e CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi- CROSS=arm-hisiv300-linux-uclibcgnueabi- SENSOR_TYPE=APTINA_AR0130_DC_720P_30FPS
    编译librtmp:
    1
    进入3518_rtmp
    2
    ./compile_gcc.sh 
    3
    将rtmp.out拷贝到和mpp相同目录:
    4
    cp rtmp.out ../../../mpp/sample/hisi_rtmp_demo

    安装srs。参考文档。

    修改流媒体地址:在3518_rtmp目录下,修改流媒体对于的ip。
     

    运行mpp:
    1
    cd  mpp/ko
    2
    ./load3518e -i ar0130
    3
    cd ../sample/hisi_rtmp_demo
    4
    ./rtmp.out &
    5
    ./hisi_rtmp_demo
    6
    即可通过vlc观看无卡顿视频
    展开全文
  • 纯C++代码,读取H264文件到内存推流RTMP流媒体服务器,关键使用libRTMP库封装成RTMP协议格式!方便初学者
  • rtmp推流服务器降低延时

    万次阅读 2018-09-05 10:20:16
    在搭建好的nginx-rtmp服务器上做推流延时会很高我最开始时在6s左右,这时候需要修改接收端和发送端的缓存就可以。 以下是发送端的例子(视频缓存太小后会不能播放,这个只针对音频) 录屏加摄像头和麦克风这个延时...

    在搭建好的nginx-rtmp服务器上做推流延时会很高我最开始时在6s左右,这时候需要修改接收端和发送端的缓存就可以。
    以下是发送端的例子(视频缓存太小后会不能播放,这个只针对音频)

    录屏加摄像头和麦克风这个延时很高

    ffmpeg -thread_queue_size 128 -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 -f video4linux2 -video_size 400x300 -framerate 30 -i /dev/video0 -f alsa -ac 2 -i pulse -filter_complex ‘[0:v][1:v]overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10[out]’ -map ‘[out]’ -map 2:a -vcodec libx264 -vprofile baseline -acodec aac -strict -2 -maxrate 3000k -b:a 128k -f flv rtmp://192.168.0.116:2017/live/test

    这是只有音频几乎没有延时的推送

    ffmpeg -thread_queue_size 6 -f alsa -ac 2 -i pulse -vcodec libx264 -preset ultrafast -acodec aac -strict -2 -b:v 60 -f flv rtmp://192.168.1.101:2017/live/test

    接收端推荐potplayer做测试
    另外也可用ffplayer
    ffplay -fflags nobuffer -nodisp rtmp://192.168.1.108:2017/live/test

    展开全文
  • rtmp 推流 修改anyrtc的开源项目,适配最新的webrtc实现推流 DlgRtmpPush 的 大体流程: 继承RTMPHosterEvent ,创建Hoster hoster事件类型: stream 建立连接 stream 重连 stream 状态 推流失败 流...

    rtmp 推流

    • 修改anyrtc的开源项目,适配最新的webrtc实现推流
    • DlgRtmpPush 的 大体流程:

    继承RTMPHosterEvent ,创建Hoster

    • hoster事件类型:
      • stream 建立连接
    • stream 重连
    • stream 状态
    • 推流失败
    • 流关闭

    stream ok 在这里插入图片描述

    • 当rtmp连接后,启动编码器
    • 回调流ok
    void AnyRtmpStreamerImpl
    展开全文
  • 海思35xx rtmp

    2019-04-21 21:24:42
    rtmp 在海思35xx运行的源码 含有:nginx-rtmp-win32-master,rtmp,rtmp.si4project,RTMP基本知识文档,推流到公网IP操作截图及折包,运行数据,rtmp推流到公网服务器log,RTMP协议手绘,RTMP协议抓包,推流测试...
  • 海思Rtmp之Nginx和ffmpeg的移植。

    千次阅读 热门讨论 2019-05-24 15:41:36
    公司需要用海思推流rtmp,首先需要在海思中移植服务器,nginx服务器是比较常用的服务器之一。 (1)nginx编译 ./configure --prefix=/opt/app/nginx \ --with-zlib=/home/gf/交叉编译nginx/nginx交叉编译/zlib-...
  • 海思hi3559a平台rtmp和rtsp移植 毕业于北京大学2011级。在海...
  • srs-librtmp可以直接送H264格式的rtmp数据,所以可以将海思HI3516通过VENC编码后的H264裸数据直接通过srs-librtmp发送到阿里直播平台。 这里需要注意的是srs-librtmp地址的拼接,可以参考...
  • 显然这样是没办法看到视频的,bitrate=0 kbits/s。 原因: ffmpeg编译时没有添加--enable-encoder=libfdk_aac --enable-decoder=pcm_alaw --enable-muxer=pcm_alaw导致的。
  • 小白篇之RTMP编码器辅助OBS实现多个平台推流 大家可能知道OBS默认情况下只能作为RTMP-CLIENT端推流RTMP-SERVER端,而且只能推给一个平台,虽然网上也有教程教你如何让OBS推流给多个平台,但是是通过一个第三方软件...
  • 海思3559下怎么播放rtsp,rtmp流媒体1.硬件准备2.zlib-1.2.11编译3.openssl-1.0.1f编译4.rtmpdump编译5.海思上验证 1.硬件准备 硬件平台:hisi3559V100 编译链接 aarch64-himix100-linux 2.zlib-1.2.11编译 cd zlib-...
  • 以下是叁陆伍视讯RTMP推流摄像机画面,H.265编码与H.264编码的对比, 上传图像有压缩,欢迎联系叁陆伍视讯公司提供推流实测。 同样的画面,同样是1080P30帧高清视频,H.264的码率是239KB,H.265的码率是120KB,H....
  • 今天我要给大家带来一个多路HDMI转RTMP多平台推流直播的方案,咱也不说这个方案是最优,但性能和稳定性却是响当当的好,该设备采用华为海思Hi3531D芯片,数据手册(Datasheet)上说它可以做8路1080p@30的H264/H265编码...
  • https://www.cnblogs.com/lidabo/p/9020443.html
  • 海思3559A媒体解决方案思考 海思3559A媒体解决方案思考 海思3559A媒体解决方案思考 最近网络直播,带货是主流,手上也正有项目在做,小白入手就此方案作如下思考与分步完成: 1.熟悉什么是rtsp, rtmp,支持...
  • 斗鱼直播平台支持第三方推流,本文描述如何用编码器推流给斗鱼直播平台
  • 最近看到有人在找寻RTSP转RTMP的相关设备,所以想起写一篇这样的小白都能玩的方案,由于市面上大多监控的摄像机只支持RTSP,为了把监控摄像机的流推RTMP-SERVER,就需要把RTSP流转给RTMP流。 首先,我们先准备...
  • 一:交叉编译rtmp,实现hisi将得到的摄像头数据经过rtmp推流,硬件条件hisi3536 https://blog.csdn.net/u014016672/article/details/72809528 首先搭建环境:需要的库:openssl和zlib库 1:移植编译库openssl库 ...
  • 板卡厂家提供的SDK提供了各种流协议:HTTP, HLS, RTSP, UDP, RTMP拉流和RTMP推流。而且能同时打开这些流协议,可见海思Hi3531D内置的ARM CPU也不是盖的。而且RTSP, UDP, RTMP的延迟都在1秒以内(最快的可以做到200ms...
  • rtmp_sample.zip

    2020-07-12 20:51:50
    rtmp实时推流的demo,可在基于海思,Realtek芯片底层上运行。

空空如也

空空如也

1 2 3 4 5
收藏数 97
精华内容 38
关键字:

海思rtmp推流