Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中查找MP3文件的持续时间_Java_Mp3 - Fatal编程技术网

在Java中查找MP3文件的持续时间

在Java中查找MP3文件的持续时间,java,mp3,Java,Mp3,好的,我已经尝试使用ID3标记来获取持续时间,并且还尝试使用JMF media player.getDuration() 该文件是VBR。JMF中是否有任何轻量级的库或东西可以用来解决这个问题 谢谢。我使用Jaudiotager来实现这一点。下面的代码将获得MP3曲目的持续时间 int duration = 0; try { AudioFile audioFile = AudioFileIO.read(new File("file.mp3")); duration = audioFil

好的,我已经尝试使用ID3标记来获取持续时间,并且还尝试使用JMF media player.getDuration()

该文件是VBR。JMF中是否有任何轻量级的库或东西可以用来解决这个问题


谢谢。

我使用Jaudiotager来实现这一点。下面的代码将获得MP3曲目的持续时间

int duration = 0;

try {
  AudioFile audioFile = AudioFileIO.read(new File("file.mp3"));
  duration = audioFile.getAudioHeader().getTrackLength();

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

}

您也可以将audioFile.getAudioHeader()强制转换为MP3AudioHeader,并使用getPreciseTrackLength()方法获得更精确的持续时间。但是,这(我相信)只适用于MP3文件,而不适用于其他格式(如WAV文件)。

我使用Jaudiotager来实现这一点。下面的代码将获得MP3曲目的持续时间

int duration = 0;

try {
  AudioFile audioFile = AudioFileIO.read(new File("file.mp3"));
  duration = audioFile.getAudioHeader().getTrackLength();

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

}
您也可以将audioFile.getAudioHeader()强制转换为MP3AudioHeader,并使用getPreciseTrackLength()方法获得更精确的持续时间。但是,这(我相信)只适用于MP3文件,而不适用于其他格式(如WAV文件)。

我使用此代码:

File f = new File("path/mp3");
    MediaLocator ml = null;
    Player p = null;
    try {
        ml = new MediaLocator(f.toURL());

        p = Manager.createPlayer(ml);
        p.start();
        while (true) {
            Thread.sleep(1000);
            System.out.println("Media Time :: "+p.getMediaTime().getSeconds());
            System.out.println("Duration :: "+p.getDuration().getSeconds());
            if(p.getMediaTime().getSeconds() == p.getDuration().getSeconds())
                break;
        }
        p.stop();
        p.deallocate();
        p.close();
    } catch (NoPlayerException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
祝你好运。

我使用以下代码:

File f = new File("path/mp3");
    MediaLocator ml = null;
    Player p = null;
    try {
        ml = new MediaLocator(f.toURL());

        p = Manager.createPlayer(ml);
        p.start();
        while (true) {
            Thread.sleep(1000);
            System.out.println("Media Time :: "+p.getMediaTime().getSeconds());
            System.out.println("Duration :: "+p.getDuration().getSeconds());
            if(p.getMediaTime().getSeconds() == p.getDuration().getSeconds())
                break;
        }
        p.stop();
        p.deallocate();
        p.close();
    } catch (NoPlayerException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

祝你好运。

难道你不能从流中获取AudioFormat对象,然后采样率和文件大小的组合应该给你持续时间吗?难道你不能从流中获取AudioFormat对象,然后采样率和文件大小的组合应该给你持续时间吗?p.S!AudioHeader(由audioFile.getAudioHeader()返回)还将提供MP3文件的比特率以及许多其他属性。谢谢你,伙计如果你们使用gradle,只需使用这个实现组:“org”,名称:“jaudiotager”,版本:“2.0.3”P.S!AudioHeader(由audioFile.getAudioHeader()返回)还将提供MP3文件的比特率以及许多其他属性。谢谢你,伙计如果你们使用gradle,只要使用这个实现组:'org',名称:'jaudiotagger',版本:'2.0.3',当我点击指向库的链接时,它给出了库的描述,但是当我点击下载时,所描述的库实际上在下载页面上不可用。这个库是否有maven工件可用?当我单击指向库的链接时,它给出了库的描述,但是当我单击下载时,所描述的库实际上在下载页面上不可用。这个库有maven工件可用吗?