-
Notifications
You must be signed in to change notification settings - Fork 2
/
qtavplayer.cpp
91 lines (83 loc) · 1.71 KB
/
qtavplayer.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "qtavplayer.h"
#include <QWidget>
Player::Player(QObject *parent)
: QObject(parent)
{
}
Player::~Player()
{
stop();
}
#ifdef USE_QTAV
void Player::play(QString path, QLayout *layout)
#else
void Player::play(QString, QLayout *)
#endif
{
#ifdef USE_QTAV
if (videoOutput != Q_NULLPTR || avPlayer != Q_NULLPTR) {
stop();
}
this->playPath = path;
videoOutput = new QtAV::VideoOutput(this);
avPlayer = new QtAV::AVPlayer(this);
avPlayer->setRenderer(videoOutput);
layout->addWidget(videoOutput->widget());
avPlayer->play(path);
#endif
}
void Player::stop()
{
#ifdef USE_QTAV
if (avPlayer != Q_NULLPTR) {
avPlayer->stop();
avPlayer->deleteLater();
avPlayer = Q_NULLPTR;
}
if (videoOutput != Q_NULLPTR) {
removeVideoOutput();
videoOutput->deleteLater();
videoOutput = Q_NULLPTR;
}
#endif
}
#ifdef USE_QTAV
void Player::pause(bool pause)
#else
void Player::pause(bool)
#endif
{
#ifdef USE_QTAV
if (avPlayer != Q_NULLPTR) {
if (pause) {
avPlayer->pause();
}
else {
avPlayer->play();
}
}
#endif
}
//void Player::moveVideoOutput(QLayout *layout)
//{
// if (videoOutput != Q_NULLPTR) {
// stop();
// play(this->playPath);
// layout->addWidget(videoOutput->widget());
// }
//}
void Player::removeVideoOutput()
{
#ifdef USE_QTAV
if (videoOutput != Q_NULLPTR) {
QWidget *parent = (QWidget*)videoOutput->widget()->parent();
if (parent != Q_NULLPTR) {
parent->layout()->removeWidget(videoOutput->widget());
}
}
#endif
}
//QtAV::VideoOutput *Player::getVideoOutput()
//{
// return &videoOutput;
//}