HI3518E实现ORTP网络传输

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33894122/article/details/84960331

前言

本文主要是利用RTP协议实现视频服务器,利用网络进行视频数据传输,在windows上VLC软件作为客户端,可以实时预览视频。

实际操作

ORTP简介

ORTP是一个支持RTP以及RFC3550协议的库,有如下的特性:

  • 使用C语言编写,可以工作于windows, Linux, 以及 Unix平台
  • 实现了RFC3550协议,提供简单易用的API。支持多种配置,RFC3551为默认的配置。
  • 支持单线程下的多个RTP会话,支持自适应抖动处理。
  • 基于GPL版权声明。

ORTP实现了RTP和RTCP协议,RTP负责传输,RTCP负责控制和同步协调
其源码可以在github上直接下载:https://github.com/dmonakhov/ortp

ORTP库编译安装

首先需要下载源码到linux系统中某个目录下,以下操作都是在目录下操作

  1. 增加对h.264格式支持
    在src/avprofile.c中357行添加:
rtp_profile_set_payload(profile,96,&payload_type_h264);
  1. 配置ORTP库,进入ortp目录执行./autogen.sh,会出现很多错误,主要是配置工具的缺少,执行下列命令安装
sudo apt-get install libtool*
sudo apt-get install m4
sudo apt-get install automake

安装好再次执行./autogen.sh,可以看到配置完成,没有错误

  1. 配置安装目录和编译工具链
./configure --prefix=/tmp/ortp --host=arm-hisiv300-linux

配置安装目录是/tmp/ortp,且编译工具链是arm-hisiv300-linux,应该已经导出到环境变量

  1. 最后编译ortp并安装make && make install

Venc例程编译部署

  1. sample_venc.c的147行加入一行
s32ChnNum = 1;

将输出的三路图像强行改为一路,其实不改的话也行,但是在预览的时候会导致三个分辨率图像一一直在切换,根本看不到什么东西,低版本VLC播放器会直接崩溃。。
common/sample_comm_venc.c的58行是目的传输地址,需要改成正确的传输目的地址
2. 因为需要改动一些代码,所以直接用因为需要改动一些代码,所以直接用云盘里面带的sample_comm_venc.c(直接替换),之后再来分析源码。
3. 然后将ORTP库的一些头文件放到对应的include目录下,因为使用了ortp的函数,必须包含相应的头文件,在链接的时候还需要库的支持,需要修改makefile文件,将ortp编译生成的.so文件包含进去

 $(CC) $(CFLAGS) -lpthread -lm -lortp -o $@ $^ $(MPI_LIBS) $(AUD    IO_LIBA) $(SENSOR_LIBS) -L/tmp/ortp/lib
  1. 然后直接编译即可,将编译生成的sample_venc部署到开发板上,当然还有ortp编译安装生成的lib库,至此就应该可以完成ortp视频数据传输,下一篇再分析具体源码,主要记录一下过程。

猜你喜欢

转载自blog.csdn.net/qq_33894122/article/details/84960331