创客神器NanoPi
直播中

蓝天的云朵7

13年用户 81经验值
擅长:MEMS/传感技术 嵌入式技术 处理器/DSP
私信 关注
[经验]

【NanoPi NEO试用体验】结项 基于H264 RTP的图传系统

` 本帖最后由 蓝天的云朵7 于 2017-1-5 16:14 编辑

背景:在网络上传输音/视频等多媒体信息,主要有下载和流式传输两种方案。流式传输的特点是可以在下载的同时进行观看。由于摄像头采集的视频数据信息非常大,如果直接将原始数据在网络上进行传输,无疑非常不现实,所以通常需要先对视频信息进行编码压缩后,再进行传输,接收端接收到压缩信息后,先解压再播放。
       目前最为通用的视频编码方法就是H264。百度百科解释:H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。
       视频在网上流式传输的通信协议通常是RTP协议,还有其他相关服务协议如RTSP等,一般情况下,RTP协议是基于UDP的。

方案:

NanoPi NEO外接USB摄像头进行视频采集,将采集到的视频数据压缩编码为h264格式后,使用RTP协议进行网络传输,PC机使用开源播放器VLC接收该视频流进行播放。该方案的软件实现是基于强大的ffmpeg和X264软件包。

环境配置:
1) 移植安装X264:ffmpeg原生不支持h264,所以我们需要安装一个h264的三方软件x264。
Step1: 下载x264安装包:git clone git://git.videolan.org/x264.git
Step2: 进入x264目录,执行配置命令:./configure --enable-shared --enable-static --prefix=/usr/local/x264
Step3: make
Step4: make install
Step5: 将/usr/local/x264/lib下的库文件拷贝到/usr/bin文件下

2)移植安装ffmpeg:
Step1:下载安装包:从官网http://ffmpeg.org/下载最新源码包后,拷贝到开发板上,并解压缩。
Step2:进入源码目录下,执行配置命令:./configure --prefix=/usr/local/ffmpeg
Step3:make
Step4:make install

3)PC安装VLC播放器

视频传输:
1)VLC配置文件:
PC上新建一个配置文件:h264_rtp.sdp,其内容如下:
m=video 5060 RTP/AVP 96
a=rtpmap:96 H264
c=IN IP4 192.168.x.xxx
注解:5060是端口号,要和ffmpeg命令中端口号对应;x表示的是开发板的IP地址。
然后使用VLC打开该文件。

2)开发板执行传输命令:cd /usr/local/ffmpeg/bin/ 然后执行./ffmpeg –f video4linux2 –s 640*480 –i /dev/video0 –vcodec h264 –f rtp rtp://192.168.x.xxx:5060
注解:使用了软件包的可执行文件ffmpeg,video2linux2表示该USB视频设备使用V4L2接口进行访问;640*480是摄像头支持的视频输出分辨率;/dev/video0表示的是USB摄像头的设备文件;h264是对视频进行编码的压缩格式;rtp是视频网络传输的协议;x表示接收端即PC的IP地址;5060是端口号,和上文对应。
ffmpeg选项详解参考: http://blog.csdn.net/matthew0618band/article/details/9830681

3) VLC上就可以看到u***摄像头传来的视频了。

成果:完成了使用USB摄像头进行视频采集H264编码后网络传输,但是传输实时性不太好,时延明显,可以进一步提高性能。




` 图像.png

回帖(5)

小萃米

2017-1-6 10:20:57
要是能再加一个演示视频就完美了
举报

蓝天的云朵7

2017-1-7 23:47:02
引用: 小萃米 发表于 2017-1-6 10:20
要是能再加一个演示视频就完美了

以后发帖可以尝试
举报

wwt

2017-1-14 21:28:25
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

蓝天的云朵7

2017-1-19 23:13:10
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

更多回帖

发帖
×
20
完善资料,
赚取积分