检查java

时间:2015-11-09 13:21:08

标签: java jfilechooser filefilter

我制作了一个FileChooser程序来获取.wav文件的文件路径,但是现在我想添加另一个条件。我只想获取最多5分钟的wav文件的文件路径。我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

您可以通过以MB为单位知道文件大小然后知道文件的比特率来实现。关注这个MP3示例:

MP3 Filesize: 3.89MBytes
Bitrate: 128Kbits

将Mbytes转换为Kbits:

3.89Mbytes * 1024 = 3983Kbytes
3989Kbytes * 8 = 31866Kbits

将Kbits转换为Length:

31866Kbits / 128Kbits per second = 249 seconds
249 seconds / 60 seconds = 4.19 Minutes

请注意,它仍然不能准确表示持续时间,您必须考虑计算中的一些差异。

答案 1 :(得分:0)

如果您使用的是JAudioTagger ,则只需按秒即可获得准确的持续时间,如下所示。

File target = new File("E:\\sample.wav");
AudioFile af = AudioFileIO.read(target);
AudioHeader ah = af.getAudioHeader();
System.out.println( ah.getTrackLength());

这是一个可以正常工作的示例代码

import org.jaudiotagger.audio.AudioFile;
import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.audio.AudioHeader;

import java.io.File;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;


/**
 * Created by RAGINROSE on 9/20/2019.
 */

public class AudioTest {
    public static void main(String[] args) {

            try {

                SimpleDateFormat timeInFormat = new SimpleDateFormat("ss", Locale.UK);
                SimpleDateFormat timeOutFormat = new SimpleDateFormat("mm:ss", Locale.UK);
                SimpleDateFormat timeOutOverAnHourFormat = new SimpleDateFormat("kk:mm:ss", Locale.UK);
                String duratin;

                File target = new File("E:\\sample.wav");
                AudioFile f = AudioFileIO.read(target);
                AudioHeader ah = f.getAudioHeader();

                long trackLength = (long)ah.getTrackLength();

                Date timeIn;
                synchronized(timeInFormat) {
                    timeIn = timeInFormat.parse(String.valueOf(trackLength));
                }
                if(trackLength < 3600L) {
                    synchronized(timeOutFormat) {
                        duratin =  timeOutFormat.format(timeIn);
                    }
                } else {
                    synchronized(timeOutOverAnHourFormat) {
                        duratin = timeOutOverAnHourFormat.format(timeIn);
                    }
                }

                System.out.println("Duration in Integer : " + trackLength);
                System.out.println("Duration in String : " +duratin);

            } catch (Exception e) {
                e.printStackTrace();
            }


    }
}

别忘了添加依赖项

<dependency>
    <groupId>net.jthink</groupId>
    <artifactId>jaudiotagger</artifactId>
    <version>2.2.3</version>
</dependency>

支持的格式是

ogg,mp3,flac,mp4,m4a,m4p,wma,wav,ra,rm,m4b和aif

希望这对某人有帮助。