ビデオ概要

ビデオの特徴

Qt Multimedia には、ビデオ・データを再生・操作するための高レベルおよび低レベルのC++クラスと、再生・録画用のQMLタイプがあります。ここで紹介するクラスの一部は、「カメラの概要」や「オーディオの概要」で紹介したものと重複しています。

ビデオ実装の詳細

C++による動画再生

QMediaPlayer クラスを使ってビデオ・ファイルをデコードし、QVideoWidgetQGraphicsVideoItem 、またはカスタム・クラスを使って表示することができます。

以下は、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でビデオを再生する

MediaPlayer またはCamera によって提供されるコンテンツをレンダリングするために、VideoOutput を使用することができます。VideoOutput は、QQuickScene またはWindow に埋め込むことができるビジュアルコンポーネントです。一方、すべてのメディアのデコードと再生制御はMediaPlayer またはCaptureSession によって処理されます。便宜上、Video 要素が提供されています。これは、MediaPlayerVideoOutputAudioOutput 要素を 1 つのアイテムにまとめたものです。

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

Qt Multimedia には、ビデオ・フレームを扱いやすくするための低レベル・クラスが多数用意されています。これらのクラスは、主にビデオやカメラのフレームを処理するコード(たとえば、バーコードの検出や派手なビネット効果の適用など)を書くときに使用します。

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

ビデオの録画

音声やビデオのキャプチャや録画の中心となるクラスはQMediaCaptureSession (またはCaptureSession QML タイプ)です。QCamera (QMLのカメラ)とQMediaRecorder (MediaRecorder)をセッションに接続し、メディアレコーダーに録画を開始するよう依頼することができます。

対応メディアフォーマット

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

ウィンドウズ

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

Windows Media Playerとは別に、インストール可能なコーデックパックも多数あります。コーデックガイドのサイトを参照してください。

アンドロイド

この情報については、Androidでサポートされているメディアフォーマットを参照してください。

リナックス

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

オーディオとビデオの再生Qt Quick

QML Media Player Example

QMLのMediaPlayer型を使ってオーディオやビデオを再生する。

QML Video Recorder

Qt Quick を使って音声や動画を記録する。

参考ドキュメント

C++ クラス

QAbstractVideoBuffer

ビデオデータの抽象化

QAbstractVideoBuffer::MapData

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

QCapturableWindow

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

QMediaCaptureSession

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

QMediaPlayer

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

QMediaRecorder

キャプチャセッションのエンコードと記録に使用します

QScreenCapture

画面のキャプチャに使用します。

QVideoFrame

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

QVideoFrameFormat

動画提示面のストリーム形式を指定します。

QVideoFrameInput

QMediaRecorder または QMediaCaptureSession を介したビデオ出力にカスタム・ビデオ・フレームを提供するために使用します。

QVideoSink

動画データの汎用シンクを表します

QVideoWidget

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

QWindowCapture

このクラスは、ウィンドウをキャプチャするために使用します

QML 型

CapturableWindow

WindowCaptureでキャプチャ可能なウィンドウの基本情報を取得するための型です。

CaptureSession

オーディオやビデオコンテンツのキャプチャを許可する

MediaPlayer

シーンにメディア再生を追加する

MediaRecorder

CaptureSessionで生成されたメディアをエンコードし、記録する。

ScreenCapture

画面をキャプチャするための型

Video

指定したビデオを表示するための便利な型

VideoOutput

ビデオまたはカメラのビューファインダーのレンダリング

WindowCapture

ウィンドウのキャプチャに使用します。

cameraDevice

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

cameraFormat

カメラデバイスがサポートするビデオフォーマットを記述します。

mediaMetaData

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

© 2025 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.