简介

初次接触RTMP推流,先在win10上跑一边,然后再使用开发板推流。同时hisi的SDK版本为
Hi3516EV200_SDK_V1.0.1.1,芯片为hisi3516ev200

win10-ubuntu推流

ubuntu搭建服务器,win10推流,同时win10拉流播放。

  1. # ubuntu IP
  2. 192.168.1.104
  3. # win10 IP
  4. 192.168.1.03

推流服务器搭建

https://github.com/illuspas/Node-Media-Server 开源库搭建RTMP服务器

  1. git clone https://github.com/illuspas/Node-Media-Server
  2. cd Node-Media-Server/
  3. sudo apt install nodejs -y
  4. sudo apt install npm -y
  5. npm i
  6. node app.js
  7. # 端口默认为 1935
  8. # 5/20/2020 14:38:53 17125 [INFO] Node Media Rtmp Server started on port: 1935

win10推流程序

使用雷神的代码

  • RTMP264_Connect(“rtmp://192.168.1.104:1935/live/stream”); ```

win10拉流

使用VLC打开 rtmp://192.168.1.104:1935/live/stream 网络拉流

  1. rtmp://192.168.1.104:1935/live/stream

即可播放。

win10拉流海思保存的H264文件

sample_venc.c 文件的SAMPLE_VENC_MJPEG_JPEG函数将会保存H264文件。将其复制到win10下面,使用雷神的代码推流即可。

hisi推流

首先我们需要编译rtmp的库。

编译librtmp

export LC_ALL=C
参考 https://blog.csdn.net/weixin_36983723/article/details/83377010 需要另外编译 zlib 以及 openssl。
最后我们将所有的库安装在/home/zhou/hisi/rtmp/install

  • zlib

    1. 下载地址 https://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz/download?use_mirror=nchc&download=
    2. export OSDRV_CROSS=arm-himix100-linux
    3. export CC=${OSDRV_CROSS}-gcc
    4. ./configure --prefix=/home/zhou/hisi/rtmp/install
    5. make
    6. make install
  • openssl

    1. tar -zxvf openssl-1.0.2l.tar.gz
    2. cd openssl-1.0.2l/
    3. CC=gcc ./config no-asm no-async shared --prefix=/home/zhou/hisi/rtmp/install --cross-compile-prefix=arm-himix100-linux-
    4. -修改Makefile
    5. 删除 **-m64**
    6. make
    7. make install
  • librtmp

https://rtmpdump.mplayerhq.hu/

  1. git clone git://git.ffmpeg.org/rtmpdump
  2. cd rtmpdump/librtmp/

我的目的是将librtmp全部编译成为静态,以及他提供的测试代码也编译成为静态的。

  • 修改Makefile,修改了下面两个Makefile文件
    • Makefile # 主要是为了生成demo
    • librtmp/Makefile # 生成lib库 ``` zhou@zhou:~/hisi/rtmp/rtmpdump$ git diff Makefile diff —git a/Makefile b/Makefile index a1595a8..9f0476c 100644 —- a/Makefile +++ b/Makefile @@ -1,11 +1,12 @@ VERSION=v2.4

-prefix=/usr/local +prefix=/home/zhou/hisi/rtmp/install

CC=$(CROSS_COMPILE)gcc LD=$(CROSS_COMPILE)ld

SYS=posix +#SYS=posix

SYS=mingw

CRYPTO=OPENSSL @@ -36,7 +37,7 @@ LIBSposix= LIBS_darwin= LIBS_mingw=-lws2_32 -lwinmm -lgdi32 LIB_RTMP=-Llibrtmp -lrtmp -LIBS=$(LIB_RTMP) $(CRYPTO_LIB) $(LIBS$(SYS)) $(XLIBS) +LIBS=-Wl,-Bstatic -Wl,—start-group $(LIBRTMP) $(CRYPTO_LIB) $(LIBS$(SYS)) $(XLIBS) -Wl,—end-group -Wl,-Bdynamic -ldl

THREADLIB_posix=-lpthread THREADLIB_darwin=-lpthread

zhou@zhou:~/hisi/rtmp/rtmpdump$ git diff librtmp/Makefile diff —git a/librtmp/Makefile b/librtmp/Makefile index 2c1c790..b41ba46 100644 —- a/librtmp/Makefile +++ b/librtmp/Makefile @@ -1,6 +1,6 @@ VERSION=v2.4

-prefix=/usr/local +prefix=/home/zhou/hisi/rtmp/install

  1. 编译

make SHARED= CROSS_COMPILE=arm-himix100-linux- INC=-I/home/zhou/hisi/rtmp/install/include LDFLAGS=-L/home/zhou/hisi/rtmp/install/lib make install CROSS_COMPILE=arm-himix100-linux- INC=-I/home/zhou/hisi/rtmp/install/include LDFLAGS=-L/home/zhou/hisi/rtmp/install/lib

  1. 最后生成的路径位于/home/zhou/hisi/rtmp/install

cd /home/zhou/hisi/rtmp/install/bin/

查看库依赖,只有这两个库的依赖,将rtmpdump复制到开发板上面即可运行

arm-himix100-linux-objdump -p rtmpdump | grep NEEDED NEEDED libdl.so.0 NEEDED libc.so.0 ```

rtmpdump

使用librtmp实现本地推流

参考资料