突然看到网上有人在用JavaScript来读取MP3中ID3信息。
详细请看!
我也在网上搜索了用Flex写的实现同样的功能的。
详细请看!
但是我比较熟悉Java.所以也在网上搜索到了用Java实现的读取MP3文件标签信息。代码如下:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class ReadMp3 {
private SongInfo info = null;
private RandomAccessFile ran = null;
private File file = null;
public ReadMp3() throws FileNotFoundException {
file = new File("simcoder.mp3");
ran = new RandomAccessFile(file, "r");
System.out.println("文件裝載完畢");
}
public static void main(String[] args) throws IOException {
ReadMp3 read = new ReadMp3();
byte[] buffer = new byte[128];
read.ran.seek(read.ran.length() - 128);
read.ran.read(buffer);
SongInfo info = new SongInfo(buffer);
System.out.println("name:" + info.getSongName() + " year:"
+ info.getYear() + " 歌手:" + info.getArtist() + " 專輯名:"
+ info.getAlbum() + " 備注:" + info.getComment());
}
}
public class SongInfo {
private final String TAG = "TAG"; // 文件头1-3
private String songName; // 歌曲名4-33
private String artist; // 歌手名34-63
private String album; // 专辑名61-93
private String year; // 年94-97
private String comment; // 备注98-125
private byte r1, r2, r3; // 三个保留位126,127,128
private boolean valid; // 是否合法
public transient String fileName; // 此歌曲对应的文件名,没有封装
public SongInfo(byte[] data) {
if (data.length != 128) {
throw new RuntimeException("数据长度不合法:" + data.length);
}
String tag = new String(data, 0, 3);
// 只有前三个字节是TAG才处理后面的字节
if (tag.equalsIgnoreCase("TAG")) {
valid = true;
songName = new String(data, 3, 30).trim();
artist = new String(data, 33, 30).trim();
album = new String(data, 63, 30).trim();
year = new String(data, 93, 4).trim();
comment = new String(data, 97, 28).trim();
r1 = data[125];
r2 = data[126];
r3 = data[127];
} else {
valid = false;
}
}
public SongInfo() {
}
/**
* 返回是否合法
*
* @return 是否
*/
public boolean isValid() {
return valid;
}
/**
* 得到此对象的128个字节的表示形式
*
* @return
*/
public byte[] getBytes() {
byte[] data = new byte[128];
System.arraycopy(TAG.getBytes(), 0, data, 0, 3);
byte[] temp = songName.getBytes();
System.arraycopy(temp, 0, data, 3, temp.length > 30 ? 30 : temp.length);
temp = artist.getBytes();
System
.arraycopy(temp, 0, data, 33, temp.length > 30 ? 30
: temp.length);
temp = album.getBytes();
System
.arraycopy(temp, 0, data, 63, temp.length > 30 ? 30
: temp.length);
temp = year.getBytes();
System.arraycopy(temp, 0, data, 93, temp.length > 4 ? 4 : temp.length);
temp = comment.getBytes();
System
.arraycopy(temp, 0, data, 97, temp.length > 28 ? 28
: temp.length);
data[125] = r1;
data[126] = r2;
data[127] = r3;
return data;
}
public String getArtist() {
return artist;
}
public void setArtist(String authorName) {
this.artist = authorName;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public byte getR1() {
return r1;
}
public void setR1(byte r1) {
this.r1 = r1;
}
public byte getR2() {
return r2;
}
public void setR2(byte r2) {
this.r2 = r2;
}
public byte getR3() {
return r3;
}
public void setR3(byte r3) {
this.r3 = r3;
}
public String getSongName() {
return songName;
}
public void setSongName(String songName) {
if (songName == null) {
throw new NullPointerException("歌名不能是null!");
}
valid = true;
this.songName = songName;
}
public String getAlbum() {
return album;
}
public void setAlbum(String specialName) {
this.album = specialName;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
}
分享到:
相关推荐
一个用于读取mp3文件并读取/操作ID3标签(ID3v1和ID3v2.2至ID3v2.4)的Java库。 有关使用此库的示例应用程序,请参阅包括一组简单的命令行工具,这些工具可以执行以下任务:打印mp3和ID3详细信息,使用ID3标签中的...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
目录递归,MP3标签
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
开源库,用于从.mp3文件中读取ID3版本1和2标签 首先,不要忘记添加由mozilla创建的通用字符检测器库。 从“依赖项”文件夹中获取 您可以访问执行此操作的标签 Mp3TagsFactory factory = new Mp3TagsFactory(); ...
在linux下面,此选项将被禁用:( 三,标签方面 1,现在完全支持ID3v1,ID3v2,APEv2,Vorbis标签的读取和写入,并可设置标签的读取和写入的编码.以免在读取标签的时候出现乱码的情况.程序的默认设置编码是GBK,如果是...
支持10波段均衡器. 支持ID3v1/v2、APE和Vorbis标签的读取和写入,支持设置标签编码,支持以标签重命名文件。 支持同步歌词滚动显示和拖动定位播放,并且支持在线歌词搜索功能。 支持多播放列表,支持多种...
文件格式规范的每个数据结构和标签的类的集合。 这些类提供了一个完全面向对象的 API 来编码和解码 Flash (.swf) 文件。 转换 SWF 支持最新发布的版本 - Flash 10。 该库还包含提供更高级别接口的类,支持从外部文件...
JMusicPlayerFX关于JMusicPlayerFX是一个简单的开源音频播放器...在Windows上将JNA实施到自定义窗口使用的库: :一个Java库,用于读取mp3文件和读取ID3标签。 :一个Java库,提供比Java运行时提供的更好的图像缩放选项
支持ID3v1/v2、APE和Vorbis标签的读取和写入,支持设置标签编码,支持以标签重命名文件。 支持同步歌词滚动显示和拖动定位播放,并且支持在线歌词搜索功能。 支持多播放列表,支持多种视觉效果. 真正永久免费并且...
这是一组类,能够从MP3文件中读取ID3 V1和V2标签并进行写入
YOYOPlayer是一个用JAVA编写的,跨平台的音乐播放软件.是一个集播放,歌词显示于一体的音频播放软件. YOYOPlayer的主要定位是Linux下的用户,因为Linux下几乎没有一款集成性高的音频播放软件,并且读取中文标签经常会...
支持读取和写入mp4,m4a和m4p(受保护)文件,包括多个图像和反向dns字段 完全支持Dsf,Aif和Wav格式的ID3标签 还支持旧式Wav Info标记 支持多页Ogg Vorbis评论 支持MP3 ID3v1,ID3v11,ID3v2.2,v2.3和v2.4是透明的...
- 每个标签显示的字符标识,并从ExportAsset或其他信息采取可选名称 两个面板editation - 在左边的面板中, editation右侧原来的预览 拖放SWF文件到主窗口打开文件 窗口出口项目外拖动树项目 预览项目的改变...
Jaudiotagger不是唯一可用的Java标记库,但在评估要使用的库时,您可能会考虑一些关键的好处 为所有完全支持的格式提供最流行的50个字段的通用接口 支持读取和写入mp4,m4a和m4p(受保护)文件,包括多个图像和反向...
/r 找到坏扇区并恢复可读取的信息。隐含着 /p 参数。 注意 Chkdsk 命令需要 Autochk.exe 文件。如果不能在启动目录(默认为 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多...
给页面文字添加span标签,设置id="text-xx"唯一属性,使用contenteditable="true",开启该元素的编辑模式,用jQuery属性.click()判断点击,用.text()返回此元素的文本内容,并用正则进行判断内容是否合法,然后通过...
添加了media支持,目前可以支持mp3/avi/asf/rm/qt等大量的media文件; 10.调控了jbb的标签,目前我们论坛的jbb的标签可以更好的工作; 11.修复了一个jbb的漏洞,防止jbb标签直接读取本机硬盘上的资源! 12.完善了...
7.4 MP3文件格式分析 306 7.4.1 MP3文件介绍 307 7.4.2 ID3V1标签 307 7.4.3 ID3V2标签 310 7.4.4 MP3帧结构 316 7.4.5 分割MP3文件 323 7.5 案例分析——铃声DIY 327 7.6 小结 329 第8章 让程序在后台运行 330 8.1 ...