【基于树莓派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();
- }
- }
-
播放器加载失败: 未检测到Flash Player,请到 安装
e105994a816ccee8dfa9f0d13f4af5ea
|