从MP3文件中获得ID3-Tag
解决方案 »
- 求助网络监听程序执行时总是提示“Access Violation at address……”???
- 问一个奇怪的问题,高分问!!!!!!!!急等
- 为什么我的邮件发送连接老是不成功??
- 100分求:读ini连接数据库中出现的问题!
- 如何快速的检测数据库中表中增加了一条记录?
- 毕业又失业! 极度郁闷!
- 用Select Into创建的临时表,过多长时间后它就自动没有了?
- 使用TServerSocket控件,拔掉网线,过很长时间才能检测到,如何解决?
- 调用DLL文件的问题?急!!!
- 请问如何设置canvas的没画图前的背景颜色?
- 欢迎UP,如何显示动态图标就是图标闪烁(是标题栏上的图标) UP有分!!
- 現在大家還用不用mdi呀,進來討論送分100,來接分吧
TID3Tag = packed record // 128 字节
TAGID: array[0..2] of char; // 3 字节: 必须是TAG
Title: array[0..29] of char; // 30 字节: 歌曲标题
Artist: array[0..29] of char; // 30 字节: 歌曲的艺术家
Album: array[0..29] of char; // 30 字节: 歌曲专辑
Year: array[0..3] of char; // 4 字节: 出版年
Comment: array[0..29] of char; // 30 字节: 评论
Genre: byte; // 1 字节: 种类标识
end; 为读取ID3-Tag信息并在一个对话框中显示,试试这个函数: procedure TForm1.Button1Click(Sender: TObject);
const
_mp3file='G:\Mp3\Miscellaneous\ATC - Around The World.mp3';
var
id3tag: Tid3tag;
mp3file: Tfilestream;
begin
mp3file:=Tfilestream.create(_mp3file,fmOpenRead);
try
mp3file.position:=mp3file.size-128; // 跳到id3-tag
mp3file.Read(id3tag,SizeOf(id3tag));
showmessage(' Title: '+id3tag.title+#13+
' Artist: '+id3tag.artist+#13+
' Album: '+id3tag.album+#13+
' Year: '+id3tag.year+#13+
' Comment: '+id3tag.comment+#13+
' Genre-ID: '+inttostr(id3tag.genre)
);
finally
mp3file.free;
end;
end; 这个函数读取_mp3file描述的文件,跳到倒数第128个字节,读取并在对话框中显示信息。
TID3Tag=Record
ID:String[3];
Title:String[30];
Artist:String[30];
Album:String[30];
year:string[4];
comment:string[30];
Genre:byte;
end;var
ID3tag:TID3tag;
procedure LESE_ID3Tag(fileName:String);
var
Buffer:array[1..128] of char;
f:file;
begin
AssignFile(f,filename);
Reset(f,1);
seek(f,filesize(f)-128);
BlockRead(f,Buffer,sizeof(buffer));
closefile(f);
with ID3tag do
begin
id:=copy(buffer,1,3);
Title:=copy(Buffer,4,30);
end