connected vlc to play audio
This commit is contained in:
parent
20094b0cf2
commit
71f7652a8a
4 changed files with 44 additions and 19 deletions
|
|
@ -2,19 +2,20 @@
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <models/MusicModel.h>
|
#include <models/MusicModel.h>
|
||||||
#include <VLCQtCore/Audio.h>
|
#include <VLCQtCore/MediaPlayer.h>
|
||||||
|
|
||||||
MusicController::MusicController(QObject *parent) : QObject(parent)
|
MusicController::MusicController(QObject *parent) : QObject(parent)
|
||||||
{
|
{
|
||||||
mVlc = new VlcInstance(VlcCommon::args(), this);
|
mVlc = new VlcInstance(VlcCommon::args(), this);
|
||||||
mModel = new MusicModel(mVlc, this);
|
mModel = new MusicModel(mVlc, this);
|
||||||
mPlayer = new VlcMediaPlayer(mVlc);
|
mPlayer = new VlcMediaListPlayer(mVlc);
|
||||||
|
|
||||||
connect(mPlayer, &VlcMediaPlayer::error, [this](){
|
|
||||||
qDebug() << "playerError";
|
|
||||||
});
|
|
||||||
|
|
||||||
connect(mModel, &MusicModel::navigateTo, this, &MusicController::navigateTo);
|
connect(mModel, &MusicModel::navigateTo, this, &MusicController::navigateTo);
|
||||||
|
connect(mModel, &MusicModel::play, mPlayer, &VlcMediaListPlayer::play);
|
||||||
|
connect(mModel, &MusicModel::pause, mPlayer->mediaPlayer(), &VlcMediaPlayer::pause);
|
||||||
|
connect(mModel, &MusicModel::navigateTo, [this](NavigationItemModel*){
|
||||||
|
if(mModel->isPlaying()) mModel->playPause();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
MusicController::~MusicController()
|
MusicController::~MusicController()
|
||||||
|
|
@ -25,7 +26,8 @@ MusicController::~MusicController()
|
||||||
void MusicController::initPlayer(NavigationItemModel *item)
|
void MusicController::initPlayer(NavigationItemModel *item)
|
||||||
{
|
{
|
||||||
mModel->init(item);
|
mModel->init(item);
|
||||||
mPlayer->open(mModel->getMedia());
|
mPlayer->stop();
|
||||||
|
mPlayer->setMediaList(mModel->getMedia());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MusicController::setContext(QQmlContext *context)
|
void MusicController::setContext(QQmlContext *context)
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#include <VLCQtCore/Common.h>
|
#include <VLCQtCore/Common.h>
|
||||||
#include <VLCQtCore/Instance.h>
|
#include <VLCQtCore/Instance.h>
|
||||||
#include <VLCQtCore/MediaPlayer.h>
|
#include <VLCQtCore/MediaListPlayer.h>
|
||||||
|
|
||||||
class MusicModel;
|
class MusicModel;
|
||||||
|
|
||||||
|
|
@ -34,7 +34,7 @@ private:
|
||||||
MusicModel* mModel;
|
MusicModel* mModel;
|
||||||
|
|
||||||
VlcInstance* mVlc;
|
VlcInstance* mVlc;
|
||||||
VlcMediaPlayer* mPlayer;
|
VlcMediaListPlayer* mPlayer;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MUSICCONTROLLER_H
|
#endif // MUSICCONTROLLER_H
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,18 @@
|
||||||
#include "MusicModel.h"
|
#include "MusicModel.h"
|
||||||
|
#include <QDir>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <VLCQtCore/Media.h>
|
||||||
|
|
||||||
MusicModel::MusicModel(VlcInstance* instance, QObject *parent) : QObject(parent),
|
MusicModel::MusicModel(VlcInstance* instance, QObject *parent) : QObject(parent),
|
||||||
mVlc(instance)
|
mVlc(instance)//, mMedia(new VlcMediaList(instance))
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MusicModel::~MusicModel()
|
MusicModel::~MusicModel()
|
||||||
{
|
{
|
||||||
if(mMedia)
|
//if(mMedia)
|
||||||
mMedia->deleteLater();
|
// mMedia->deleteLater();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MusicModel::init(NavigationItemModel *item)
|
void MusicModel::init(NavigationItemModel *item)
|
||||||
|
|
@ -17,9 +20,23 @@ void MusicModel::init(NavigationItemModel *item)
|
||||||
mCurrentItem = item;
|
mCurrentItem = item;
|
||||||
emit currentItemChanged();
|
emit currentItemChanged();
|
||||||
|
|
||||||
if(mMedia)
|
/*for(int i = 0; i < mMedia->count(); i++){
|
||||||
delete mMedia;
|
mMedia->removeMedia(i);
|
||||||
mMedia = new VlcMedia(mCurrentItem->getPath()+"/Pink Panther.mp3", true, mVlc);
|
}
|
||||||
|
qDebug() << mMedia->count();
|
||||||
|
*/
|
||||||
|
if(mMedia) delete mMedia;
|
||||||
|
mMedia = new VlcMediaList(mVlc);
|
||||||
|
|
||||||
|
auto dir = QDir(mCurrentItem->getPath());
|
||||||
|
if(!dir.exists()) return;
|
||||||
|
|
||||||
|
auto fileNames = dir.entryList(QDir::Files);
|
||||||
|
for(auto file:fileNames){
|
||||||
|
if(file.endsWith(".flac") || file.endsWith(".mp3")){
|
||||||
|
mMedia->addMedia(new VlcMedia(dir.filePath(file), true, mVlc));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MusicModel::navigateBack()
|
void MusicModel::navigateBack()
|
||||||
|
|
@ -30,6 +47,10 @@ void MusicModel::navigateBack()
|
||||||
void MusicModel::playPause()
|
void MusicModel::playPause()
|
||||||
{
|
{
|
||||||
mIsPlaying = !mIsPlaying;
|
mIsPlaying = !mIsPlaying;
|
||||||
|
if(mIsPlaying)
|
||||||
|
emit play();
|
||||||
|
else
|
||||||
|
emit pause();
|
||||||
}
|
}
|
||||||
|
|
||||||
NavigationItemModel *MusicModel::getCurrentItem()
|
NavigationItemModel *MusicModel::getCurrentItem()
|
||||||
|
|
@ -37,7 +58,7 @@ NavigationItemModel *MusicModel::getCurrentItem()
|
||||||
return mCurrentItem;
|
return mCurrentItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
VlcMedia *MusicModel::getMedia()
|
VlcMediaList *MusicModel::getMedia()
|
||||||
{
|
{
|
||||||
return mMedia;
|
return mMedia;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
#include <models/NavigationItemModel.h>
|
#include <models/NavigationItemModel.h>
|
||||||
#include <VLCQtCore/Media.h>
|
#include <VLCQtCore/MediaList.h>
|
||||||
|
|
||||||
class MusicModel : public QObject
|
class MusicModel : public QObject
|
||||||
{
|
{
|
||||||
|
|
@ -15,6 +15,8 @@ class MusicModel : public QObject
|
||||||
signals:
|
signals:
|
||||||
void navigateTo(NavigationItemModel *item);
|
void navigateTo(NavigationItemModel *item);
|
||||||
void currentItemChanged();
|
void currentItemChanged();
|
||||||
|
void play();
|
||||||
|
void pause();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MusicModel(VlcInstance* instance, QObject *parent = Q_NULLPTR);
|
MusicModel(VlcInstance* instance, QObject *parent = Q_NULLPTR);
|
||||||
|
|
@ -27,14 +29,14 @@ public:
|
||||||
|
|
||||||
NavigationItemModel *getCurrentItem();
|
NavigationItemModel *getCurrentItem();
|
||||||
|
|
||||||
VlcMedia *getMedia();
|
VlcMediaList *getMedia();
|
||||||
|
|
||||||
bool isPlaying();
|
bool isPlaying();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool mIsPlaying = false;
|
bool mIsPlaying = false;
|
||||||
NavigationItemModel* mCurrentItem = Q_NULLPTR;
|
NavigationItemModel* mCurrentItem = Q_NULLPTR;
|
||||||
VlcMedia* mMedia = Q_NULLPTR;
|
VlcMediaList* mMedia = Q_NULLPTR;
|
||||||
VlcInstance* mVlc;
|
VlcInstance* mVlc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue