视频概述

视频特征

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

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

录制视频

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

支持的媒体格式

支持什么媒体格式,最终从属目标系统配置。

Windows

默认情况下,在微软 Windows 目标什么可用从属版本化的 Windows 媒体播放器 与 OS 一起打包。见 Windows 媒体播放器文档编制 了解官方信息。

独立于 Windows Media Player,当然有很多编解码器包可以安装。见 编解码器指南 站点有一些范例。

Android

Android 支持的媒体格式 了解此信息。

Linux

在 Linux,这是关于安装正确的 GStreamer 插件。

最低要求的 GStreamer 插件

  • gstreamer1.0-plugins-base
  • gstreamer1.0-plugins-good
  • gstreamer1.0-plugins-pulseaudio

对于 Linux 桌面目标,强烈建议使用 gstreamer1.0-libav 为良好的编解码器覆盖和 gstreamer1.0-vaapi 以获得硬件加速。

在嵌入式 Linux,要求的插件集可能有所不同。

在运行时确定支持的媒体格式

可以确定目标系统中什么格式可用,在运行时使用静态 QMediaFormat API.

范例

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

C++ 范例

摄像头范例

Shows how to capture a still image or record video.

媒体播放器范例

播放音频和视频。

QML 范例

媒体播放器

Playing audio and video using Qt Quick

QML 媒体播放器范例

Playing audio and video using the QML MediaPlayer type.

QML 视频录制器

使用 Qt Quick 录制音频和视频。

参考文档编制

C++ 类

QCapturableWindow

用于获取可捕获窗口的基本信息

QMediaCaptureSession

允许捕获音频/视频内容

QMediaPlayer

允许播放媒体文件

QMediaRecorder

用于编码和录制捕获会话

QScreenCapture

此类用于捕获屏幕

QVideoFrame

表示视频数据帧

QVideoFrameFormat

指定视频呈现表面的流格式

QVideoSink

表示视频数据的一般汇点

QVideoWidget

呈现媒体对象产生视频的小部件

QWindowCapture

此类用于捕获窗口

QML 类型

CapturableWindow

Type is used getting basic of a window that is available for capturing via WindowCapture

CaptureSession

允许捕获音频/视频内容

MediaPlayer

将媒体回放添加描述到场景

MediaRecorder

用于编码和录制在 CaptureSession 中生成的媒体

ScreenCapture

此类型用于捕获屏幕

视频

展示指定视频的方便类型

VideoOutput

渲染视频或摄像头取景器

WindowCapture

此类型用于捕获窗口

cameraDevice

描述摄像头设备

cameraFormat

描述摄像头设备所支持的视频格式

mediaMetaData

为媒体文件提供元数据