このページでは

動画の概要

動画機能

Qt Multimedia ビデオデータの再生および操作を行うための高レベルおよび低レベルのC++クラス、ならびに再生および録画用のQML型を提供しています。ここで紹介するクラスの一部は、「カメラの概要」および「オーディオの概要」で紹介されている内容と重複しています。

ビデオの実装の詳細

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 またはCaptureSession によって処理されます。利便性を考慮して、Video 要素が用意されています。これは、MediaPlayer 、VideoOutput 、AudioOutput の各要素を1つのアイテムにまとめたものです。

低レベルのビデオフレームの操作

Qt Multimedia には、ビデオフレームの取り扱いを少し容易にするための、いくつかの低レベルクラスが用意されています。これらのクラスは主に、ビデオやカメラのフレームを処理するコード(例えば、バーコードの検出や、凝ったヴィネット効果の適用など)を作成する場合、あるいは他の方法ではサポートされていない特別な方法でビデオを表示する必要がある場合に使用されます。

QVideoFrame クラスはビデオフレームをカプセル化し、その内容をシステムメモリにマッピングして操作や処理を行うことを可能にします。独自のQVideoSink を使用することで、QMediaPlayer およびQCamera からこれらのフレームを受信することができます。

動画の録画

あらゆる種類のオーディオおよびビデオのキャプチャや録画の中核となるクラスは、QMediaCaptureSession (または QML タイプのCaptureSession )です。QCamera (QML では Camera)とQMediaRecorder (MediaRecorder )をセッションに接続し、メディアレコーダーに録画の開始を指示することができます。

サポートされているメディア形式

どのメディア形式がサポートされるかは、最終的にはターゲットシステムの設定に依存します。

Windows

デフォルトでは、MS Windows ターゲットで利用可能な機能は、OS に同梱されているWindows Media Playerのバージョンによって異なります。公式情報については、Windows Media Player のドキュメントを参照してください。

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++のサンプル

Camera Example

静止画のキャプチャや動画の録画方法を示しています。

Media Player Example

Qt Widgets を使用したオーディオおよびビデオの再生。

QMLのサンプル

Media Player

xml-ph-0000@deepl.internal を使用したオーディオおよび動画の再生。QML のサンプルQt Quick

QML Media Player Example

QMLのMediaPlayer型を使用したオーディオおよびビデオの再生。

QML Video Recorder

Qt Quick を使用したオーディオおよびビデオの録画。

リファレンスドキュメント

C++ クラス

QAbstractVideoBuffer

ビデオデータの抽象化

QAbstractVideoBuffer::MapData

QAbstractVideoBuffer::MapData 構造体は、マップされたプレーンのレイアウトを記述します

QCapturableWindow

キャプチャ可能なウィンドウの基本情報を取得するために使用される

QGStreamerVideoSource

カスタム GStreamer エレメントをバックエンドとするビデオソース

QMediaCaptureSession

オーディオおよびビデオコンテンツのキャプチャが可能

QMediaPlayer

メディアファイルの再生が可能

QMediaRecorder

キャプチャセッションのエンコードおよび記録に使用されます

QPlaybackOptions

メディア再生オプションの低レベル制御を可能にする

QScreenCapture

このクラスは、画面のキャプチャに使用されます

QVideoFrame

ビデオデータの1フレームを表します

QVideoFrameFormat

ビデオ表示面のストリーム形式を指定します

QVideoFrameInput

QMediaRecorder または QMediaCaptureSession 経由のビデオ出力に、カスタムビデオフレームを提供するために使用されます

QVideoSink

ビデオデータの汎用シンクを表します

QVideoWidget

メディアオブジェクトによって生成された動画を表示するウィジェット

QWindowCapture

このクラスは、ウィンドウのキャプチャに使用されます

QML タイプ

CapturableWindow

この型は、WindowCaptureを介してキャプチャ可能なウィンドウの基本情報を取得するために使用されます

CaptureSession

オーディオおよびビデオコンテンツのキャプチャを可能にします

GStreamerVideoSource

カスタムGStreamerバイナリをバックエンドとするビデオソース

MediaPlayer

シーンにメディア再生機能を追加します

MediaRecorder

CaptureSessionで生成されたメディアのエンコードおよび記録を行う

PlaybackOptions

低レベルのメディア再生オプション

ScreenCapture

このタイプは画面のキャプチャに使用されます

Video

指定した動画を表示するための便利なタイプ

VideoOutput

動画またはカメラのファインダーをレンダリングする

WindowCapture

このタイプは、ウィンドウのキャプチャに使用されます

cameraDevice

カメラデバイスを記述します

cameraFormat

カメラデバイスがサポートする動画フォーマットを表します

mediaMetaData

メディアファイルのメタデータを提供します

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.