2019-7-25 11:05:29 [显示全部楼层]
3523浏览
查看: 3523|回复: 1

[项目教程] OneNET视频能力体验------使用USB摄像头

[复制链接]
本例程使用V4L2技术,采集USB摄像头数据,并在Ubuntu虚拟机中使用OneNET视频SDK,直接推流到OneNET视频云。
----------------------------------

其中USB采集部分是用的这位同学的代码,

http://blog.csdn.net/li_wen01/article/details/71548079

在采集完毕之后再使用OneNET SDK推流,因为暂时优化得不好,先不发代码,优化好了再发上来。需要的同学可以先去他博客下载采集代码,再和sdk里面的代码融合一下- -

SDK下载地址:https://open.iot.10086.cn/doc/art386.html#68  OneNET开发文档中心----公开协议产品指南-----6视频能力-----6.4接入SDK



1、基础知识

1.1 V4L2
v4L2全名是video for linux 2 ,是一个用于视频采集输出的一个编程框架,它支持许多USB摄像头,电视调谐器和相关设备,使其输出标准化,本章中我们会用到该框架采集USB摄像头。

1.2 H.264
H.264: H.264/AVC项目的目的是为了创建一个比以前的视频压缩标准,在更低的比特率的情况下依然能够提供良好视频质量的标准(如,一半或者更少于MPEG-2,H.263,或者MPEG-4 Part2 )。同时,还要不会太大的增加设计的复杂性。
优势:
1)网络亲和性,即可适用于各种传输网络
2)高的视频压缩比,当初提出的指标是比 H.263,MPEG-4,约为它们的 2 倍,现在都已基 实现;

我们使用了x264来进行编码,这是一个我们会在linux环境下用到的库。
[colo**460]
x264 is a free software library and application for encoding video streams into the H.264/MPEG-4 AVC compression format, and is released under the terms of the GNU GPL.

注意:h.264是编码格式,libx264是编码库,也就是工具。

1.3 rtmp
RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。

注意:rtmp是是是传输协议,而RTMPdump(libRTMP)则是一个为RTMP数据流处理而生的工具包

1.4 OneNET sdk

OneNET视频能力是基于中移物联网OneNET平台构建的视频设备接入能力,为用户提供开放接入,远程设备控制,视频推流和云端分发等底层核心能力,并提供二次开发套件,方便用户定制开发自身行业应用。

设备接入,反向控制:支持MQTT协议接入

设备推流:支持RTMP推流

云端分发:支持RTMP, HLS分发

设备端推流:提供c-sdk,提供设备接入,推流等接口,可进行平台移植

播放端:支持三方常见播放器jwplayer、vlc、video.js

SDK目录结构:

doc : SDK相关文档

include : SDK API相关头文件

  •       **DK通用API、错误码等
  •       edp EDP协议特有API
  •       mqtt MQTT协议特有API


platforms : 平台相关的接口(include/platform.h)实现
  •       posix 支持Posix系统的平台相关接口实现
  •       win Windows系统的平台相关接口实现


sample : 各协议的示例
  •       edp EDP协议的示例
  •       mqtt MQTT协议的示例


src :SDK内部实现



2、开发环境

2.1 Linux环境

需要装x.264库,RTMPlib库,cmake编译工具

方法1:
直接使用apt-get工具,来获取需要的库
sudo apt-get insatll libx264
sudo apt-get install cmake


在编译过程中,如果提示缺少什么库,就直接apt-get install 就行了

方法2(推荐):  (如果apt-get的cmake出问题的话,建议使用此方法来装cmake)
直接去官网获取对应的源码,然后

./configure
make && make install

注意:x264需要生成静态库

2.2 OneNET环境
请参考OneNET开发文档创建产品和设备

https://open.iot.10086.cn/doc/art388.html#68

创建完后获得其产品ID,设备ID,设备注册码。



3、实验描述及工程文件清单

3.1实验描述

该实验使用USB摄像头作为视频采集端,并使用linux v4l2来驱动该摄像头,在获取到YUV422数据后,将其进行h264格式封装,最后使用rtmp推流到OneNET视频云。



3.2实验流程

1、在OneNET开发者中心创建RTMP设备,参考本文2.2章

2、在ubuntu中安装开发环境,包括libx264,cmake等等,实际环境中缺少什么就再安装,参考本文2.1章

3、进入ubuntu系统,打开命令行窗口,进入开发目录,直接输入命令 sh videosamplebuild.sh,即可开始生成项目文件。

4、进入开发目录,输入以下两个命令,在输入这两个命令后,能够在OneNET开发者中心设备管理栏中看到该设备上线(会有一个小绿点提示)

cd bin/
./sample_ov5640

5、进入OneNET开发者中心,打开该产品,点击设备管理,再点击播放即可

OneNET视频能力体验------使用USB摄像头图1

7、实验效果

可以在OneNET开发者中心实时看到USB摄像头的视频显示

OneNET视频能力体验------使用USB摄像头图2

注意:如果在第三步cmake编译通不过的话,建议重装cmake,

3.1 程序逻辑流程(仅供参考):

ont_video_live_stream_play

open_camera
init_camera
start_capture
RTMP_CreatePulish
RTMP_InitVideoParams
RTMP_SendScreenCapture
SendScreenCapture
read_frame
stop_capture
close_camera_device
RTMP_DeletePublish

 见习技师

发表于 2019-9-3 16:43:36

远程摄像头+舵机=远程监控
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail