OneNET视频能力体验----使用USB摄像头推流

8 篇文章 5 订阅
3 篇文章 0 订阅

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


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

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

在采集完毕之后再使用OneNET SDK推流,因为暂时优化得不好,先不发代码,需要的同学可以先去他博客下载采集代码。

SDK下载地址:https://github.com/cm-heclouds/video_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环境下用到的库。

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相关头文件
    • ont SDK通用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开发者中心,打开该产品,点击设备管理,再点击播放即可

这里写图片描述

7、实验效果

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

这里写图片描述

注意:如果在第三步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

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值