`
gary0416
  • 浏览: 334702 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java解析mp3工具

阅读更多

需要的jar包为jid3lib.jar,sf上的http://javamusictag.sourceforge.net/download.htm不支持中文,附件源码中的为修改版。

 

MP3Util.java

 

package com.gary.util;

import java.io.IOException;

import org.farng.mp3.MP3File;
import org.farng.mp3.TagException;
import org.farng.mp3.id3.AbstractID3v2;
import org.farng.mp3.id3.ID3v1;
import org.farng.mp3.lyrics3.AbstractLyrics3;

/**
 * MP3工具
 * 
 * supports:
 * ID3 v1 & v1.1
 * Lyrics3 v1 & v2
 * ID3 v2.2 & v2.3 & v2.4 tags
 * MP3 Frame Headers
 * 
 * @author gary
 *
 */
public class MP3Util {

	public static MP3Info getMP3Info(String path) throws IOException, TagException{
		MP3File file = new MP3File(path);
		AbstractID3v2 id3v2 = file.getID3v2Tag();
		ID3v1 id3v1 = file.getID3v1Tag();
		AbstractLyrics3 lyrics = file.getLyrics3Tag();
		if(id3v2 != null){
			return new MP3Info(id3v2.getLeadArtist(), id3v2.getSongTitle(), 
					id3v2.getAlbumTitle(), id3v2.getTrackNumberOnAlbum(), 
					id3v2.getYearReleased(), lyrics == null ? null : lyrics.getSongLyric());
		}else if(id3v1 != null){
			return new MP3Info(id3v1.getLeadArtist(), id3v1.getSongTitle(), 
					id3v1.getAlbumTitle(), id3v1.getTrackNumberOnAlbum(), 
					id3v1.getYearReleased(), lyrics == null ? null : lyrics.getSongLyric());
		}else{
			return null;
		}
	}
}

 MP3Info.java

 

package com.gary.util;
/**
 * MP3信息
 * @author gary
 *
 */
public class MP3Info {

	private String artist;
	private String songTitle;
	private String albumTitle;
	private String trackNumberOnAlbum;
	private String yearReleased;
	private String songLyric;
	
	public MP3Info(String artist, String songTitle, String albumTitle, 
			String trackNumberOnAlbum, String yearReleased, String songLyric) {
		this.artist = artist;
		this.songTitle = songTitle;
		this.albumTitle = albumTitle;
		this.trackNumberOnAlbum = trackNumberOnAlbum;
		this.yearReleased = yearReleased;
		this.songLyric = songLyric;
	}
	
	public String getArtist() {
		return artist;
	}
	
	public void setArtist(String artist) {
		this.artist = artist;
	}
	
	public String getSongTitle() {
		return songTitle;
	}
	
	public void setSongTitle(String songTitle) {
		this.songTitle = songTitle;
	}
	
	public String getAlbumTitle() {
		return albumTitle;
	}

	public void setAlbumTitle(String albumTitle) {
		this.albumTitle = albumTitle;
	}
	
	public String getTrackNumberOnAlbum() {
		return trackNumberOnAlbum;
	}
	
	public void setTrackNumberOnAlbum(String trackNumberOnAlbum) {
		this.trackNumberOnAlbum = trackNumberOnAlbum;
	}
	
	public String getYearReleased() {
		return yearReleased;
	}
	
	public void setYearReleased(String yearReleased) {
		this.yearReleased = yearReleased;
	}
	
	public String getSongLyric() {
		return songLyric;
	}
	
	public void setSongLyric(String songLyric) {
		this.songLyric = songLyric;
	}
	
	public void printMP3Info(){
		System.out.println("歌手:" + artist);
		System.out.println("歌曲名:" + songTitle);
		System.out.println("专辑名:" + albumTitle);
		System.out.println("音轨:" + trackNumberOnAlbum);
		System.out.println("发行年份:" + yearReleased);
		System.out.println("歌词:" + songLyric);
	}
}

 test:@Test

	public void testGetMP3Info() {
		try {
			MP3Util.getMP3Info("song.mp3").printMP3Info();
		} catch (IOException e) {
			System.out.println("文件未找到");
		} catch (TagException e) {
			System.out.println("读取标签错误");
			e.printStackTrace();
		}
	}
  • mp3.rar (3.4 MB)
  • 下载次数: 392
3
0
分享到:
评论
6 楼 lvyuan1234 2018-02-05  
lvyuan1234 写道
lvyuan1234 写道
lvyuan1234 写道
怎么一直报找不到文件?

找到原因了,eclipse中应该把MP3文件和test类放在一起,而不应该放在项目的根目录下
我又添加了两个自己下的MP3文件,也不行,都是找不到文件,就你自带的那个可以用

有找到原因了,新下载的MP3文件我改名字了,虽然路径正确但是读不到,一定不要改文件的名字
5 楼 lvyuan1234 2018-02-05  
lvyuan1234 写道
lvyuan1234 写道
怎么一直报找不到文件?

找到原因了,eclipse中应该把MP3文件和test类放在一起,而不应该放在项目的根目录下
我又添加了两个自己下的MP3文件,也不行,都是找不到文件,就你自带的那个可以用
4 楼 lvyuan1234 2018-02-05  
lvyuan1234 写道
怎么一直报找不到文件?

找到原因了,eclipse中应该把MP3文件和test类放在一起,而不应该放在项目的根目录下
3 楼 lvyuan1234 2018-02-05  
怎么一直报找不到文件?
2 楼 ophone 2014-10-30  
 
1 楼 qianxueyiran 2011-10-12  
id3v1的不是乱码,但是v2的是乱码,LZ有修改V2的lib吗,或者有修改了V1的源码也可以,我想借鉴着修改下,mailliubin@gmail.com,多谢

相关推荐

    java解析mp3工具-jid3lib

    MP3 ID3解析库。支持 ID3v1, ID3v1.1, Lyrics3v1, Lyrics3v2, ID3v2.2, ID3v2.3, ID3v2.4。源码下载:http://javamusictag.sourceforge.net/ ,发现对支持utf-16编码是有些问题的。期望这个jar包对大家有所帮助。

    java 音频解析 代码

    综上所述,Java提供了丰富的工具来解析和处理音频文件,尽管JMF在某些情况下可能不够强大,但Java Sound API已经足够满足大多数开发需求。通过理解和运用这些API,开发者可以构建各种音频处理应用,如音乐播放器、...

    Java播放Mp3

    它提供了对MP3文件的基本解析和解码功能,使开发者能够将MP3流转换为音频数据,然后通过Java Sound API进行播放。 2. **Tritonus Share (tritonus_share.jar)**:这是Tritonus项目的一部分,一个开源的音频库,扩展...

    通过 Java 获取音频的波形图

    在本案例中,Java Sound API可能被用于读取和解析音频文件。它包括`javax.sound.sampled`包,提供对音频输入、输出、格式转换和混音的支持。 2. **音频输入/输出**:`AudioInputStream`类是Java Sound API的核心,...

    java播放mp3/ogg/ape/flac音乐

    本文将详细介绍如何使用Java实现这一功能,同时也会提及一些相关的开源工具和库。 首先,Java提供了内置的`javax.sound.sampled`包,它允许开发者处理和播放各种音频文件。这个包包括了`AudioSystem`类,它是音频I/...

    MP3文件格式分析资料及帧解析源代码(java)

    音频剪辑工具则需要解析MP3以实现精确的剪切和合并;而音频识别系统可能需要解码MP3文件来提取音频特征进行识别。 总的来说,MP3文件格式分析和JAVA源代码的结合,为开发者提供了一个学习和实践音频处理的宝贵资源...

    java base64的mp3转base64的pcm

    java base64的MP3转base64的pcm工具类,适用于微信小程序的语音转文字,因为小程序的录音为MP3,大部分语音读写的第三方只支持wav和pcm,不用生成文件

    JLoading Java版的Mp3下载工具.rar

    《Java实现MP3下载工具详解》 在信息技术日益发达的今天,网络音频资源的获取与分享变得越来越便捷。其中,Java作为一种广泛应用于网络服务、桌面应用以及移动开发的强大编程语言,也被用来创建各种实用工具,如MP3...

    java mp3 音频文件解码器

    Java MP3音频文件解码器是一种完全由Java语言编写的软件工具,它的主要功能是将MP3音频格式转换为其原始的、未压缩的PCM(脉冲编码调制)数据。这款解码器的独特之处在于它不依赖任何外部的JAR包,这意味着它可以...

    java播放mp3(不用jmf)

    1. **JLayer**: 这是一个用纯Java编写的MP3解码库,它提供了一个简单的API来解析和解码MP3流。`jlayer-1.0.jar`就是这个库的JAR文件,包含了解码MP3所需的所有类和方法。你可以通过创建一个`Decoder`对象,然后将MP3...

    Mp3批量下载器java写的

    4. **URL解析**:可能需要解析MP3文件的URL,这可以通过`java.net.URL`类完成。 5. **用户界面**:如果这是一个图形用户界面(GUI)应用,可能使用JavaFX或Swing库来设计交互界面。 6. **命令行参数**:对于批处理...

    JLoading Java版的Mp3下载工具

    【JLoading Java版的Mp3下载工具】是一个基于Java编程语言开发的实用工具,主要用于从网络上高效、稳定地下载MP3音乐文件。这个工具利用了Java的强大功能和跨平台特性,为用户提供了便捷的音乐资源获取途径。下面将...

    多线程实现java mp3

    在本项目中,开发者利用了jLayer库来解析和播放MP3音频文件。以下是对这个项目的详细解读: 1. **jLayer库**: jLayer是一个开源的Java库,专门用于解码MP3音频流。它实现了MPEG Audio Layer 1, 2和3的解码,允许...

    JLoading Java版的Mp3下载工具.zip

    《Java MP3下载工具——JLoading的深度解析》 在当今互联网时代,音频资源的获取变得日益便捷,其中,MP3作为最受欢迎的音频格式之一,其下载工具的重要性不言而喻。今天,我们将深入探讨一个名为"JLoading"的Java...

    Java编程实现获取mp3时长及播放mp3文件的方法

    总的来说,Java编程实现获取MP3时长和播放MP3文件涉及对音频文件的元数据解析和音频流的处理,借助jaudiotagger和javazoom.jl库可以方便地完成这些任务。在实际应用中,开发者应根据需求选择合适的工具和技术,确保...

    纯JAVA的MP3解码器jmp

    《纯JAVA的MP3解码器jmp:深入解析与应用》 MP3解码器是数字音频处理领域的重要工具,它能够将存储的MP3格式音频数据转化为人类可听的声音信号。在众多的MP3解码器中,“jmp123”以其独特的纯JAVA实现和出色的性能...

    关于JAVA的第三方工具包大集合.zip

    JLayer能够解析MP3帧,从而让Java应用程序可以播放MP3音频文件。这对于开发音乐播放器或与音频处理相关的项目非常有用。 3. **JMP (jmp123.jar)**: JMP可能是Java Music Player的简称,但由于具体信息不足,我们...

    JLoading Java版的Mp3下载工具.7z

    《Java版MP3下载工具——JLoading深度解析》 在当今互联网时代,音频资源的下载是用户日常需求的一部分,尤其对于音乐爱好者来说,拥有一款高效便捷的下载工具至关重要。"JLoading Java版的Mp3下载工具"就是这样一...

    万能ACV分解工具,可以解析一切ACV

    4. **提取内容**:解析完成后,用户可以选择将ACV文件内的资源保存为可读格式,如MP3音乐、PNG图片等。这些资源可以用于备份、编辑或二次创作。 5. **自定义设置**:高级的ACV分解工具可能还提供一些自定义选项,如...

    用java获取mp3文件播放时长和tag信息

    本篇文章将详细介绍如何利用Java实现这一功能,主要涉及的技术点包括Java I/O流、音频处理库以及元数据解析。 首先,我们需要一个第三方库来帮助我们处理MP3文件的元数据,这里推荐使用JaudioTagger...

Global site tag (gtag.js) - Google Analytics