dtkmultimedia
DTK Multimedia module
载入中...
搜索中...
未找到
dplatformmediaplayer.h
浏览该文件的文档.
1// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DPLATFFORMMEDIAPLAYER_H
6#define DPLATFFORMMEDIAPLAYER_H
7
8#include "dmediametadata.h"
9#include <QtMultimedia/qmediaplayer.h>
10#include <QtMultimedia/qmediatimerange.h>
11#include <dtkmultimedia.h>
12
13DMULTIMEDIA_BEGIN_NAMESPACE
14
15class QMediaStreamsControl;
16class QPlatformAudioOutput;
18{
19};
20
21class DPlatformMediaPlayerPrivate;
22class Q_MULTIMEDIA_EXPORT DPlatformMediaPlayer : public QObject
23{
24 Q_OBJECT
25 Q_DECLARE_PRIVATE(DPlatformMediaPlayer)
26
27public:
28 virtual ~DPlatformMediaPlayer();
29#if BUILD_Qt6
30 virtual QMediaPlayer::PlaybackState playbackState() const;
31#else
32 virtual QMediaPlayer::State state() const;
33#endif
34 virtual QMediaPlayer::MediaStatus mediaStatus() const;
35 virtual qint64 duration() const = 0;
36 virtual qint64 position() const = 0;
37 virtual void setPosition(qint64 position) = 0;
38 virtual float bufferProgress() const = 0;
39 virtual bool isAudioAvailable() const;
40 virtual bool isVideoAvailable() const;
41 virtual bool isSeekable() const;
42 virtual QMediaTimeRange availablePlaybackRanges() const = 0;
43 virtual qreal playbackRate() const = 0;
44 virtual void setPlaybackRate(qreal rate) = 0;
45 virtual QUrl media() const = 0;
46 virtual const QIODevice *mediaStream() const = 0;
47 virtual void setMedia(const QUrl &media, QIODevice *stream) = 0;
48 virtual void setVolume(float volume) = 0;
49 virtual void setMuted(bool muted) = 0;
50 virtual void play() = 0;
51 virtual void pause() = 0;
52 virtual void stop() = 0;
53 virtual bool streamPlaybackSupported() const;
54 virtual void setAudioOutput(QPlatformAudioOutput *);
55 virtual DMediaMetaData metaData() const;
56 virtual void setVideoSink(DVideoSink *) = 0;
57 enum TrackType { VideoStream,
60 NTrackTypes };
61 virtual int trackCount(TrackType);
63 virtual int activeTrack(TrackType);
64 virtual void setActiveTrack(TrackType, int);
65 void durationChanged(qint64 duration);
66 void positionChanged(qint64 position);
67 void audioAvailableChanged(bool audioAvailable);
68 void videoAvailableChanged(bool videoAvailable);
69 void seekableChanged(bool seekable);
70 void volumeChanged(int volume);
71 void mutedChanged(bool muted);
72 void playbackRateChanged(qreal rate);
73 void bufferProgressChanged(float progress);
77#if BUILD_Qt6
78 void playbackStateChanged(QMediaPlayer::PlaybackState newState);
79#else
80 void stateChanged(QMediaPlayer::State newState);
81#endif
82 void mediaStatusChanged(QMediaPlayer::MediaStatus status);
83 void error(int error, const QString &errorString);
85 bool doLoop();
86 int loops();
87 void setLoops(int loops);
88
89protected:
90 explicit DPlatformMediaPlayer(QMediaPlayer *parent = nullptr);
91
92protected:
93 QScopedPointer<DPlatformMediaPlayerPrivate> d_ptr;
94};
95
96DMULTIMEDIA_END_NAMESPACE
97
98#endif //
Definition dmediametadata.h:16
DPlatformMediaPlayer类提供播放界面操作接口类.
Definition dplatformmediaplayer.h:23
virtual QMediaPlayer::State state() const
虚函数-获取媒体播放状态.
void seekableChanged(bool seekable)
媒体是否可seek改变.
TrackType
轨道类型
Definition dplatformmediaplayer.h:57
@ SubtitleStream
Definition dplatformmediaplayer.h:59
@ AudioStream
Definition dplatformmediaplayer.h:58
virtual void play()=0
纯虚函数-播放媒体.
virtual void setMuted(bool muted)=0
纯虚函数-设置媒体播放是否静音.
virtual bool isAudioAvailable() const
虚函数-获取音频是否可用.
virtual qint64 position() const =0
纯虚函数-获取媒体已播放时长.
virtual const QIODevice * mediaStream() const =0
纯虚函数-获取媒体对应设备.
virtual void setMedia(const QUrl &media, QIODevice *stream)=0
纯虚函数-设置媒体对应设备与地址.
virtual void stop()=0
纯虚函数-停止媒体.
void activeTracksChanged()
媒体激活轨道数改变.
void tracksChanged()
媒体轨道数改变.
void playbackRateChanged(qreal rate)
媒体静音状态改变.
bool doLoop()
执行循环模式.
virtual QMediaPlayer::MediaStatus mediaStatus() const
虚函数-获取媒体加载状态.
virtual void setPlaybackRate(qreal rate)=0
纯虚函数-设置媒体播放速度.
virtual QUrl media() const =0
纯虚函数-获取媒体url地址.
void stateChanged(QMediaPlayer::State newState)
媒体播放状态改变.
virtual bool isSeekable() const
虚函数-获取媒体是否可seek.
virtual QMediaTimeRange availablePlaybackRanges() const =0
纯虚函数-获取媒体播放范围是否可用.
void positionChanged(qint64 position)
媒体播放播放位置改变.
void durationChanged(qint64 duration)
媒体时长改变.
virtual DMediaMetaData metaData() const
虚函数-获取媒体数据格式.
virtual int activeTrack(TrackType)
虚函数-媒体通过轨道类型获取激活的轨道数量.
virtual void setVideoSink(DVideoSink *)=0
纯虚函数-设置视频链路.
virtual void pause()=0
纯虚函数-暂停媒体.
void mutedChanged(bool muted)
媒体静音状态改变.
void volumeChanged(int volume)
媒体音量改变.
void metaDataChanged()
媒体数据改变.
virtual void setPosition(qint64 position)=0
纯虚函数-设置媒体播放位置.
virtual qint64 duration() const =0
纯虚函数-获取媒体时长.
virtual float bufferProgress() const =0
纯虚函数-设置媒体缓冲进度.
virtual void setAudioOutput(QPlatformAudioOutput *)
虚函数-设置音频输出平台.
void error(int error, const QString &errorString)
获取媒体错误.
void bufferProgressChanged(float progress)
媒体静音状态改变.
virtual bool isVideoAvailable() const
虚函数-获取视频是否可用.
void resetCurrentLoop()
复位循环模式.
void mediaStatusChanged(QMediaPlayer::MediaStatus status)
媒体加载状态改变.
virtual int trackCount(TrackType)
虚函数-媒体通过轨道类型获取轨道数量.
void videoAvailableChanged(bool videoAvailable)
视频是否可用改变.
void audioAvailableChanged(bool audioAvailable)
音频是否可用改变.
void setLoops(int loops)
设置循环模式.
virtual void setActiveTrack(TrackType, int)
虚函数-媒体激活轨道通过轨道类型与轨道id.
virtual void setVolume(float volume)=0
纯虚函数-设置媒体播放音量.
virtual bool streamPlaybackSupported() const
虚函数-获取是否支持流媒体播放.
int loops()
获取循环模式.
virtual qreal playbackRate() const =0
纯虚函数-获取媒体播放速度.
virtual DMediaMetaData trackMetaData(TrackType, int)
虚函数-媒体通过轨道类型与轨道id.
Definition dplatformmediaplayer.h:18