【JAVA】关闭jaudiotagger的输出日志 / jaudiotagger获取MP3文件时间长度

jaudiotagger logging levels
jaudiotagger 使用的是JDK的标准 java.util.logging,
则在使用到 jaudiotagger 的类中,直接设置日志级别 OFF:

import java.util.logging.Level;
import java.util.logging.Logger;
// 放在使用到jaudiotagger的类里
Logger.getLogger(“org.jaudiotagger”).setLevel(Level.OFF);
    /**
     * 获取mp3文件时长
     * @param filePath 完整文件路径+文件名
     */
    public static int getMp3Duration(String filePath) {
    	Logger.getLogger(“org.jaudiotagger”).setLevel(Level.OFF);
    	
        int length = 0;
        try {
            MP3File mp3File = (MP3File) AudioFileIO.read(new File(filePath));
            MP3AudioHeader audioHeader = (MP3AudioHeader) mp3File.getAudioHeader();
//			length = audioHeader.getPreciseTrackLength();
            length = audioHeader.getTrackLength();  // 单位为秒
//			audioHeader.getBitRate();
//			audioHeader.getSampleRate();
//			audioHeader.getChannels();
//			audioHeader.getPreciseTrackLength();
            return length;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return length;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用QDir和QFileInfo类来遍历/home/audio目录下的所有音频文件,然后使用QMediaPlayer获取音频文件的时长并将其显示在列表中。 以下是一个示例代码,可以帮助您实现此功能: ```cpp #include <QApplication> #include <QDir> #include <QFileInfo> #include <QMediaPlayer> #include <QMediaMetaData> #include <QStandardItemModel> #include <QTableView> int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建一个标准项模型 QStandardItemModel model; model.setHorizontalHeaderLabels({"文件名", "时长"}); // 遍历/home/audio目录下的所有音频文件 QDir audioDir("/home/audio"); QStringList audioFilters; audioFilters << "*.mp3" << "*.wav" << "*.aac"; // 这里可以添加更多的音频格式 const auto audioFiles = audioDir.entryList(audioFilters, QDir::Files | QDir::Readable); for (const auto &audioFile : audioFiles) { QFileInfo fileInfo(audioDir, audioFile); // 使用QMediaPlayer获取音频文件的时长 QMediaPlayer mediaPlayer; mediaPlayer.setMedia(QUrl::fromLocalFile(fileInfo.absoluteFilePath())); mediaPlayer.metaDataChanged(); // 使QMediaPlayer类更新元数据 mediaPlayer.play(); // 播放音频以获取时长 const auto duration = mediaPlayer.duration(); mediaPlayer.stop(); // 将音频文件的信息添加到模型中 QList<QStandardItem*> items; items << new QStandardItem(audioFile); items << new QStandardItem(QTime(0, 0, 0).addMSecs(duration).toString("hh:mm:ss")); model.appendRow(items); } // 创建一个表格视图并设置模型 QTableView tableView; tableView.setModel(&model); tableView.resizeColumnsToContents(); tableView.show(); return a.exec(); } ``` 这段代码会在表格视图中显示/home/audio目录下所有音频文件的信息,包括文件名和时长。注意,这段代码只能获取文件的元数据,因此如果音频文件没有元数据,则无法正确显示时长。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值