ビデオ概要
ビデオの特徴
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でビデオを再生する
MediaPlayer またはCamera によって提供されるコンテンツをレンダリングするために、VideoOutput を使用することができます。VideoOutput は、QQuickScene またはWindow に埋め込むことができるビジュアルコンポーネントです。一方、すべてのメディアのデコードと再生制御はMediaPlayer またはCaptureSession によって処理されます。便宜上、Video 要素が提供されています。これは、MediaPlayer 、VideoOutput 、AudioOutput 要素を 1 つのアイテムにまとめたものです。
低レベル・ビデオ・フレームの操作
Qt Multimedia には、ビデオ・フレームを扱いやすくするための低レベル・クラスが多数用意されています。これらのクラスは、主にビデオやカメラのフレームを処理するコード(たとえば、バーコードの検出や派手なビネット効果の適用など)を書くときに使用します。
QVideoFrame クラスはビデオ・フレームをカプセル化し、その内容を操作や処理のためにシステム・メモリにマッピングできるようにします。独自のQVideoSink を使用すると、これらのフレームをQMediaPlayer やQCamera から受け取ることができます。
ビデオの録画
音声やビデオのキャプチャや録画の中心となるクラスは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を使って、ターゲット・システムで利用可能なフォーマットを実行時に決定することができる。
- 特定のフォーマットを問い合わせるには、QMediaFormat::ConversionMode でQMediaFormat::isSupported ()を使用する。
- サポートされているすべてのファイル・フォーマットを取得するには、 デフォルトで構築されたQMediaFormat でQMediaFormat::supportedFileFormats() を使用します。
例
C++とQMLの両方のサンプルが用意されています。
C++の例
静止画のキャプチャやビデオの録画方法を示しています。 | |
Qt Widgets を使って音声や動画を再生する。 |
QMLの例
オーディオとビデオの再生Qt Quick | |
QMLのMediaPlayer型を使ってオーディオやビデオを再生する。 | |
Qt Quick を使って音声や動画を記録する。 |
参考ドキュメント
C++ クラス
ビデオデータの抽象化 | |
QAbstractVideoBuffer::MapData構造体は、マッピングされたプレーンレイアウトを記述します。 | |
キャプチャ可能なウィンドウの基本情報を取得するために使用される | |
オーディオおよびビデオコンテンツのキャプチャが可能 | |
メディアファイルの再生が可能 | |
キャプチャセッションのエンコードと記録に使用します | |
画面のキャプチャに使用します。 | |
ビデオデータのフレームを表します | |
動画提示面のストリーム形式を指定します。 | |
QMediaRecorder または QMediaCaptureSession を介したビデオ出力にカスタム・ビデオ・フレームを提供するために使用します。 | |
動画データの汎用シンクを表します | |
メディア オブジェクトによって生成された動画を提示するウィジェット | |
このクラスは、ウィンドウをキャプチャするために使用します |
QML 型
WindowCaptureでキャプチャ可能なウィンドウの基本情報を取得するための型です。 | |
オーディオやビデオコンテンツのキャプチャを許可する | |
シーンにメディア再生を追加する | |
CaptureSessionで生成されたメディアをエンコードし、記録する。 | |
画面をキャプチャするための型 | |
指定したビデオを表示するための便利な型 | |
ビデオまたはカメラのビューファインダーのレンダリング | |
ウィンドウのキャプチャに使用します。 | |
カメラデバイスを記述します。 | |
カメラデバイスがサポートするビデオフォーマットを記述します。 | |
メディアファイルのメタデータを提供します。 |
© 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.