哪有mp3和mp3pro文件格式资料下载??(50分)

  • 主题发起人 主题发起人 lxmzm
  • 开始时间 开始时间
L

lxmzm

Unregistered / Unconfirmed
GUEST, unregistred user!
哪有mp3和mp3pro文件格式资料下载??
 
????????????????
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=757904
 
严黎斌
unit ID3Kernel;

interface

type
Tid3v1= record
Tag: array[0..2] of char;
//00..02 , ='TAG'
Title:array[0..$1d] of char;
//03..20
Artist:array[0..$1d] of char;
//21..3e
Album:array[0..$1d] of char;
//3f..5c
Year:array[0..3] of char;
//5d..60
Comment:array[0..$1c] of char;
//61..7d
Track:byte;
//7e
Genre:byte;
//7f
end;


function ReadID3v1(strFile:string;var pid3v1:Tid3v1):integer;
function WriteID3v1(strFile:string;var pid3v1:Tid3v1):integer;
function DeleteID3v1(strFile:string):integer;

implementation

function ReadID3v1(strFile:string;var pid3v1:Tid3v1):integer;
var
f1:file of byte;
bytAll: array [0..$7f] of byte;
i: integer;
begin

result:=1;
if strFile='' then
exit;
AssignFile(f1,strFile);
FileMode:=0;
Reset(f1);
if FileSize(f1)<=$80 then
exit;
Seek(f1, FileSize(f1)-$80);
for i:=0 to $7fdo
Read(f1,bytAll);
if (bytAll[0]<>ord('T')) and (bytAll[1]<>ord('A'))
and (bytAll[2]<>ord('G')) then
exit;
// no 'TAG' found
Move(bytAll,pid3v1,$80);
CloseFile(f1);
result:=0;
end;


function WriteID3v1(strFile:string;var pid3v1:Tid3v1):integer;
var
f1:file of byte;
bytAll: array [0..$7f] of byte;
i: integer;
begin

result:=1;
AssignFile(f1,strFile);
FileMode:=2;
Reset(f1);
if FileSize(f1)<=$80 then
exit;
Seek(f1, FileSize(f1)-$80);
for i:=0 to $2do
Read(f1,bytAll);
// test if 'TAG' exists
if (bytAll[0]=ord('T')) and (bytAll[1]=ord('A'))
and (bytAll[2]=ord('G'))
then
Seek(f1,FileSize(f1)-$80)
else
Seek(f1,FileSize(f1));
Move(pid3v1,bytAll,$80);
for i:=0 to $7fdo
Write(f1,bytAll);
CloseFile(f1);
result:=0;
end;


function DeleteID3v1(strFile:string):integer;
var
f1:file of byte;
bytAll: array [0..$7f] of byte;
i: integer;
begin

Result:=1;
AssignFile(f1,strFile);
FileMode:=2;
Reset(f1);
if FileSize(f1)<=$80 then
exit;
Seek(f1, FileSize(f1)-$80);
for i:=0 to $2do
Read(f1,bytAll);
// test if 'TAG' exists
if (bytAll[0]=ord('T')) and (bytAll[1]=ord('A'))
and (bytAll[2]=ord('G'))
then
begin

Seek(f1,FileSize(f1)-$80);
Truncate(f1)
end;

CloseFile(f1);
Result:=0;
end;


end.


 
我想知道的是如何编码的,不是ID3V1等信息。
 
编码很复杂,我觉的想了解的人都是肯上进的人
涉及到知识有:位流解码,CRC校验,哈夫曼解码,RLE解码,子带合成,MUX,滤波器,
反量化, 离散余玄变换,立体声处理等方面的知识
建议:从MPEG Audio的第一层看起,比较容易一些
 
我觉得最困难的在于声道模拟上
 
你找个linux下的播放器的源代码看看,不就全都在了.
 
礼泉兄说得好:编码很复杂,我觉的想了解的人都是肯上进的人!
哈哈哈
的确,解码和编码都是非常让人感到头痛的麻烦事。
顶一下好了:)
 
mp3的解码算法我有,2000多行的C程序,是不是很打击你的信心???
 
2000多行的C代码只能算是小程序了[:D]

http://www.mp3-tech.org/programmer/programmers.html
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部