原创博文,严禁私自转载,转载请注明出处!!!
硬件平台
芯片:Toradex Colibri imax6DL
底板:Toradex Iris底板
摄像头:海康红外网络摄像头DS-2CD1201D-13,支持rtsp协议
软件平台
开发环境:OS: ubuntu16.04
IDE: Qt Creator 4.7.0 + QT5.9.6embedded
Toolchain:cortexa9hf-neon-poky-linux-gnueabi 2.2.4
运行环境:OS: Linux 4.1.44-2.7.5
图形库: QT5.9.6embedded
在Linux下,Qt通过QTmultimedia框架实现了对gstream的封装,在qml中使用QTmultimedia模块即可实现网络摄像头的硬解码和播放,详细介绍如下;
- 在Qt工程中调用QTmultimedia5.0模块
- 在QTmultimedia5.0中,通过组件Mediaplayer设置数据来源,,通过组件VideoOutput将decoder过来的数据呈现出来
- Gstream是一个 基于pipeline的多媒体框架,pipeline是GStreamer设计的核心思想,在说pipeline之前先弄一个mediaplayer的模型, 下图就是个典型的meida播放器的模型:
source:数据来源,可能是file、http、rtp等.
demux: 负责把容器里的音视频数据剥离出来,然后分别送给audio\video decoder.
decoder:解码,然后把解完后的数据(yuv、pcm)送给audio\video output输出.
output:负责将decoder过来的数据呈现出来.
3.利用qml实现在Qt中播放网络流,因为摄像头网络传输协议是rtsp,Qtmultimedia也同时支持接收播放rtsp的网络流,所以在组件Mediaplayer中修改sourse属性,即可实现rtsp协议的网络流的播放
4.摄像头播放程序简介
该程序使用qml语言实现了接收播放网络摄像头的数据,可通过修改Qtmultimediaplayer的组件MediaPlayer的属性source也可实现播放本地文件,,并设计了简单的用户操作界面,该界面具有以下功能:开机动画主窗口fade in和各个窗口的开机动画;视频播放子窗口的缩放,悬浮和可拖动;文本文件显示框;Button的自定义;操作界面如下
附带源码:https://download.youkuaiyun.com/download/weixin_42550424/10855966