Qt Multimedia 提供用于播放和操纵视频数据的高级/低级 C++ 类,及用于播放和录制的 QML 类型。这里呈现的一些类有重叠同呈现在 摄像头概述 and 音频概述 .
可以使用 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();
可以使用 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 两种可用范例。
摄像头范例 | 展示如何捕获静止图像或录制视频。 |
媒体播放器范例 | 播放音频和视频。 |
QML 媒体播放器范例 | 使用 Qt Quick 播放音频和视频。 |
QML 录制器范例 | 使用 Qt Quick 录制音频和视频。 |
QMediaCaptureSession | 允许捕获音频/视频内容 |
QMediaPlayer | 允许播放媒体文件 |
QMediaRecorder | 用于编码和录制捕获会话 |
QVideoFrame | 表示视频数据帧 |
QVideoFrameFormat | 指定视频呈现表面的流格式 |
QVideoSink | 表示视频数据的一般汇点 |
QVideoWidget | 呈现媒体对象产生视频的小部件 |
CaptureSession | 允许捕获音频/视频内容 |
MediaPlayer | 将媒体回放添加描述到场景 |
MediaRecorder | 用于编码和录制在 CaptureSession 中生成的媒体 |
视频 | 展示指定视频的方便类型 |
VideoOutput | 渲染视频或摄像头取景器 |
cameraDevice | 描述摄像头设备 |
cameraFormat | 描述摄像头设备所支持的视频格式 |
mediaMetaData | 为媒体文件提供元数据 |