dtkmultimedia
DTK Multimedia module
载入中...
搜索中...
未找到
dplayerbackend.h
浏览该文件的文档.
1// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DPLAYERBACKEND_H
6#define DPLAYERBACKEND_H
7
8#include <QVideoFrame>
9#include <QtGui>
10#include <dtkmultimedia.h>
11
12DMULTIMEDIA_BEGIN_NAMESPACE
13
14using SubtitleInfo = QMap<QString, QVariant>;
15using AudioInfo = QMap<QString, QVariant>;
16
18{
19 QList<SubtitleInfo> subs;
20 QList<AudioInfo> audios;
21};
22
23class DPlayerBackendPrivate;
24class DPlayerBackend : public QObject
25{
26 Q_OBJECT
27 Q_PROPERTY(qint64 duration READ duration)
28 Q_PROPERTY(qint64 elapsed READ elapsed NOTIFY elapsedChanged)
29 Q_PROPERTY(QSize videoSize READ videoSize NOTIFY videoSizeChanged)
30 Q_PROPERTY(bool paused READ paused)
31 Q_PROPERTY(PlayState state READ state NOTIFY stateChanged)
32 Q_DECLARE_PRIVATE(DPlayerBackend)
33
34public:
37 Stopped };
38 Q_ENUM(PlayState)
39
40 enum DebugLevel { Info,
42 Verbose };
43 Q_ENUM(DebugLevel)
44
45 enum SoundMode { Stereo,
47 Right };
48 Q_ENUM(SoundMode)
49
50 enum hwaccelMode { hwaccelAuto = 0,
52 hwaccelClose };
53 Q_ENUM(hwaccelMode)
54
55 DPlayerBackend(QObject *parent = nullptr);
56 virtual ~DPlayerBackend();
57
58 virtual void setPlayFile(const QUrl &url);
59 virtual void setDVDDevice(const QString &path);
60 virtual bool isPlayable() const = 0;
61 virtual qint64 duration() const;
62 virtual qint64 elapsed() const;
63 virtual QSize videoSize() const = 0;
64 virtual bool paused();
65 virtual PlayState state() const;
66 virtual void setState(PlayState state);
67 virtual const PlayingMovieInfo &playingMovieInfo() = 0;
68 virtual void setPlaySpeed(double times) = 0;
69 virtual void savePlaybackPosition() = 0;
70 virtual void updateSubStyle(const QString &font, int sz) = 0;
71 virtual void setSubCodepage(const QString &cp) = 0;
72 virtual QString subCodepage() = 0;
73 virtual void addSubSearchPath(const QString &path) = 0;
74 virtual void firstInit() = 0;
75 virtual bool loadSubtitle(const QFileInfo &fi) = 0;
76 virtual void toggleSubtitle() = 0;
77 virtual bool isSubVisible() = 0;
78 virtual void selectSubtitle(int id) = 0;
79 virtual void selectTrack(int id) = 0;
80 virtual void setSubDelay(double secs) = 0;
81 virtual double subDelay() const = 0;
82 virtual int aid() const = 0;
83 virtual int sid() const = 0;
84 virtual void changeSoundMode(SoundMode) = 0;
85 virtual int volume() const = 0;
86 virtual bool muted() const = 0;
87 virtual void setVideoAspect(double r) = 0;
88 virtual double videoAspect() const = 0;
89 virtual int videoRotation() const = 0;
90 virtual void setVideoRotation(int degree) = 0;
91 virtual QImage takeScreenshot() const = 0;
92 virtual void burstScreenshot() = 0;
93 virtual void stopBurstScreenshot() = 0;
94 virtual QVariant getProperty(const QString &) const = 0;
95 virtual void setProperty(const QString &, const QVariant &) = 0;
96 virtual void nextFrame() = 0;
97 virtual void previousFrame() = 0;
98 virtual void makeCurrent() = 0;
100 static void setDebugLevel(DebugLevel lvl);
102 QUrl urlFile() const;
103
104Q_SIGNALS:
105 void tracksChanged();
106 void elapsedChanged();
107 void videoSizeChanged();
108 void stateChanged();
109 void fileLoaded();
110 void muteChanged();
111 void volumeChanged();
112 void sidChanged();
113 void aidChanged();
114 void processFrame(QVideoFrame &frame);
115 void notifyScreenshot(const QImage &frame, qint64 time);
116 void mpvErrorLogsChanged(const QString prefix, const QString text);
117 void mpvWarningLogsChanged(const QString prefix, const QString text);
118 void urlpause(bool status);
119 void sigMediaError();
120
121public slots:
122 virtual void play() = 0;
123 virtual void pauseResume() = 0;
124 virtual void stop() = 0;
125 virtual void seekForward(int secs) = 0;
126 virtual void seekBackward(int secs) = 0;
127 virtual void seekAbsolute(int) = 0;
128 virtual void volumeUp() = 0;
129 virtual void volumeDown() = 0;
130 virtual void changeVolume(int val) = 0;
131 virtual void toggleMute() = 0;
132 virtual void setMute(bool bMute) = 0;
133 virtual void setWinID(const qint64 &winID);
134 qint64 winID() const;
135
136protected:
137 QScopedPointer<DPlayerBackendPrivate> d_ptr;
138};
139DMULTIMEDIA_END_NAMESPACE
140
141#endif /* ifndef DPLAYERBACKEND_H */
DPlayerBackend类提供播放功能的引擎类.
Definition dplayerbackend.h:25
virtual void volumeUp()=0
纯虚函数-音量上升.
virtual const PlayingMovieInfo & playingMovieInfo()=0
纯虚函数-获取当前播放媒体信息.
virtual double subDelay() const =0
纯虚函数-获取Sub字幕延迟显示时间.
virtual void selectTrack(int id)=0
纯虚函数-根据id选择音频轨道.
hwaccelMode
硬件加速
Definition dplayerbackend.h:50
@ hwaccelOpen
Definition dplayerbackend.h:51
virtual void toggleMute()=0
纯虚函数-执行静音与取消操作.
virtual void toggleSubtitle()=0
纯虚函数-设置是否显示Sub字幕.
virtual void setVideoRotation(int degree)=0
纯虚函数-设置顺时针旋转视频角度.
static void setDebugLevel(DebugLevel lvl)
静态函数-设置调试等级.
static DebugLevel debugLevel()
静态函数-获取调试等级.
virtual int volume() const =0
纯虚函数-获取媒体播放音量.
virtual void seekAbsolute(int)=0
纯虚函数-seek播放媒体.
virtual void nextFrame()=0
纯虚函数-媒体下一帧.
virtual void setSubDelay(double secs)=0
纯虚函数-设置Sub字幕延迟显示时间.
virtual double videoAspect() const =0
纯虚函数-获取媒体播放显示长宽比.
virtual void volumeDown()=0
纯虚函数-音量下降.
virtual void burstScreenshot()=0
纯虚函数-连拍截图,截图间隔时间为5秒.
virtual void setMute(bool bMute)=0
纯虚函数-设置静音与取消操作.
virtual void setProperty(const QString &, const QVariant &)=0
纯虚函数-设置播放属性.
virtual void changeSoundMode(SoundMode)=0
纯虚函数-改变声音播放模式.
virtual bool isSubVisible()=0
纯虚函数-Sub字幕是否显示.
virtual void seekBackward(int secs)=0
纯虚函数-向后seek播放媒体.
virtual void savePlaybackPosition()=0
纯虚函数-保存当前视频播放位置.
virtual PlayState state() const
虚函数-获取媒体分辨率.
virtual bool paused()
虚函数-获取播放是否被暂停.
virtual void setPlaySpeed(double times)=0
纯虚函数-设置媒体播放速度.
virtual void changeVolume(int val)=0
纯虚函数-音量改变.
DebugLevel
调试等级
Definition dplayerbackend.h:40
@ Debug
Definition dplayerbackend.h:41
virtual void pauseResume()=0
纯虚函数-暂停播放.
virtual qint64 duration() const
虚函数-获取媒体时长.
virtual void makeCurrent()=0
纯虚函数-指定绘制设备.
virtual void setVideoAspect(double r)=0
纯虚函数-设置媒体播放显示长宽比.
virtual void stop()=0
纯虚函数-停止播放.
virtual void addSubSearchPath(const QString &path)=0
纯虚函数-添加媒体Sub字幕路径.
virtual void setPlayFile(const QUrl &url)
虚函数-设置播放媒体流地址.
virtual void stopBurstScreenshot()=0
纯虚函数-停止连拍截图.
SoundMode
声音模式
Definition dplayerbackend.h:45
@ Left
Definition dplayerbackend.h:46
virtual int sid() const =0
纯虚函数-获取Sub字幕id.
qint64 winID() const
获取窗口wid.
virtual void selectSubtitle(int id)=0
纯虚函数-根据id选择加载媒体Sub字幕.
virtual void play()=0
纯虚函数-播放媒体.
virtual void setWinID(const qint64 &winID)
设置窗口wid.
virtual void previousFrame()=0
纯虚函数-媒体上一帧.
virtual qint64 elapsed() const
虚函数-获取媒体已播放时长.
virtual QImage takeScreenshot() const =0
纯虚函数-获取当前视频播放的截图.
virtual void changehwaccelMode(hwaccelMode hwaccelMode)=0
纯虚函数-改变硬件加速模式.
virtual bool loadSubtitle(const QFileInfo &fi)=0
纯虚函数-加载媒体Sub字幕标题.
virtual void firstInit()=0
纯虚函数-第一次打开播放器播放视频.
virtual void updateSubStyle(const QString &font, int sz)=0
纯虚函数-更新媒体播放文字显示样式.
virtual QString subCodepage()=0
纯虚函数-获取媒体Sub字幕编码页.
virtual void setSubCodepage(const QString &cp)=0
纯虚函数-设置媒体Sub字幕编码页.
virtual QVariant getProperty(const QString &) const =0
纯虚函数-根据参数获取播放属性.
virtual int videoRotation() const =0
纯虚函数-获取顺时针旋转视频角度.
virtual void seekForward(int secs)=0
纯虚函数-向前seek播放媒体.
PlayState
播放状态类型
Definition dplayerbackend.h:35
@ Paused
Definition dplayerbackend.h:36
@ Playing
Definition dplayerbackend.h:35
virtual int aid() const =0
纯虚函数-获取音轨id.
virtual bool muted() const =0
纯虚函数-获取媒体播放是否静音.
QUrl urlFile() const
获取播放媒体地址.
virtual bool isPlayable() const =0
纯虚函数-当前媒体是否能够播放.
virtual void setState(PlayState state)
虚函数-设置媒体播放状态.
virtual QSize videoSize() const =0
纯虚函数-获取媒体分辨率.
virtual void setDVDDevice(const QString &path)
虚函数-设置DVD地址.
Definition dplayerbackend.h:18