ビデオ概要

ビデオの特徴

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のカメラ)とQMediaRecorderMediaRecorder )をセッションに接続し、メディアレコーダーに録画を開始するよう依頼することができます。

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

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

ウィンドウズ

デフォルトでは、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

オーディオやビデオの再生。

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

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

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。