視頻概述

視頻特徵

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-pulseaudio

對於 Linux 桌麵目標,強烈建議使用 gstreamer1.0-libav 為良好的編解碼器覆蓋和 gstreamer1.0-vaapi 以獲得硬件加速。

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

在運行時確定支持的媒體格式

可以確定目標係統中什麼格式可用,在運行時使用靜態 QMediaFormat API.

範例

存在 C++ 和 QML 兩種可用範例。

C++ 範例

攝像頭範例

Shows how to capture a still image or record video.

媒體播放器範例

Playing audio and video using Qt Widgets.

QML 範例

媒體播放器

Playing audio and video using Qt Quick

QML 媒體播放器範例

Playing audio and video using the QML MediaPlayer type.

QML 視頻錄製器

使用 Qt Quick 錄製音頻和視頻。

參考文檔編製

C++ 類

QAbstractVideoBuffer

抽象視頻數據

QAbstractVideoBuffer::MapData

QAbstractVideoBuffer::MapData 結構描述映射的平麵布局

QCapturableWindow

用於獲取可捕獲窗口的基本信息

QMediaCaptureSession

允許捕獲音頻/視頻內容

QMediaPlayer

允許播放媒體文件

QMediaRecorder

用於編碼和錄製捕獲會話

QPlaybackOptions

Enables low-level control of media playback options

QScreenCapture

此類用於捕獲屏幕

QVideoFrame

錶示視頻數據幀

QVideoFrameFormat

指定視頻呈現錶麵的流格式

QVideoFrameInput

用於嚮 QMediaRecorder 提供自定義視頻幀 (或透過 QMediaCaptureSession 輸齣視頻)

QVideoSink

錶示視頻數據的一般匯點

QVideoWidget

呈現媒體對象産生視頻的小部件

QWindowCapture

此類用於捕獲窗口

QML 類型

CapturableWindow

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

CaptureSession

允許捕獲音頻/視頻內容

MediaPlayer

將媒體迴放添加描述到場景

MediaRecorder

用於編碼和錄製在 CaptureSession 中生成的媒體

PlaybackOptions

Low level media playback options

ScreenCapture

此類型用於捕獲屏幕

視頻

展示指定視頻的方便類型

VideoOutput

渲染視頻或攝像頭取景器

WindowCapture

此類型用於捕獲窗口

cameraDevice

描述攝像頭設備

cameraFormat

描述攝像頭設備所支持的視頻格式

mediaMetaData

為媒體文件提供元數據