获取MP3信息

 

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
获取MP3文件信息
注释:
 函数名称:Open
 函数介绍:只读/读写、共享打开MP3文件, 为读取MP3文件信息做准备.
            要求打开MCI时用MCI_OPEN_SHAREABLE.
 输入参数:LPSTR strPath, MP3文件路径
            BOOL bRead,  true =读,  false =写
 输出参数:无
 返回值  :BOOL, 
true =成功,  false =失败
BOOL CID3TAG::Open(LPSTR strPath, BOOL bRead)
{
 TRY{
 
if  (bRead)
  m_f.Open(strPath,
   CFile::typeBinary |
   CFile::modeRead |
   CFile::shareDenyNone);
 
else
  m_f.Open(strPath,
   CFile::typeBinary |
   CFile::modeReadWrite |
   CFile::shareDenyWrite);
 }CATCH( CFileException, e )
 { 
return   false ;
 }
 END_CATCH
 
if  (m_f.m_hFile == (UINT)CFile::hFileNull)
  
return   false ;
 
return   true ;
}
//====================
 函数名称:GetData
 函数介绍:读取ID3信息, 并存储到数据成员
            ID3信息:(MP3文件的后128字节)
            
"TAG" (标志): 3
            Title(标题):
30
            Artist(艺术家):
30
            Album(纪念册):
30
            Year(年份):
4
            Comment(注释):
30
            Genre(流派):
1
 输入参数:无
 输出参数:无
 返回值  :BOOL, 
true =成功,  false =失败
BOOL CID3TAG::GetData()
{
 TRY{
 CString str=_T(
"" );
 m_f.Seek(-
128 , CFile::end);
 m_f.Read(str.GetBuffer(
3 ),  3 );

 str.ReleaseBuffer();

 
if  (str==_T( "TAG" ))  //标志为"TAG"
 { m_f.Read(m_Title.GetBuffer( 30 ),  30 );
  m_Title.ReleaseBuffer();
  m_f.Read(m_Artist.GetBuffer(
30 ),  30 );
  m_Artist.ReleaseBuffer();
  m_f.Read(m_Album.GetBuffer(
30 ),  30 );
  m_Album.ReleaseBuffer();
  m_f.Read(m_Year.GetBuffer(
4 ),  4 );
  m_Year.ReleaseBuffer();
  m_f.Read(m_Comment.GetBuffer(
30 ),  30 );
  m_Comment.ReleaseBuffer();
  m_f.Read(m_Genre.GetBuffer(
1 ),  1 );
  m_Genre.ReleaseBuffer();
 }
else
  
return   false ;
 }CATCH( CFileException, e )
 { 
return   false ;
 }
 END_CATCH
 
return   true ;
}

 

 函数名称:Close
 函数介绍:关闭已打开的MP3文件
 输入参数:无
 输出参数:无
 返回值  :BOOL, 
true =成功,  false =失败
//=====================
BOOL CID3TAG::Close()

 
if  (m_f.m_hFile!=(UINT)CFile::hFileNull)
  m_f.Close();
 
return   true ;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值