Files
qyouvideo/player.h
2025-10-20 02:53:30 +02:00

61 lines
1.6 KiB
C++

#pragma once
#include <QtMultimedia>
#include <QtConcurrent/QtConcurrent>
#include <QDebug>
#include <QObject>
#include <QtQmlIntegration/qqmlintegration.h>
class Player : public QObject
{
Q_OBJECT
QML_SINGLETON
QML_ELEMENT
Q_PROPERTY(QString title MEMBER m_title NOTIFY titleChanged FINAL)
Q_PROPERTY(QString id MEMBER m_id NOTIFY idChanged FINAL)
Q_PROPERTY(float position MEMBER m_position WRITE setPosition NOTIFY positionChanged FINAL)
Q_PROPERTY(float buffered MEMBER m_buffered NOTIFY bufferedChanged FINAL)
Q_PROPERTY(bool loading MEMBER m_loading NOTIFY loadingChanged FINAL)
Q_PROPERTY(bool failed MEMBER m_failed NOTIFY failedChanged FINAL)
Q_PROPERTY(bool playing READ playing NOTIFY playingChanged FINAL)
Q_PROPERTY(float volume READ volume WRITE setVolume NOTIFY volumeChanged FINAL)
public:
Player(QObject *parent = nullptr);
~Player();
bool playing() const;
float volume() const;
void setPosition(float newPosition);
void setVolume(float newVolume);
public slots:
void loadVideo(QString id, QString extension, QString title, float position);
void unloadVideo();
void play();
void pause();
signals:
void titleChanged();
void idChanged();
void positionChanged();
void bufferedChanged();
void loadingChanged();
void failedChanged();
void playingChanged();
void volumeChanged();
private:
QMediaPlayer player;
QAudioOutput output;
\
QString m_title = "";
QString m_id = "";
float m_position = 0;
float m_buffered = 0;
bool m_loading = false;
bool m_failed = false;
};