QMediaPlayer Class

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

Header: #include <QMediaPlayer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
In QML: MediaPlayer
Inherits: 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()
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はビデオのレンダリングに使用できます。

QVideoWidgetも参照

メンバ タイプ ドキュメント

enum QMediaPlayer::Error

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

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

enum QMediaPlayer::Loops

loops プロパティには、いくつかの定義済み定数があります。

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

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)

Notifier シグナル:

[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)

Notifier signal:

void audioBufferOutputChanged()

audioOutput : QAudioOutput*

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

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

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

アクセス機能:

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

Notifierシグナル:

void audioOutputChanged()

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

メディア内の利用可能なオーディオトラックのセットをリストアップする。

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

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

アクセス関数:

QList<QMediaMetaData> audioTracks() const

Notifierシグナル:

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

Notifier シグナル:

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)

Notifier シグナル:

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

Notifier シグナル:

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)

playbackState およびPlayingState参照して ください。

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

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

void tracksChanged()

メンバ関数ドキュメント

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

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

[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

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

:プロパティ error に対するゲッター関数。

[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

メディアプレーヤーがこのプラットフォームでサポートされていれば真を返す。

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 を設定します。

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

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

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

sourceDevice()も参照

void QMediaPlayer::setVideoSink(QVideoSink *sink)

動画データを取得するために、sinkQVideoSink インスタンスに設定する。

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()も参照して ください。

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