ビデオ概要
ビデオの特徴
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++の例
静止画のキャプチャやビデオの録画方法を示しています。 | |
オーディオやビデオの再生。 |
QMLの例
Qt Quickを使ったオーディオとビデオの再生 | |
QMLのMediaPlayer型を使ってオーディオやビデオを再生する。 | |
Qt Quick を使ったオーディオとビデオの録画 |
参考ドキュメント
C++ クラス
ビデオデータの抽象化 | |
QAbstractVideoBuffer::MapData構造体は、マッピングされたプレーンレイアウトを記述します。 | |
キャプチャ可能なウィンドウの基本情報を取得するために使用される | |
オーディオおよびビデオコンテンツのキャプチャが可能 | |
メディアファイルの再生が可能 | |
キャプチャセッションのエンコードと記録に使用します | |
画面のキャプチャに使用します。 | |
ビデオデータのフレームを表します | |
動画提示面のストリーム形式を指定します。 | |
QMediaRecorder または QMediaCaptureSession を介したビデオ出力にカスタム・ビデオ・フレームを提供するために使用します。 | |
動画データの汎用シンクを表します | |
メディア オブジェクトによって生成された動画を提示するウィジェット | |
このクラスは、ウィンドウをキャプチャするために使用します |
QML 型
WindowCaptureでキャプチャ可能なウィンドウの基本情報を取得するための型です。 | |
オーディオやビデオコンテンツのキャプチャを許可する | |
シーンにメディア再生を追加する | |
CaptureSessionで生成されたメディアをエンコードし、記録する。 | |
画面をキャプチャするための型 | |
指定したビデオを表示するための便利な型 | |
ビデオまたはカメラのビューファインダーのレンダリング | |
ウィンドウのキャプチャに使用します。 | |
カメラデバイスを記述します。 | |
カメラデバイスがサポートするビデオフォーマットを記述します。 | |
メディアファイルのメタデータを提供します。 |
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。