第3季:ORTP库局域网图传和VLC实时预览

1 ORTP的引入

1.1 视频网络传输的2种方式
(1)基于下载:http or ftp
(2)基于实时:RTP/RTSP/RTCP
1.2 ORTP的介绍
(1)openRTP (open Real-time Transport Protocol ,用C实现的一个RTP库(其实还有C++实现的,JAVA等实现的)
(2)实质是一个视频服务器,工作时客户端和服务器实时传递视频数据
(3)一般认为RTP工作在传输层,但是其实RTP比TCP/UDP高一个层次
(4)RTP(及RTCP)的实现有国际标准RFC3550规定,只要符合协议谁都可以自己写一个
(5)本季课程重点在于使用ORTP来实现局域网视频实时传输

2 ORTP库的移植

2.1 准备源码

(1)下载ortp源码:

链接:https://pan.baidu.com/s/1P-0IUR8HfJjD3sBp5mqOOg?pwd=68hs 
提取码:68hs 
--来自百度网盘超级会员V4的分享

(2)存放到临时工作目录并解压

2.2 源码修改

(1)增加H.264的payload支持。
在src/avprofile.c中357行添加:
rtp_profile_set_payload(profile,96,&payload_type_h264);

2.3 配置和编译、安装

(1)进入ortp目录执行./autogen.sh
(2)错误1:./autogen.sh: line 44: libtoolize: command not found
解决:sudo apt-get install libtool*
(2)错误2:libtoolize: error: Please install GNU M4, or ‘export M4=/path/to/gnu/m4’.
解决:sudo apt-get install m4
(3)错误3:Automake - aclocal: command not found
解决:sudo apt-get install automake
(4)继续执行./configure --prefix=/tmp/ortp --host=arm-hisiv300-linux
(5)make && make install

2.4 到/tmp/ortp目录下查看移植好的库和头文件

在这里插入图片描述

3 RTP传输视频实战

3.1 在官方SDK的sample中添加rtp传输代码

(1)venc/sample_venc.c中,添加:s32ChnNum = 1; (147行)
在这里插入图片描述

(2)common/sample_common_venc.c中,改了很多,直接下载文件,把原文件替换掉就行了。
注意这个c文件中的这行代码需要根据你自己的电脑ip进行修改。

#define LOCAL_HOST_IP  "192.168.1.10"//根据自己的电脑ip进行设定

理解这个c文件代码,参考学习(必看):
https://blog.csdn.net/tq08g2z/article/details/77528335
https://blog.csdn.net/zhang_danf/article/details/51037572

链接:https://pan.baidu.com/s/1TnbNfvDJd7gCQToS9WTKYA?pwd=l2bd 
提取码:l2bd 
--来自百度网盘超级会员V4的分享

3.2 重新编译sample

(1)复制ortp头文件

cd /home/bsp/hisilion/Hi3518E_SDK_V1.0.3.0/mpp/include
cp /tmp/ortp/include/ortp/ ./ -rf

(2)修改venc中Makefile,添加libortp的链接支持

cd /home/bsp/hisilion/Hi3518E_SDK_V1.0.3.0/mpp/sample/venc
vim Makefile

修改内容如下

$(TARGET):%:%.o $(COMM_OBJ)
        $(CC) $(CFLAGS) -lpthread -lm -lortp -o $@ $^ $(MPI_LIBS) $(AUDIO_LIBA) $(SENSOR_LIBS) -L/tmp/ortp/lib

(3)make。得到sample_venc可执行程序。

//复制到nfs的目录下,根据自己的设置改变路径,我的是/mnt/hisilicon_nfs
cp sample_venc /mnt/hisilion_nfs/ -rf

总结:上述操作大部分是傻瓜式修改,根本学不到东西,在自己使用海思的SOC时,可以询问海思的技术支持。

3.3 开发板中部署并运行测试

(1)部署libortp.so到开发板中/usr/lib目录下

//下面两行命令在Ubuntu中执行
cd /tmp/ortp/lib
cp *so* /mnt/hisilion_nfs/ -rf
//下面的命令在开发板的串口终端窗口中执行,前提条件:开发板已经成功的进行了nfs挂载
cd /mnt
mv *so* /usr/lib 

(2)检查开发板中原有配置是否正确,譬如sensor是否对应实际
(3)在nfs中运行新的sample程序
(4)vlc中打开配置好的sdp文件,看到实时图像就证明整个实验完成了

sdp文件下载地址:

链接:https://pan.baidu.com/s/1LqV7w_VF96K7A3PL8tSxXQ?pwd=a2nv 
提取码:a2nv 
--来自百度网盘超级会员V4的分享

下面是sdp文件的内容,c=“”这部分需要根据你电脑的ip进行修改,我的电脑有线网卡的IPV4的ip是192.168.1.10

m=video 8080 RTP/AVP 96
a=rtpmap:96 H264
a=framerate:25
c=IN IP4 192.168.1.10
  • 24
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程通过移植ORTP并调用ORTP函数来实现H.264裸流数据的网络传输,并且在Windows中安装VLC播放器,并在VLC中通过配置文件的方式来解析ORTP发送的裸流实现视频实时预览。本课程的核心是ORTP协议的讲解,ORTP的移植、部署和调用,VLC软件的用法讲解和配置文件讲解,Wireshark网络抓包工具的用法讲解,实时视频流传输和解析的体验和编程实现。随着通信行业发展,网速越来越快,网络也从文本时代发展越过语音时代到了现在视频时代,“优酷、爱奇艺”、“微视频”、“直播”等的出现也是视频逐步成为主流媒体的证据和表现。航拍、视频监控、刷脸过关检测、汽车ADAS系统等应用也是视频在主流行业中的应用,因此视频的采集、编解码、传输、识别等技术变得越来越有价值,涌现出了“海康威视”、“大华股份”、“深圳英飞拓”等一批明星企业,名扬海内外,动辄市值几百亿。同时在芯片级,国产华为海思HI35XX系列视频编解码方案也逐步取代进口芯片(如TI、安霸)成为主流方案。视频行业技术含量高、难度大、学习周期长、发展变化快而资料少,因此行业比较缺人、工资较高。如海康威视,普通高校硕士研究生应届进入年薪普遍高于15-20万,在嵌入式linux领域也算高工资技术方向了。本项目是朱老师及其团队推出的一个嵌入式linux领域重量级企业级实战项目,选用华为海思HI3518E方案,结合OV9712/AR0130 Sensor实现图像采集和H.264编码压缩,并通过ethernet和WIFI,以socket实时流和RTSP等方式,实现720P/960P高清视频传输。本项目共分11,从海思SDK开发环境搭建,到sample程序讲解、SDK中API函数解析,到H.264编解码、RTSP流媒体传输、MP4文件打包,到图像IQ调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值