Qt Multimedia
Qt Multimedia には、マルチメディアコンテンツを扱うための豊富なQML型およびC++クラスを提供するアドオンモジュールが掲載されています。 このモジュールには、オーディオおよびビデオファイルの再生や画面へのレンダリングを行うための使いやすいAPIに加え、システムカメラやマイク、画面やウィンドウのキャプチャ、オーディオやビデオのメモリバッファなど、さまざまなソースからのオーディオおよびビデオの記録を行うための包括的なAPIが含まれています。
このモジュールの機能は、以下のサブモジュールに分かれています。
| Qt Multimedia | マルチメディア特有のユースケース向けの API を提供します。 |
| Qt Multimedia ウィジェット | ウィジェットベースのマルチメディアAPIを提供します。 |
| Qt Spatial Audio | 3D空間における音場を実装するためのAPIを提供します。 |
はじめに
Qt 5 から Qt 6 へ移植する場合は、「Qt Multimedia の変更点」を参照してください。
Qt Multimedia を初めてご利用になる場合は、.qml ファイルに以下の記述を追加することで、QML タイプをアプリケーションにインポートできます。
import QtMultimediaC++ ライブラリにリンクするには、プロジェクトのCMakeLists.txt ファイルに以下を追加してください。mytarget をプロジェクト名に置き換えてください。
find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)Qt Multimedia をソースからビルドする方法については、「 Qt Multimedia のソースからのビルド」を参照してください。
概要と重要なトピック
QML タイプ
以下の表は、重要な QML タイプの一部をまとめたものです。
| 型 | 説明 |
|---|---|
| MediaPlayer | シーンにオーディオ/ビデオの再生機能を追加します。 |
| CaptureSession | オーディオ/ビデオのキャプチャを行うセッションを作成します。 |
| Camera | システムに接続されたカメラにアクセスします。 |
| AudioInput | システムに接続されたオーディオ入力(マイク)にアクセスします。 |
| AudioOutput | システムに接続されたオーディオ出力(スピーカー、ヘッドフォン)にアクセスします。 |
| VideoOutput | ビデオコンテンツを表示します。 |
| MediaRecorder | CaptureSession から音声・動画を録画します。 |
| ImageCapture | カメラから静止画像をキャプチャします。 |
| Video | シーンにビデオ再生機能を追加します。MediaPlayer およびVideoOutput タイプを使用して、ビデオ再生機能を提供します。 |
| ScreenCapture | 画面をキャプチャします。 |
| WindowCapture | トップレベルのウィンドウをキャプチャします。 |
| GStreamerVideoSource | カスタム GStreamer ビデオソース(GStreamer メディアバックエンドを使用)。 |
C++ クラス
次の表は、重要な C++ クラスの概要を示しています。
| クラス | 説明 |
|---|---|
| QMediaPlayer | ソースからメディアを再生します。 |
| QVideoWidget | メディアプレーヤーまたはキャプチャセッションからビデオを表示します。 |
| QMediaCaptureSession | オーディオおよびビデオをキャプチャします。 |
| QCamera | システムに接続されたカメラにアクセスする |
| QAudioInput | システムに接続されたオーディオ入力(マイク)にアクセスします。 |
| QAudioOutput | システムに接続されたオーディオ出力(スピーカー、ヘッドフォン)にアクセスする。 |
| QImageCapture | カメラで静止画像をキャプチャします。 |
| QMediaRecorder | キャプチャ セッションからメディア コンテンツを録画します。 |
| QVideoSink | 個々のビデオフレームにアクセスし、レンダリングします。 |
| QAudioSink | 生のオーディオデータをオーディオ出力デバイスに送信します。 |
| QScreenCapture | 画面をキャプチャします。 |
| QWindowCapture | トップレベルのウィンドウをキャプチャします。 |
| QVideoFrameInput | メモリバッファからのビデオフレームの表示または記録に使用されます。 |
| QAudioBufferInput | メモリバッファからのオーディオの再生または録音に対応しています。 |
| QGStreamerVideoSource | カスタム GStreamer ビデオソース(GStreamer メディアバックエンドを使用)。 |
オーディオおよびビデオの再生については、QMediaPlayer 、QAudioOutput 、およびQVideoWidget に、必要な機能がすべて含まれています。その他のクラスは、オーディオおよびビデオコンテンツのキャプチャ専用であり、QMediaCaptureSession が、キャプチャおよび記録プロセス全体を管理する中心的なクラスとして機能します。
ライセンスおよび帰属表示
Qt Multimedia モジュールは、The Qt Companyから商用ライセンスで提供されています。また、フリーソフトウェアライセンスでも利用可能です。Qt 5.6以降、これらのフリーソフトウェアライセンスは、GNU Lesser General Public License バージョン3、 またはGNU General Public License バージョン2となっています。詳細については、「Qtのライセンス」を参照してください。
さらに、Qt 6.12.0 版のQt Multimedia には、以下の寛容なライセンスに基づくサードパーティ製モジュールが含まれている場合があります:
The Unlicense または MIT No Attribution | |
GNU Lesser General Public License v2.1 以降、および BSD 3条項「New」または「Revised」ライセンス、BSD 2条項「Simplified」ライセンス、BSD ソースコード帰属ライセンス、ISC ライセンス、MIT ライセンス、Mozilla Public License 2.0 | |
MITライセンス | |
BSD 3条項「New」または「Revised」ライセンス | |
Boostソフトウェアライセンス 1.0 | |
Independent JPEG Group ライセンス | |
zlib ライセンス |
H.264 メディア圧縮規格などの動画圧縮規格は、特許の対象となる可能性があり、ロイヤリティが発生する場合があることにご留意ください。これは、その実装がオペレーティングシステムのサービスとして提供されている場合、サードパーティのライブラリを通じて提供されている場合、あるいはQt Multimedia のバックエンドのいずれかを通じて提供されている場合を含め、あらゆる実装に適用される可能性があります。Qt ライセンスは、このような費用をカバーするものではありません。
ターゲットプラットフォームおよびバックエンドに関する注意事項
Qt Multimedia は、メディアの再生、記録、およびデバイス管理のための、ユーザーフレンドリーなクロスプラットフォームAPIを提供します。QMediaDevices 、QAudioDevice 、QSoundEffect 、QAudioSink 、QAudioSource を含むコアAPIの実装は、メインのQt Multimedia ライブラリに統合されており、追加のライブラリは不要です。その他のQt Multimedia API は、メディアバックエンドと呼ばれるプラグインライブラリを使用して実装されています。FFmpegを基盤とするメインのメディアバックエンドは、シームレスなクロスプラットフォーム機能を保証しており、WebAssemblyおよび組み込みLinux/Boot2Qtを除くすべてのプラットフォームでデフォルトとして設定されています。Boot2Qtの場合、デフォルトのバックエンドはGStreamerを基盤としていますが、QT_MEDIA_BACKEND という環境変数を使用することで、FFmpegメディアバックエンドを有効にすることができます。
FFmpegバックエンド
FFmpegメディアバックエンドは、Qt Online Installer に同梱され、メンテナによってテスト済みのFFmpeg 9.0.1ライブラリに依存しています。オンラインインストーラからのバイナリパッケージは、FFmpegへの動的リンクを使用しています。そのため、アプリケーションは、インストーラにFFmpegバイナリを同梱するか、オペレーティングシステム上にFFmpegがインストールされていることを前提とする必要があります。 FFmpegライブラリは、『Qtアプリケーションのデプロイ』ドキュメントに記載されているように、Qtのデプロイツールを使用して自動的にデプロイされます(Linux/X11を除く)。また、FFmpegのメジャーバージョンがQtで使用されているバージョンと一致している限り、アプリケーションは独自のビルドしたFFmpegを、共有ライブラリまたは静的ライブラリとしてデプロイすることも可能です。
Qt Multimedia はほとんどのオペレーティングシステムでFFmpegメディアバックエンドを活用していますが、プラットフォームが異なる場合、アプリケーション間で機能や外観に差異が生じる可能性があります。FFmpegはすべてのプラットフォームで同一のコーデックやフォーマットをサポートしているわけではなく、Qt Multimedia の機能のパフォーマンスは、特定のプラットフォームでのみ利用可能なハードウェアサポートに依存する場合があります。 例えば、FFmpegはARMアーキテクチャを搭載したLinuxターゲットにおいて、ハードウェアアクセラレーションに関する特定の課題に直面しています。そのため、Qt Multimedia で作成されたアプリケーションは、すべてのターゲットプラットフォームでテストすることを推奨します。
注:FFmpegプロジェクトは 、さまざまなライセンスの下で機能を提供しています。オンラインインストーラを通じて提供されるビルド済みのFFmpegライブラリには、「ライセンスおよび帰属表示」に記載されている寛容なライセンスに準拠する機能のみが含まれています。
開発とデバッグを容易にするため、一部の FFmpeg 機能は、非公開のQt Multimedia API の一部である環境変数を通じて設定可能です。
ネイティブバックエンド
既存のアプリケーションとの互換性を確保するため、各オペレーティングシステム向けにネイティブメディアバックエンドを維持しています:
- 組み込みLinux上のGStreamerバックエンド
- macOSおよびiOS上のAVFoundation
- Windows上のWindows Media Foundation(Qt 6.10以降、非推奨)
- Android上のMediaCodecフレームワーク
- WebAssembly上のWebAudioおよびWebVideo
注: WebAssembly を除き、FFmpeg メディアバックエンドが デフォルトのバックエンドとなります。ネイティブバックエンドも引き続き利用可能ですが、サポートは限定的です。GStreamer バックエンドは Linux でのみ利用可能であり、組み込みアプリケーションでのみ推奨されます。
注: Android 上のMediaCodec は Qt 6.8 以降で非推奨となっており、次期メジャーリリースで削除される予定です。
注: Windows Media Foundation を基盤とする Windows メディアバックエンドは 、Qt 6.10 以降で非推奨となっており、次期メジャーリリースで削除される予定です。
Qt メンテナーは、ネイティブバックエンドの重大な問題の修正に努めますが、プラットフォーム間で動作が不一致になるなどの軽微な問題については修正を保証しません。新機能は、WebAssembly を除き、FFmpeg メディアバックエンドでのみ実装されます。
GStreamerバックエンドには、よりきめ細かな制御を可能にするいくつかの非公開APIがあります。ただし、GStreamerバックエンドには既知のバグが存在します。詳細については、GStreamerバックエンドのプラットフォームノートをご覧ください。
バックエンドの制限事項は文書化され、そのステータスは各クラス内で管理されます。
バックエンドの変更
デフォルトのFFmpegバックエンドに問題がある場合は、ネイティブバックエンドでのテストを推奨します。QT_MEDIA_BACKEND 環境変数をwindows 、gstreamer (Embedded Linuxの場合)、darwin (macOSおよびiOSの場合)、またはandroid に設定することで、ネイティブバックエンドに切り替えることができます:
export QT_MEDIA_BACKEND=darwinFFmpegをバックエンドとして強制的に指定するには、この変数をffmpeg に設定します:
export QT_MEDIA_BACKEND=ffmpegQt Multimedia のコンパイル段階では、デフォルトのメディアバックエンドをcmake変数QT_DEFAULT_MEDIA_BACKEND で設定できます。
ターゲットプラットフォームに関する注意事項
以下のページには、特定のターゲットプラットフォームに関する問題が記載されています。
権限
Qt 6.6 以降、Qt Multimedia モジュールは、camera およびmicrophone の権限処理に新しいQPermission APIを使用します。これにより、Qt自体がこれらの権限を照会しなくなったため、クライアントアプリケーション側から直接行う必要があります。
新しいQPermission APIをアプリケーションに組み込む方法の例については、「アプリケーションの権限」ページを参照してください。
リファレンスとサンプル
© 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.