1744|1

156

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

【基于树莓派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

 

最新回复

用madplay实现MP3播放器效果还行   详情 回复 发表于 2022-10-25 08:41
点赞 关注
 
 

回复
举报

6850

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

用madplay实现MP3播放器效果还行

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表