QMediaPlayer Class

QMediaPlayerクラスはメディアファイルの再生を可能にします。詳細...

ヘッダー #include <QMediaPlayer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake QT += multimedia
QML で MediaPlayer
継承: QObject

パブリックな型

enum Error { NoError, ResourceError, FormatError, NetworkError, AccessDeniedError }
enum Loops { Infinite, Once }
enum MediaStatus { NoMedia, LoadingMedia, LoadedMedia, StalledMedia, BufferingMedia, …, InvalidMedia }
enum PlaybackState { StoppedState, PlayingState, PausedState }

プロパティ

パブリック機能

QMediaPlayer(QObject *parent = nullptr)
virtual ~QMediaPlayer() override
int activeAudioTrack() const
int activeSubtitleTrack() const
int activeVideoTrack() const
QAudioBufferOutput *audioBufferOutput() const
QAudioOutput *audioOutput() const
QList<QMediaMetaData> audioTracks() const
float bufferProgress() const
QMediaTimeRange bufferedTimeRange() const
qint64 duration() const
QMediaPlayer::Error error() const
QString errorString() const
bool hasAudio() const
bool hasVideo() const
bool isAvailable() const
bool isPlaying() const
bool isSeekable() const
int loops() const
QMediaPlayer::MediaStatus mediaStatus() const
QMediaMetaData metaData() const
qreal playbackRate() const
QMediaPlayer::PlaybackState playbackState() const
qint64 position() const
void setActiveAudioTrack(int index)
void setActiveSubtitleTrack(int index)
void setActiveVideoTrack(int index)
void setAudioBufferOutput(QAudioBufferOutput *output)
void setAudioOutput(QAudioOutput *output)
void setLoops(int loops)
void setVideoOutput(QObject *)
void setVideoSink(QVideoSink *sink)
QUrl source() const
const QIODevice *sourceDevice() const
QList<QMediaMetaData> subtitleTracks() const
QObject *videoOutput() const
QVideoSink *videoSink() const
QList<QMediaMetaData> videoTracks() const

パブリックスロット

void pause()
void play()
void setPlaybackRate(qreal rate)
void setPosition(qint64 position)
void setSource(const QUrl &source)
void setSourceDevice(QIODevice *device, const QUrl &sourceUrl = QUrl())
void stop()

シグナル

void activeTracksChanged()
void audioBufferOutputChanged()
void audioOutputChanged()
void bufferProgressChanged(float filled)
void durationChanged(qint64 duration)
void errorChanged()
void errorOccurred(QMediaPlayer::Error error, const QString &errorString)
void hasAudioChanged(bool available)
void hasVideoChanged(bool videoAvailable)
void loopsChanged()
void mediaStatusChanged(QMediaPlayer::MediaStatus status)
void metaDataChanged()
void playbackRateChanged(qreal rate)
void playbackStateChanged(QMediaPlayer::PlaybackState newState)
void playingChanged(bool playing)
void positionChanged(qint64 position)
void seekableChanged(bool seekable)
void sourceChanged(const QUrl &media)
void tracksChanged()
void videoOutputChanged()

詳細説明

QMediaPlayerクラスは高レベルのメディア再生クラスです。ビデオ・メディア・ファイルのオーディオを再生するのに使うことができる。再生するコンテンツはQUrl オブジェクトとして指定します。

player = new QMediaPlayer;
audioOutput = new QAudioOutput;
player->setAudioOutput(audioOutput);
connect(player, &QMediaPlayer::positionChanged, this, &MediaExample::positionChanged);
player->setSource(QUrl::fromLocalFile("/Users/me/Music/coolsong.mp3"));
audioOutput->setVolume(50);
player->play();

QVideoWidget QMediaPlayerはビデオ・レンダリングのためにQMediaPlayerと一緒に使うことができます。

QVideoWidgetも参照

メンバ型ドキュメント

enum QMediaPlayer::Error

メディアプレーヤーのエラー状態を定義します。

定数説明
QMediaPlayer::NoError0エラーは発生していません。
QMediaPlayer::ResourceError1メディア・リソースを解決できませんでした。
QMediaPlayer::FormatError2メディアリソースのフォーマットが(完全に)サポートされていません。再生は可能ですが、オーディオまたはビデオコンポーネントはありません。
QMediaPlayer::NetworkError3ネットワークエラーが発生しました。
QMediaPlayer::AccessDeniedError4メディアリソースを再生するための適切なパーミッションがありません。

enum QMediaPlayer::Loops

loops プロパティ用のいくつかの定義済み定数。

定数説明
QMediaPlayer::Infinite-1永久ループ。
QMediaPlayer::Once1メディアを一度再生する(デフォルト)。

enum QMediaPlayer::MediaStatus

メディアプレーヤーの現在のメディアの状態を定義します。

定数説明
QMediaPlayer::NoMedia0現在のメディアはありません。プレーヤーはStoppedState にある。
QMediaPlayer::LoadingMedia1現在のメディアはロード中です。プレーヤーはどの状態でもよい。
QMediaPlayer::LoadedMedia2現在のメディアはロードされています。プレーヤーはStoppedState にある。
QMediaPlayer::StalledMedia3バッファリング不足またはその他の一時的な中断により、現在のメディアの再生が停止した。プレーヤーはPlayingState またはPausedState にある。
QMediaPlayer::BufferingMedia4プレーヤーはデータをバッファリングしていますが、当面の間、再生を継続するのに十分なデータがバッファリングされています。プレーヤーがPlayingState またはPausedState にある。
QMediaPlayer::BufferedMedia5プレーヤーは現在のメディアを完全にバッファリングしています。プレーヤーがPlayingState またはPausedState にある。
QMediaPlayer::EndOfMedia6再生が現在のメディアの最後に達した。プレーヤーがStoppedState にある。
QMediaPlayer::InvalidMedia7現在のメディアは再生できません。プレーヤーがStoppedState にある。

enum QMediaPlayer::PlaybackState

メディアプレーヤーの現在の状態を定義します。

定数説明
QMediaPlayer::StoppedState0メディアプレーヤーはコンテンツを再生していません。
QMediaPlayer::PlayingState1メディアプレーヤーは現在コンテンツを再生中です。これは、playing プロパティと同じことを示します。
QMediaPlayer::PausedState2メディアプレーヤーは再生を一時停止しており、現在のトラックの再生は、プレーヤーが一時停止した位置から再開される。

プロパティの説明

activeAudioTrack : int

現在アクティブなオーディオトラックを返します。

デフォルトでは、最初に利用可能なオーディオトラックが選択されます。

すべてのオーディオトラックを無効にするには、index-1 に設定します。

アクセス機能:

int activeAudioTrack() const
void setActiveAudioTrack(int index)

通知シグナル:

void activeTracksChanged()

activeSubtitleTrack : int

現在アクティブな字幕トラックを返す。

字幕を無効にするには、index-1 に設定します。

デフォルトでは字幕は無効です。

アクセス機能:

int activeSubtitleTrack() const
void setActiveSubtitleTrack(int index)

通知シグナル:

activeVideoTrack : int

現在アクティブなビデオトラックを返します。

デフォルトでは、最初に使用可能なオーディオトラックが選択されます。

すべてのビデオトラックを無効にするには、index-1 に設定します。

アクセス機能:

int activeVideoTrack() const
void setActiveVideoTrack(int index)

通知信号:

[since 6.8] audioBufferOutput : QAudioBufferOutput*

このプロパティは、メディアプレーヤーによって使用される出力オーディオバッファを保持する。

メディアプレーヤーにオーディオバッファoutput を設定する。

QAudioBufferOutput が指定され、メディアソースがオーディオストリームを含む場合、メディアプレーヤーは、デコードされたオーディオデータを含むオーディオバッファを持つ信号QAudioBufferOutput::audioBufferReceived を発する。オーディオストリームの終わりには、QMediaPlayer は空のQAudioBuffer を発する。

QMediaPlayer は、オーディオ・バッファが指定されている場合、一致するデータをオーディオ出力にプッシュすると同時に、オーディオ・バッファを出力します。ただし、オーディオバッファ化により、サウンドは少し遅れて再生されます。

放出されるオーディオバッファのフォーマットは、指定されたoutput 、またはoutput が無効なフォーマットを返した場合は、一致するオーディオストリームから取得されます。放出されるオーディオデータは、現在の再生レートによってスケーリングされることはありません。

QMediaPlayerQAudioBufferOutput を利用する使用例としては、以下のようなものが考えられる:

  • オーディオの視覚化。メディアプレーヤーの再生レートが1 でない場合、ビジュアライザーの要件に応じて、出力画像の寸法や画像の更新間隔をスケーリングすることができます。
  • AIによる音声処理(音声認識など)。
  • 外部音声出力へのデータ送信。再生レートの変更、ビデオとの同期、停止やシーク時の手動フラッシュを考慮する必要があります。特別な理由がない限り、この目的でオーディオバッファ出力を使用することはお勧めしません。

このプロパティは Qt 6.8 で導入されました。

アクセス関数です:

QAudioBufferOutput *audioBufferOutput() const
void setAudioBufferOutput(QAudioBufferOutput *output)

通知シグナル

void audioBufferOutputChanged()

audioOutput : QAudioOutput*

このプロパティは、メディアプレーヤーが使用するオーディオ出力デバイスを保持する。

メディア再生時に使用される現在のオーディオ出力。新しいオーディオ出力を設定すると、現在使用されている出力が置き換えられます。

このプロパティをnullptr に設定すると、すべてのオーディオ出力が無効になります。

アクセス機能:

QAudioOutput *audioOutput() const
void setAudioOutput(QAudioOutput *output)

ノーティファイア信号:

void audioOutputChanged()

[read-only] audioTracks : const QList<QMediaMetaData>

メディア内の利用可能なオーディオトラックのセットを一覧表示する。

返されるQMediaMetaData には、個々のトラックのプロパティが記述されています。

異なるオーディオトラックは、例えば、異なる言語のオーディオを含むことができる。

アクセス関数:

QList<QMediaMetaData> audioTracks() const

通知シグナル:

void tracksChanged()

[read-only] bufferProgress : const float

このプロパティは、再生が開始または再開される前に、テンポラリ・バッファが満たされたパーセンテージを保持します。0. (空)から1. (満)までです。

プレーヤ オブジェクトがバッファリングしている場合、このプロパティは、一時バッファが満たされている割合を保持します。再生開始または再開するには、バッファが100%満たされる必要があり、その時点でmediaStatus() はBufferedMedia またはBufferingMedia を返します。値が100 より小さい場合、mediaStatus() はStalledMedia を返します。

アクセス関数:

float bufferProgress() const

通知シグナル:

void bufferProgressChanged(float filled)

mediaStatus()も参照のこと

[read-only] duration : const qint64

このプロパティは、現在のメディアの継続時間を保持する。

値は、現在のメディアのミリ秒単位の総再生時間である。この値は、QMediaPlayer オブジェクトのライフタイムに渡って変化する可能性があり、最初の再生開始時には利用できない可能性があります。ステータス通知を受け取るには、durationChanged() シグナルに接続してください。

アクセス関数:

qint64 duration() const

Notifierシグナル:

void durationChanged(qint64 duration)

[read-only] error : const Error

このプロパティは、最後のエラー状態を示す文字列を保持する。

アクセス関数

QMediaPlayer::Error error() const

ノーティファイア・シグナル:

void errorChanged()

error()も参照

[read-only] errorString : const QString

このプロパティは、現在のエラー状態の詳細を示す文字列を保持する。

アクセス関数

QString errorString() const

通知シグナル

void errorChanged()

[read-only] hasAudio : const bool

このプロパティは、メディアに音声が含まれているかどうかを保持する。

アクセス関数:

bool hasAudio() const

通知シグナル

void hasAudioChanged(bool available)

[read-only] hasVideo : const bool

このプロパティは、メディアがビデオを含むかどうかを保持する。

アクセス関数:

bool hasVideo() const

通知シグナル

void hasVideoChanged(bool videoAvailable)

loops : int

プレーヤーが停止するまでの、メディアの再生回数を決定します。QMediaPlayer::Infinite に設定すると、現在のメディアファイルを永遠にループ再生します。

デフォルト値は1 です。このプロパティを0 に設定しても効果はありません。

アクセス関数:

int loops() const
void setLoops(int loops)

通知シグナル:

void loopsChanged()

[read-only] mediaStatus : const MediaStatus

このプロパティは、現在のメディアストリームの状態を保持する。

ストリームの状態は、現在のストリームの再生がどのように進行しているかを示す。

デフォルトでは、このプロパティはQMediaPlayer::NoMedia

アクセス関数である:

QMediaPlayer::MediaStatus mediaStatus() const

Notifierシグナル:

void mediaStatusChanged(QMediaPlayer::MediaStatus status)

[read-only] metaData : const QMediaMetaData

メディア プレーヤで使用されている現在のメディアのメタ データを返します。

メタデータには、動画のタイトルや作成日などの情報を含めることができます。

注: Windows の実装では、ローカル ファイル システムにあるメディアに対してのみメタデータを提供します。

アクセス関数

QMediaMetaData metaData() const

通知シグナル:

void metaDataChanged()

playbackRate : qreal

このプロパティは、現在のメディアの再生レートを保持する。

この値は、メディアの標準再生速度に適用される乗数である。デフォルトでは、この値は1.0であり、メディアが標準速度で再生されていることを示す。1.0より大きい値を指定すると再生速度が速くなり、0.0から1.0の間の値を指定すると遅くなります。負の再生速度はサポートされていません。

すべての再生サービスが再生速度の変更をサポートしているわけではない。早送りや巻き戻し中のオーディオやビデオの状態や品質については、フレームワークで定義されています。

アクセス機能

qreal playbackRate() const
void setPlaybackRate(qreal rate)

通知信号

void playbackRateChanged(qreal rate)

[read-only] playbackState : const PlaybackState

PlaybackState を返します。

アクセス関数:

QMediaPlayer::PlaybackState playbackState() const

通知シグナル:

void playbackStateChanged(QMediaPlayer::PlaybackState newState)

playingも参照

[read-only, since 6.5] playing : const bool

このプロパティは、メディアが再生中かどうかを保持します。

このプロパティは Qt 6.5 で導入されました。

アクセス関数です:

bool isPlaying() const

アクセス関数: Notifierシグナル:

void playingChanged(bool playing)

playbackStatePlayingStateも参照してください

position : qint64

このプロパティは、現在のメディアの再生位置を保持する。

値は現在の再生位置で、メディアの開始からのミリ秒単位で表される。位置の定期的な変化は、positionChanged ()シグナルで示される。

seekable プロパティがtrueの場合、このプロパティはミリ秒に設定できる。

アクセス関数

qint64 position() const
void setPosition(qint64 position)

Notifier シグナル:

void positionChanged(qint64 position)

[read-only] seekable : const bool

このプロパティは、現在のメディアのシーク可能状態を保持する。

シークがサポートされている場合、このプロパティはtrueとなり、そうでない場合はfalseとなる。このプロパティの状態は、QMediaPlayer オブジェクトのライフタイムに渡って変化する可能性があります。seekableChanged シグナルを使用して、変化を監視します。

アクセス関数:

bool isSeekable() const

Notifier シグナル:

void seekableChanged(bool seekable)

source : QUrl

このプロパティは、プレーヤオブジェクトが使用するアクティブなメディアソースを保持します。

プレーヤオブジェクトは、再生するコンテンツの選択にQUrl を使用します。

デフォルトでは、このプロパティはNULLQUrl を持ちます。

このプロパティをNULLQUrl に設定すると、プレーヤは現在のメディアソースに関連するすべての情報を破棄し、そのメディアに関連するすべてのI/O操作を停止します。

アクセス関数:

QUrl source() const
void setSource(const QUrl &source)

Notifierシグナル:

void sourceChanged(const QUrl &media)

QUrlも参照のこと

[read-only] subtitleTracks : const QList<QMediaMetaData>

メディア内の利用可能な字幕トラックのセットを一覧表示する。

返されるQMediaMetaData 、個々のトラックのプロパティを記述する。

アクセス関数:

QList<QMediaMetaData> subtitleTracks() const

Notifier シグナル:

void tracksChanged()

videoOutput : QObject*

このプロパティは、メディアプレーヤーが使用するビデオ出力を保持します。

メディアプレーヤーは、1つのビデオ出力しか接続できないため、このプロパティを設定すると、以前に接続されていたビデオ出力が置き換えられます。

このプロパティをnullptr に設定すると、ビデオ出力は無効になります。

アクセス関数

QObject *videoOutput() const
void setVideoOutput(QObject *)

通知シグナル

void videoOutputChanged()

[read-only] videoTracks : const QList<QMediaMetaData>

メディア内の利用可能なビデオトラックのセットを一覧表示する。

返されるQMediaMetaData には、個々のトラックのプロパティが記述される。

アクセス関数:

QList<QMediaMetaData> videoTracks() const

Notifier シグナル:

void tracksChanged()

メンバ関数ドキュメント

[explicit] QMediaPlayer::QMediaPlayer(QObject *parent = nullptr)

parent の子として QMediaPlayer インスタンスを構築する。

[override virtual noexcept] QMediaPlayer::~QMediaPlayer()

プレイヤーオブジェクトを破壊する。

float QMediaPlayer::bufferProgress() const

データをバッファリングしている場合、0から1の間の数値を返す。

0はバッファリングされたデータがないことを意味し、通常この場合再生は停止します。バッファが 1 に達すると、再生が再開されます。これは、再生が再開できるだけのデータがバッファリングされたことを意味します。

bufferProgress()は、ローカルファイルの場合、常に1を返します。

注: プロパティbufferProgressのゲッター関数です。

[signal] void QMediaPlayer::bufferProgressChanged(float filled)

filled ローカルバッファの量を 0 から 1 の間の数値で示す。

注: bufferProgress プロパティの通知シグナル。

QMediaTimeRange QMediaPlayer::bufferedTimeRange() const

現在バッファリングされているデータを記述するQMediaTimeRange

リモートソースからメディアをストリーミングする場合、メディアファイルのさまざまな部分をローカルで利用できます。返されるQMediaTimeRange オブジェクトには、バッファリングされ、すぐに再生可能な時間範囲が記述されています。

QMediaTimeRangeも参照してください

qint64 QMediaPlayer::duration() const

現在のメディアの再生時間をms単位で返します。

メディアプレーヤーに有効なメディアファイルまたはストリームがない場合は0を返します。ライブストリームの場合、継続時間は通常、再生中にデータが利用可能になるにつれて変化します。

注: プロパティ duration のゲッター関数です。

[signal] void QMediaPlayer::durationChanged(qint64 duration)

コンテンツの継続時間がduration に変更されたことを示す。

注: プロパティduration に対するノーティファイアシグナル。

QMediaPlayer::Error QMediaPlayer::error() const

現在のエラー状態を返します。

注: プロパティ・エラー用のゲッター関数です。

[signal] void QMediaPlayer::errorOccurred(QMediaPlayer::Error error, const QString &errorString)

error 、エラーの説明を含むerrorString

errorString()も参照のこと

[signal] void QMediaPlayer::hasAudioChanged(bool available)

音声コンテンツの可用性がavailable に変更されたことを示す。

注: プロパティhasAudio に対する通知シグナル。

[signal] void QMediaPlayer::hasVideoChanged(bool videoAvailable)

ビジュアルコンテンツの可用性がvideoAvailable に変更されたことを示す。

注: プロパティhasVideo に対する通知シグナル。

bool QMediaPlayer::isAvailable() const

メディアプレーヤーがこのプラットフォームでサポートされている場合はtrueを返します。

bool QMediaPlayer::isSeekable() const

メディアがシーク可能な場合にtrueを返す。ほとんどのファイルベースのメディアファイルはシーク可能ですが、ライブストリームは通常シークできません。

注: プロパティseekable のゲッター関数です。

positionも参照

[signal] void QMediaPlayer::mediaStatusChanged(QMediaPlayer::MediaStatus status)

現在のメディアのstatus が変更されたことを通知する。

注: mediaStatus プロパティに対するノーティファイアシグナル。

mediaStatus()も参照のこと

[slot] void QMediaPlayer::pause()

現在のソースの再生を一時停止する。

play() およびstop()も参照

[slot] void QMediaPlayer::play()

現在のソースの再生を開始または再開する。

pause() およびstop()も参照

qreal QMediaPlayer::playbackRate() const

現在の再生レートを返す。

注: playbackRateプロパティのゲッター関数です。

setPlaybackRate()も参照してください

[signal] void QMediaPlayer::playbackRateChanged(qreal rate)

playbackRaterate に変更されたことを示す。

注: プロパティplaybackRate に対する通知シグナル。

qint64 QMediaPlayer::position() const

再生中のメディア内の現在位置をms単位で返す。

メディアプレーヤーに有効なメディアファイルまたはストリームがない場合は0を返します。ライブ・ストリームの場合、再生中に利用可能なデータが増えると、継続時間は通常変更されます。

注: プロパティ position のゲッター関数です。

setPosition()も参照してください

[signal] void QMediaPlayer::positionChanged(qint64 position)

コンテンツの位置がposition に変更されたことをミリ秒単位で示す。

注: プロパティposition に対するノーティファイアシグナル。

[signal] void QMediaPlayer::seekableChanged(bool seekable)

プレイヤーオブジェクトのseekable ステータスが変更されたことを通知します。

注: seekable プロパティに対するノーティファイア・シグナル。

[slot] void QMediaPlayer::setSource(const QUrl &source)

現在のsource を設定する。

メディアをNULLQUrl に設定すると、プレーヤーは現在のメディアソースに関連するすべての情報を破棄し、そのメディアに関連するすべてのI/O操作を停止する。メディアを設定すると、再生が停止する。

注: この関数は、メディアの指定されたソースを記録した直後に戻る。メディアの読み込みが終了するのを待たず、エラーのチェックも行わない。メディアの読み込みが完了したときと、読み込み中にエラーが発生したときに通知されるmediaStatusChanged() とerror() のシグナルをリッスンする。

注: FFmpegメディアバックエンドで使用されるFFmpegは、セキュリティ上の理由からネストされたプロトコルの使用を制限しています。すべての入力が信頼されるように制御された環境では、QT_FFMPEG_PROTOCOL_WHITELIST 環境変数を使って、承認されたプロトコルのリストを上書きすることができます。この環境変数はQtのプライベートAPIであり、予告なしにパッチリリース間で変更される可能性があります。

注: source プロパティのセッター関数です。

source()も参照してください

[slot] void QMediaPlayer::setSourceDevice(QIODevice *device, const QUrl &sourceUrl = QUrl())

現在のソースdevice を設定する。

メディアデータはdevice から読み込まれる。sourceUrl は、メディアに関する追加情報、mimeタイプなどを解決するために提供することができる。device は開いていて読み取り可能でなければならない。

macOSの場合、device もシーク可能でなければならない。

注: この関数は、メディアの指定されたソースを記録した直後に戻る。メディアの読み込みが終わるまで待たず、エラーチェックも行わない。メディアのロードが完了したとき、およびロード中にエラーが発生したときに通知されるmediaStatusChanged() およびerror() シグナルをリッスンする。

sourceDevice()も参照のこと

void QMediaPlayer::setVideoSink(QVideoSink *sink)

動画データを取得するQVideoSink インスタンスにsink を設定する。

videoSink()も参照のこと

[signal] void QMediaPlayer::sourceChanged(const QUrl &media)

メディアソースがmedia に変更されたことを通知する。

注: プロパティsource に対する通知シグナル。

const QIODevice *QMediaPlayer::sourceDevice() const

メディア・データのストリーム・ソースを返す。

これは、setSource() にストリームが渡された場合にのみ有効である。

setSourceDevice() およびsetSource()も参照

[slot] void QMediaPlayer::stop()

再生を停止し、再生位置を最初に戻す。

play() およびpause()も参照

QVideoSink *QMediaPlayer::videoSink() const

QVideoSink インスタンスを返す。

setVideoSink()も参照

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