PonyPlayer
Hurricane类 参考

播放器 QuickItem 组件,提供暴露给 QML 的接口。 更多...

#include <hurricane.hpp>

类 Hurricane 继承关系图:
Fireworks

Public 类型

enum  HurricaneState {
  CLOSING , LOADING , INVALID , PRE_PLAY ,
  PLAYING , PRE_PAUSE , PAUSED
}
 

Public 槽

Q_INVOKABLE void openFile (const QString &url, bool autoClose=true)
 
- Public 槽 继承自 Fireworks
void setVideoFrame (const VideoFrameRef &pic)
 
Q_INVOKABLE void setLUTFilter (const QString &path)
 

信号

void stateChanged ()
 
void openFileResult (PonyPlayer::OpenFileResultType result, QPrivateSignal)
 
void positionChangedBySeek ()
 
void audioOutputDeviceChanged ()
 
void backwardStatusChanged ()
 
void trackChanged ()
 
void currentOutputDeviceChanged ()
 
void pitchChanged ()
 
void speedChanged ()
 
void resourcesEnd ()
 
void signalPlayerInitializing (QPrivateSignal)
 
void signalStart (QPrivateSignal)
 
void signalPause (QPrivateSignal)
 
void signalClose (QPrivateSignal)
 
void signalOpenFile (const QString &path, QPrivateSignal)
 
void signalSeek (qreal pos, QPrivateSignal)
 
- 信号 继承自 Fireworks
void brightnessChanged ()
 
void contrastChanged ()
 
void saturationChanged ()
 
void frameSizeChanged ()
 
void keepFrameRateChanged ()
 

Public 成员函数

 Hurricane (QQuickItem *parent=nullptr)
 
virtual ~Hurricane () override
 
HurricaneState getState ()
 
int getTrack ()
 
double getSpeed ()
 
bool isBackward ()
 
QStringList getAudioDeviceList ()
 
Q_INVOKABLE void start ()
 
Q_INVOKABLE void pause ()
 
Q_INVOKABLE void close ()
 
Q_INVOKABLE void setVolume (qreal volume)
 
Q_INVOKABLE void setPitch (qreal pitch)
 
Q_INVOKABLE void setSpeed (qreal speed)
 
Q_INVOKABLE void setCurrentOutputDevice (QString deviceName)
 
Q_INVOKABLE QString getCurrentOutputDevice ()
 
Q_INVOKABLE qreal getAudioDuration ()
 
Q_INVOKABLE qreal getVideoDuration ()
 
Q_INVOKABLE qreal getPTS ()
 
Q_INVOKABLE void seek (qreal pos)
 
Q_INVOKABLE QStringList getTracks ()
 
Q_INVOKABLE void setTrack (int i)
 
Q_INVOKABLE void forward ()
 
Q_INVOKABLE void backward ()
 
Q_INVOKABLE void toggleBackward ()
 
Q_INVOKABLE bool hasVideo ()
 
Q_INVOKABLE qreal getPitch ()
 
- Public 成员函数 继承自 Fireworks
 Fireworks (QQuickItem *parent=nullptr)
 
 ~Fireworks () override
 
 PONY_GUARD_BY (MAIN) private
 
void setBrightness (GLfloat b)
 
GLfloat getContrast () const
 
void setContrast (GLfloat c)
 
GLfloat getSaturation () const
 
void setSaturation (GLfloat s)
 
int getHeight () const
 
int getWidth () const
 
double getFrameRate () const
 

属性

QML_ELEMENTqreal pitch
 
HurricaneState state = HurricaneState::INVALID
 
QStringList audioDeviceList
 
QStringList tracks
 
bool backwardStatus = false
 
int track = -1
 
QString currentOutputDevice
 
double speed = 1.0
 
- 属性 继承自 Fireworks
QML_ELEMENTbool keepFrameRate
 
int frameHeight
 
int frameWidth
 
double frameRate
 
GLfloat brightness
 
GLfloat contrast
 
GLfloat saturation
 
QString filterPrefix
 
QStringList filterJsons
 

额外继承的成员函数

- Protected 成员函数 继承自 Fireworks
QSGNode * updatePaintNode (QSGNode *node, UpdatePaintNodeData *data) override
 

详细描述

播放器 QuickItem 组件,提供暴露给 QML 的接口。

我们完全采用异步通信的思想,这里的大部分方法都会直接返回。我们只需要关注一些事件(信号)更新 UI 的状态即可。我们的部分方法仅在特定状态才能 使用,需要特别注意。例如:打开视频文件可以分为两个操作:stop(如果当前正在播放视频,需要先停止播放)和 openFile。也就是说,如果正在播放视 频,必须先调用 stop 确保停止播放后再调用 openFile,否则 openFile 请求会被忽略。因此,一种正确的做法是先判断 state 是否为 PLAYING (正在播放视频),如果不是,先调用 stop。由于我们的方法调用是异步的,所以其实我们不能保证方法返回后状态会马上发生改变。保险的做法需要关注 stateChanged 事件再进行下一步动作,这会大大增加编码的复杂度。幸运地,部分方法我们可以提供状态立刻发生变换的保证(见方法注释)。我们会在注 释中说明调用的条件和状态转换。

参见
HurricaneState
HurricanePlayer::stateChanged()

成员枚举类型说明

◆ HurricaneState

HurricanePlayer 组件的状态, 其中瞬时状态代表前端 HurricanePlayer 发起操作, 但并未同步到后端 VideoWorker. 由后端引起的状态改变不需要进入相应的瞬时状态. 如视频播放结束导致暂停的状态转换为: PLAYING -> PAUSED (中间不经过 PRE_PAUSED).

枚举值
CLOSING 

正在关闭当前文件, 这是一个瞬时状态

LOADING 

正在加载, 这是一个瞬时状态

INVALID 

文件无效

PRE_PLAY 

准备播放, 这是一个瞬时状态, 将会很快转为

HurricaneState::PLAYING
PLAYING 

正在播放

PRE_PAUSE 

请求暂停, 这是一个瞬时状态

PAUSED 

已暂停

构造及析构函数说明

◆ Hurricane()

Hurricane::Hurricane ( QQuickItem *  parent = nullptr)
inlineexplicit

◆ ~Hurricane()

virtual Hurricane::~Hurricane ( )
inlineoverridevirtual

成员函数说明

◆ audioOutputDeviceChanged

void Hurricane::audioOutputDeviceChanged ( )
signal

◆ backward()

Q_INVOKABLE void Hurricane::backward ( )
inline

◆ backwardStatusChanged

void Hurricane::backwardStatusChanged ( )
signal

◆ close()

Q_INVOKABLE void Hurricane::close ( )
inline

关闭当前播放的视频, 这会清空组件显示 需要保证调用时的状态为 PAUSED / PRE_PAUSE, 方法保证返回时的状态为 CLOSING 状态转移 PAUSED -> CLOSING -> INVALID

◆ currentOutputDeviceChanged

void Hurricane::currentOutputDeviceChanged ( )
signal

◆ forward()

Q_INVOKABLE void Hurricane::forward ( )
inline

◆ getAudioDeviceList()

QStringList Hurricane::getAudioDeviceList ( )
inline

◆ getAudioDuration()

Q_INVOKABLE qreal Hurricane::getAudioDuration ( )
inline

获取视频长度, 需要保证状态不是 INVALID

返回
长度(单位: 秒)

◆ getCurrentOutputDevice()

Q_INVOKABLE QString Hurricane::getCurrentOutputDevice ( )
inline

获取音频输出设备列表

◆ getPitch()

Q_INVOKABLE qreal Hurricane::getPitch ( )
inline

◆ getPTS()

Q_INVOKABLE qreal Hurricane::getPTS ( )
inline

获取当前视频播放进度, 需要保证状态不是 INVALID

返回
播放进度(单位: 秒)

◆ getSpeed()

double Hurricane::getSpeed ( )
inline

◆ getState()

HurricaneState Hurricane::getState ( )
inline

◆ getTrack()

int Hurricane::getTrack ( )
inline

◆ getTracks()

Q_INVOKABLE QStringList Hurricane::getTracks ( )
inline

◆ getVideoDuration()

Q_INVOKABLE qreal Hurricane::getVideoDuration ( )
inline

获取音频长度, 需要保证状态不是 INVALID

返回
长度(单位: 秒)

◆ hasVideo()

Q_INVOKABLE bool Hurricane::hasVideo ( )
inline

◆ isBackward()

bool Hurricane::isBackward ( )
inline

◆ openFile

Q_INVOKABLE void Hurricane::openFile ( const QString &  url,
bool  autoClose = true 
)
inlineslot

打开视频文件 需要保证调用时状态为 INVALID / CLOSING, 方法保证返回时状态为 LOADING 如果指定 autoClose, 则会自动调用 HurricanePlayer::close() 状态转移 INVALID -> LOADING -> PAUSED

参数
url文件路径
autoClose如果打开视频文件, 是否自动关闭

◆ openFileResult

void Hurricane::openFileResult ( PonyPlayer::OpenFileResultType  result,
QPrivateSignal   
)
signal

打开文件结果

参数
b是否成功

◆ pause()

Q_INVOKABLE void Hurricane::pause ( )
inline

暂停播放视频, 保证后端尽快停止视频播放进入空闲状态. 需要保证调用时状态为 PLAYING / PRE_PLAY, 方法保证返回时状态为 PRE_PAUSE 状态转移 PAUSED -> PRE_PAUSE -> PAUSED

◆ pitchChanged

void Hurricane::pitchChanged ( )
signal

◆ positionChangedBySeek

void Hurricane::positionChangedBySeek ( )
signal

视频播放进度由于手动调整发送改变

◆ resourcesEnd

void Hurricane::resourcesEnd ( )
signal

◆ seek()

Q_INVOKABLE void Hurricane::seek ( qreal  pos)
inline

改变视频播放的进度, 不保证马上生效, 请关注信号 需要保证当前状态为 PAUSE, PRE_PAUSE, PLAYING 或 PRE_PLAY

参数
pos播放进度(单位: 秒)
参见
HurricanePlayer::positionChangedBySeek

◆ setCurrentOutputDevice()

Q_INVOKABLE void Hurricane::setCurrentOutputDevice ( QString  deviceName)
inline

设置音频输出设备名称

参数
deviceName设备名称

◆ setPitch()

Q_INVOKABLE void Hurricane::setPitch ( qreal  pitch)
inline

设置音调

参数
pitch音调

◆ setSpeed()

Q_INVOKABLE void Hurricane::setSpeed ( qreal  speed)
inline

设置速度倍率, 要求倍率 > 0

参数
speed速度倍率

◆ setTrack()

Q_INVOKABLE void Hurricane::setTrack ( int  i)
inline

◆ setVolume()

Q_INVOKABLE void Hurricane::setVolume ( qreal  volume)
inline

设置音量大小, 音频的范围为[0, 1]

参数
volume音量大小

◆ signalClose

void Hurricane::signalClose ( QPrivateSignal  )
signal

◆ signalOpenFile

void Hurricane::signalOpenFile ( const QString &  path,
QPrivateSignal   
)
signal

◆ signalPause

void Hurricane::signalPause ( QPrivateSignal  )
signal

◆ signalPlayerInitializing

void Hurricane::signalPlayerInitializing ( QPrivateSignal  )
signal

◆ signalSeek

void Hurricane::signalSeek ( qreal  pos,
QPrivateSignal   
)
signal

◆ signalStart

void Hurricane::signalStart ( QPrivateSignal  )
signal

◆ speedChanged

void Hurricane::speedChanged ( )
signal

◆ start()

Q_INVOKABLE void Hurricane::start ( )
inline

开始播放视频 需要保证调用时状态为 PAUSED / PRE_PAUSE, 方法保证返回时状态为 PRE_PLAY 状态转移 PAUSED -> PRE_PLAY -> PLAYING

◆ stateChanged

void Hurricane::stateChanged ( )
signal

播放器状态发生改变. 我们不能保证瞬时状态会转移到相应的稳定状态,所以我们不应该检测瞬时状态决定下一步的动作. 例如: PRE_PAUSE 可以被 close 被打断, 直接转移到 INVALID 而永远不会转移到 PAUSED.

◆ toggleBackward()

Q_INVOKABLE void Hurricane::toggleBackward ( )
inline

◆ trackChanged

void Hurricane::trackChanged ( )
signal

属性说明

◆ audioDeviceList

QStringList Hurricane::audioDeviceList
read

◆ backwardStatus

bool Hurricane::backwardStatus = false
read

◆ currentOutputDevice

QString Hurricane::currentOutputDevice
readwrite

◆ pitch

QML_ELEMENTqreal Hurricane::pitch
readwrite

◆ speed

double Hurricane::speed = 1.0
readwrite

◆ state

HurricaneState Hurricane::state = HurricaneState::INVALID
read

◆ track

int Hurricane::track = -1
readwrite

◆ tracks

QStringList Hurricane::tracks
read

该类的文档由以下文件生成: