【基于树莓派400的图像识别归类&运动检测&模拟信号处理系统第四帖】尝试做个MP3播...
[复制链接]
这个播放器呢原本是对音频做频谱信号分析用的,后面发现项目其实不一定用得上,于是乎就做了个小小的,简单的音乐播放器,用madplay实现,就当作是项目中的娱乐小插曲。MP3播放器非常简单,可以用ffmjpeg-streamer或者madplay实现:
然后在qt程序中也可以通过system()接口实现调用外部程序,再结合文件夹路径递归操作接口,就能做一个简单的MP3播放器:
static QStringList fileNames_temp , fileNames_norepeat;
void MainWindow::on_PB_MP3_SELECT_clicked()
{
QFileDialog *fileDialog = new QFileDialog(this);
fileDialog->setWindowTitle(QStringLiteral("Select mp3 file(s)"));
fileDialog->setDirectory("./");
fileDialog->setNameFilter(tr("File(*.mp3*)"));
fileDialog->setFileMode(QFileDialog::ExistingFiles);
fileDialog->setViewMode(QFileDialog::Detail);
QStringList fileNames;
if (fileDialog->exec())
{
fileNames = fileDialog->selectedFiles();
ui->LE_MP3->setText(fileNames[0]);
}
fileNames_temp += fileNames;
for(int i = 0; i < fileNames_temp.length(); i++)
{
if(!fileNames_norepeat.contains(fileNames_temp[i]))
{
fileNames_norepeat.append(fileNames_temp[i]);
}
}
fileNames_temp.clear();
fileNames_temp = fileNames_norepeat;
ui->listWidget->clear();
ui->listWidget->addItems(fileNames_norepeat);
delete fileDialog;
}
void MainWindow::on_PB_MP3_PLAY_clicked()
{
system("killall -KILL madplay &");
sleep(1);
QString qs1 = "madplay " + ui->LE_MP3->text() + " &";
system(qs1.toLatin1().data());
on_PB_MP3_PAUSE_clicked_1();
}
void MainWindow::on_PB_MP3_PAUSE_clicked_1()
{
system("killall -CONT madplay &");
ui->PB_MP3_PAUSE->setText("PAUSE");
disconnect(ui->PB_MP3_PAUSE,SIGNAL(clicked()),this,SLOT(on_PB_MP3_PAUSE_clicked_1()));
connect(ui->PB_MP3_PAUSE,SIGNAL(clicked()),this,SLOT(on_PB_MP3_PAUSE_clicked()));
}
void MainWindow::on_PB_MP3_PAUSE_clicked()
{
system("killall -STOP madplay &");
ui->PB_MP3_PAUSE->setText("CONT");
disconnect(ui->PB_MP3_PAUSE,SIGNAL(clicked()),this,SLOT(on_PB_MP3_PAUSE_clicked()));
connect(ui->PB_MP3_PAUSE,SIGNAL(clicked()),this,SLOT(on_PB_MP3_PAUSE_clicked_1()));
}
void MainWindow::on_listWidget_clicked(const QModelIndex &index)
{
ui->LE_MP3->setText(ui->listWidget->currentItem()->text());
}
void MainWindow::on_listWidget_doubleClicked(const QModelIndex &index)
{
ui->LE_MP3->setText(ui->listWidget->currentItem()->text());
on_PB_MP3_PLAY_clicked();
}
void MainWindow::on_PB_MP3_PREV_clicked()
{
if(ui->listWidget->currentItem() != nullptr)
{
int index = ui->listWidget->currentRow();
if(index > 0)
index --;
if(index < 0)
index = ui->listWidget->count() - 1;
ui->listWidget->setCurrentRow(index);
ui->LE_MP3->setText(ui->listWidget->currentItem()->text());
on_PB_MP3_PLAY_clicked();
}
}
void MainWindow::on_PB_MP3_NEXT_clicked()
{
if(ui->listWidget->currentItem() != nullptr)
{
int index = ui->listWidget->currentRow();
index ++;
if(index >= ui->listWidget->count())
index = 0;
ui->listWidget->setCurrentRow(index);
ui->LE_MP3->setText(ui->listWidget->currentItem()->text());
on_PB_MP3_PLAY_clicked();
}
}
e105994a816ccee8dfa9f0d13f4af5ea
|