视频概述

视频特征

Qt Multimedia 提供用于播放和操纵视频数据的高级/低级 C++ 类,及用于播放和录制的 QML 类型。这里呈现的一些类有重叠同呈现在 摄像头概述 and 音频概述 .

视频实现细节

在 C++ 中播放视频

可以使用 QMediaPlayer 类解码视频文件,和显示它使用 QVideoWidget , QGraphicsVideoItem ,或自定义类。

此处范例,使用 QVideoWidget :

player = new QMediaPlayer;
player->setSource(QUrl("http://example.com/myclip1.mp4"));
videoWidget = new QVideoWidget;
player->setVideoOutput(videoWidget);
videoWidget->show();
player->play();
					

和范例采用 QGraphicsVideoItem :

player = new QMediaPlayer(this);
QGraphicsVideoItem *item = new QGraphicsVideoItem;
player->setVideoOutput(item);
graphicsView->scene()->addItem(item);
graphicsView->show();
player->setSource(QUrl("http://example.com/myclip4.ogv"));
player->play();
					

在 QML 中播放视频

可以使用 VideoOutput 渲染的内容提供通过 MediaPlayer Camera VideoOutput 是视觉组件,可以嵌入 QQuickScene 或 Window ,而所有媒体解码和回放控制的处理是通过 MediaPlayer or CaptureSession 视频 元素为方便起见提供。它组合 MediaPlayer , VideoOutput and AudioOutput 元素在一项中。

处理低级视频帧

Qt Multimedia 提供了许多低级类以使处理视频帧变得更容易一些。这些类首要用于编写处理视频或摄像头帧的代码 (例如:检测条码或应用花哨晕影效果),或需要以其它不受支持的特殊方式显示视频。

QVideoFrame 类封装视频帧并允许将内容映射到系统内存用于操纵或处理。使用自己的 QVideoSink 允许接收这些帧从 QMediaPlayer and QCamera .

录制视频

任何类型的音频/视频捕获 (或录制) 的中心类是 QMediaCaptureSession (或 CaptureSession QML 类型)。可以连接 QCamera (摄像头在 QML) 和 QMediaRecorder ( MediaRecorder ) 到会话然后询问媒体录制器以开始录制。

范例

存在 C++ 和 QML 两种可用范例。

C++ 范例

摄像头范例 展示如何捕获静止图像或录制视频。
媒体播放器范例 播放音频和视频。

QML 范例

QML 媒体播放器范例 使用 Qt Quick 播放音频和视频。
QML 录制器范例 使用 Qt Quick 录制音频和视频。

参考文档编制

C++ 类

QMediaCaptureSession 允许捕获音频/视频内容
QMediaPlayer 允许播放媒体文件
QMediaRecorder 用于编码和录制捕获会话
QVideoFrame 表示视频数据帧
QVideoFrameFormat 指定视频呈现表面的流格式
QVideoSink 表示视频数据的一般汇点
QVideoWidget 呈现媒体对象产生视频的小部件

QML 类型

CaptureSession 允许捕获音频/视频内容
MediaPlayer 将媒体回放添加描述到场景
MediaRecorder 用于编码和录制在 CaptureSession 中生成的媒体
视频 展示指定视频的方便类型
VideoOutput 渲染视频或摄像头取景器
cameraDevice 描述摄像头设备
cameraFormat 描述摄像头设备所支持的视频格式
mediaMetaData 为媒体文件提供元数据