在Java中查找MP3文件的持续时间
好的,我已经尝试使用ID3标记来获取持续时间,并且还尝试使用JMF media player.getDuration() 该文件是VBR。JMF中是否有任何轻量级的库或东西可以用来解决这个问题在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
谢谢。我使用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工件可用吗?