视频概述

视频特征

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 Video 元素为方便起见提供。它组合 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 媒体播放器范例

使用 Qt Quick 播放音频和视频。

QML 视频录制器

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

参考文档编制

C++ 类

QCapturableWindow

Used for getting the basic information of a capturable window

QMediaCaptureSession

允许捕获音频/视频内容

QMediaPlayer

允许播放媒体文件

QMediaRecorder

用于编码和录制捕获会话

QScreenCapture

This class is used for capturing a screen

QVideoFrame

表示视频数据帧

QVideoFrameFormat

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

QVideoSink

表示视频数据的一般汇点

QVideoWidget

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

QWindowCapture

This class is used for capturing a window

QML 类型

CapturableWindow

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

CaptureSession

允许捕获音频/视频内容

MediaPlayer

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

MediaRecorder

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

ScreenCapture

This type is used for capturing a screen

Video

展示指定视频的方便类型

VideoOutput

渲染视频或摄像头取景器

WindowCapture

This type is used for capturing a window

cameraDevice

描述摄像头设备

cameraFormat

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

mediaMetaData

为媒体文件提供元数据