`
greemranqq
  • 浏览: 975448 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

得到MP3中隐藏的信息

 
阅读更多

得到MP3中隐藏的信息

为了保护音乐者的版权,在MP3文件中有一段特意存储版权说明的信息,众多的MP3播放器软件都提供了修改和读取MP3文件中隐藏信息的功能,那么这些信息到底存储在哪里呢?如何得到这些信息呢?本文将为大家提供得到MP3信息的模块。

首先,定义一个公共类型Mp3tag如下:

Public Type Mp3tag
Artist As String ’Artist 存储歌手信息
Album As String ’Album 存储唱片专辑信息
Title As String ’Title 存储标题信息
Year As String ’Year 存储年代信息
Comments As String ’Comments 存储备注信息
Genre As Integer ’Genre 存储音乐风格序列
End Type

然后,定义一个获取MP3信息的函数,它将返回这些信息,代码如下:

Public Function GetMp3Tag(FName As String) As Mp3tag
Dim Artist As String
Dim Album As String
Dim Title As String
Dim Year As String
Dim Comments As String
Dim Genre As Integer

If FName = "" Then Exit Function

If Dir(FName) = "" Then Exit Function

Dim FileNum As Integer

FileNum = FreeFile ’得到一个自由的文件号

Dim strInput As String

Open FName For Binary Access Read As FileNum ’以二进制形式打开文件

If LOF(FileNum) < 128 Then
Close FileNum
Exit Function
End If

Seek FileNum, LOF(FileNum) - 127 ’把文件指针移动到MP3信息处
strInput = Space(3)
Get FileNum, , strInput


If strInput <> "TAG" Then ’如果没有发现信息标识,就关闭文件
Close FileNum
GoTo Done:
End If

strInput = Space(30)
Get FileNum, , strInput
Title = Trim(strInput)

strInput = Space(30)
Get FileNum, , strInput
Artist = Trim(strInput)

strInput = Space(30)
Get FileNum, , strInput
Album = Trim(strInput)

strInput = Space(4)
Get FileNum, , strInput
Year = Trim(strInput)

strInput = Space(30)
Get FileNum, , strInput
Comments = Trim(strInput)

strInput = Space(1)
Get FileNum, , strInput
Genre = Asc(strInput)

Done:
GetMp3Tag.Title = Title
GetMp3Tag.Artist = Artist
GetMp3Tag.Album = Album
GetMp3Tag.Year = Year
GetMp3Tag.Year = Comments
If Genre < 0 Or Genre > 254 Then Genre = 12
GetMp3Tag.Genre = CInt(Genre)

Close FileNum

End Function

注意:MP3文件对音乐的风格进行了限制,共254种。Genre返回的只是MP3风格的序列号,具体还需要定位,在这里我把所有类型以常数形式列出,每个类型之间用"|"号隔开。

Private Const sGenreMatrix = "Blues|Classic Rock|Country|Dance|Disco|Funk|Grunge|" + _
"Hip-Hop|Jazz|Metal|New Age|Oldies|Other|Pop|R&B|Rap|Reggae|Rock|Techno|" + _
"Industrial|Alternative|Ska|Death Metal|Pranks|Soundtrack|Euro-Techno|" + _
"Ambient|Trip Hop|Vocal|Jazz+Funk|Fusion|Trance|Classical|Instrumental|Acid|" + _
"House|Game|Sound Clip|Gospel|Noise|Alt. Rock|Bass|Soul|Punk|Space|Meditative|" + _
"Instrumental Pop|Instrumental Rock|Ethnic|Gothic|Darkwave|Techno-Industrial|Electronic|" + _
"Pop-Folk|Eurodance|Dream|Southern Rock|Comedy|Cult|Gangsta Rap|Top 40|Christian Rap|" + _
"Pop/Punk|Jungle|Native American|Cabaret|New Wave|Phychedelic|Rave|Showtunes|Trailer|" + _
"Lo-Fi|Tribal|Acid Punk|Acid Jazz|Polka|Retro|Musical|Rock & Roll|Hard Rock|Folk|" + _
"Folk/Rock|National Folk|Swing|Fast-Fusion|Bebob|Latin|Revival|Celtic|Blue Grass|" + _
"Avantegarde|Gothic Rock|Progressive Rock|Psychedelic Rock|Symphonic Rock|Slow Rock|" + _
"Big Band|Chorus|Easy Listening|Acoustic|Humour|Speech|Chanson|Opera|Chamber Music|" + _
"Sonata|Symphony|Booty Bass|Primus|Porn Groove|Satire|Slow Jam|Club|Tango|Samba|Folklore|" + _
"Ballad|power Ballad|Rhythmic Soul|Freestyle|Duet|Punk Rock|Drum Solo|A Capella|Euro-House|" + _
"Dance Hall|Goa|Drum & Bass|Club-House|Hardcore|Terror|indie|Brit Pop|Negerpunk|Polsk Punk|" + _
"Beat|Christian Gangsta Rap|Heavy Metal|Black Metal|Crossover|Comteporary Christian|" + _
"Christian Rock|Merengue|Salsa|Trash Metal|Anime|JPop|Synth Pop"


把以上代码写到一个模块中(.Bas),然后在窗体上加入5个TextBox和1个ComboBox控件,其中5个TextBox控件分别用来显示一首Mp3文件的以下信息:歌手、年代、唱片、评论、标题,ComboBox控件用来显示歌曲的风格。再放一个Command控件,其标题为“显示信息”,在它的Click事件中加入以下代码:
Private sub Command1_click()
Dim mp3Tag as Mp3tag
mp3tag = GetMp3Tag ("c:/Song.mp3")
Text1.Text = mp3tag.Artist
Text2.Text = mp3tag.Album
Text3.Text = mp3tag.Title
Text4.Text = mp3tag.Year
Text5.Text = mp3tag.Comments
Combo1.ListIndex = mp3tag.Genre
End Sub
在窗体的加载过程中加入如下代码:
Private Sub Form_Load()
Dim i As Integer,GenreArray() As String
GenreArray = Split(sGenreMatrix, "|")
For i = LBound(GenreArray) To UBound(GenreArray)
Combo1.AddItem GenreArray(i)
Next i
End Sub

以上代码在VB6 /Win2000中测试通过。

分享到:
评论

相关推荐

    MP3Stego_1_1_18.zip_MP3Stego_1_1_18_音频 隐藏

    MP3Stego是一款在国外颇受欢迎的音频隐藏工具,主要用于在MP3文件中嵌入秘密信息,也就是我们常说的“隐写术”或“信息隐藏”。这个软件版本为1.1.18,从标签可以看出其核心功能是将数据藏于音频文件中,提供了一种...

    一种基于DWT 和DCT 域的音频信息隐藏算法

    《一种基于DWT和DCT域的音频信息隐藏算法》的研究着重探讨了如何在音频数据中隐藏信息,以实现版权保护和防止非法复制。本文提出的新算法结合了离散小波变换(DWT)和离散余弦变换(DCT)的优势,确保了水印的不可...

    MP3隐写工具

    MP3Stego是一款专用于音频隐写术的工具,它允许用户在MP3文件中隐藏秘密信息,这种技术被称为MP3隐写术。隐写术,又称为隐藏写作或信息隐藏,是一种在数字媒体(如图像、音频和视频)中嵌入秘密数据的技术,目的是在...

    MP3Stego音频隐写工具

    回车后等待,最后在文件夹中得到隐藏的文件 使用encode加密 同样的,将wav音频文件只能加密wav的和需要的txt文件复制到目录下,在打开的命令行中输入 encode -E 加密的txt文件 -P 密码 加密的wav文件 输出的MP3...

    MP3Stego_1.1.18

    MP3Stego_1.1.18 是一个专业且知名的MP3隐写工具,它主要用于在MP3音频文件中嵌入隐藏的信息。这个软件版本为1.1.18,意味着它经过了多次更新和优化,以提供更好的稳定性和功能。隐写术,或者称为隐藏写作,是一种在...

    MP3编码c语言的实现

    在C语言中实现MP3编码涉及许多复杂的数字信号处理和编码理论。下面我们将深入探讨MP3编码的核心概念、主要步骤以及C语言实现的关键点。 首先,我们需要理解MP3编码的基础——脉冲编码调制(Pulse Code Modulation, ...

    图像隐藏基于 DCT的图像隐写matlab源码.rar

    虽然DCT方法相对隐蔽,但仍有隐写分析工具和技术可以检测图像中是否嵌入了隐藏信息。例如,统计分析、频域特征检测等方法。 五、应用与挑战 图像隐写技术广泛应用于保密通信、版权保护等领域。然而,随着隐写检测...

    mp3解码kmpa的DEMO

    MP3解码是数字音频处理领域中的核心技术之一,它涉及到音频编码、数字信号处理和计算机编程等多个方面的知识。本DEMO主要关注如何使用特定的算法和技术来解析和播放MP3文件,下面将详细阐述相关知识点。 首先,MP3...

    dct.rar_DCT 数字水印_DCT 水印_DCT 水印 算法_水印 实验 matlab_水印报告

    在数字水印领域,DCT的优势在于其能够将图像的主要信息集中在低频部分,而高频部分则包含相对较少的信息,这为隐藏水印提供了便利。通过在DCT系数中嵌入水印信息,可以达到既不影响图像质量,又能有效保护版权的目的...

    网易云音乐缓存转码MP3

    在实际操作中,用户应确保使用的是最新版本,以获得最佳的转换效果和兼容性。 总的来说,将网易云音乐缓存转码为MP3是一种利用特定技术手段实现音乐离线播放的方法,涉及到文件系统操作、音频编码解码、加密解密等...

    风越网页隐藏资源下载器 v3.84

    这款软件的主要功能是帮助用户发现并下载那些通常被浏览器隐藏或者无法通过常规方式获得的SWF(ShockWave Flash)文件、图片以及音乐等多媒体资源。在网页设计中,这些资源往往被嵌入在网页代码中,普通用户可能无法...

    e语言mp3源码

    4:暂停,如果判断mp3的状态是否等于正在播放,是正在播放的话,就停止播放,并隐藏暂停,显示继续播放的按钮,超级列表框1获得焦点 5:点击继续播放:隐藏继续播放按钮,显示暂停,然后继续播放mp3 6:上一首:该...

    mp3stego-gui音频隐写软件,附件包含使用手册、ctf题目例子、CTF群资源

    内容概要:mp3stego是一个在通用的MP3音频文件中隐写的软件,对MP3进行隐写,附件包含使用手册、ctf题目例子、CTF群资源 适合人群:ctf初学者,需要音频隐写工具,对 能学到什么:附件中包含工具的两种使用方法,还...

    silenteye音频隐写及解密工具

    【silenteye音频隐写及解密工具】是一种专门用于检测和解密隐藏在音频文件(如mp3)中的隐写信息的工具。在网络安全领域,尤其是Capture The Flag(CTF)竞赛中,音频隐写是一种常见的隐蔽通信手段,攻击者可能会在...

    MP3Stego_1_1_17.zip_audio watermarking_音频 水印 _音频水印

    总的来说,MP3Stego_1_1_17是一款音频水印工具,它通过在MP3文件中嵌入隐藏信息来实现版权保护或其他相关用途。通过不断的版本更新和优化,该工具的性能和用户体验得到了提升,为音频内容的所有者提供了更可靠的安全...

    基于数字细菌的MP3版权保护

    4. **数字细菌的安全保障**:为了确保MP3疫苗的安全,数字细菌在音乐数据中作为隐藏的独立成分信号存在,起到保护作用。当MP3疫苗遭受破坏时,数字细菌被激活,对盗版数据发起攻击。 #### 实验验证与应用前景 实验...

    信息论-基础理论与应用 傅祖芸

    信息论的应用广泛,包括但不限于:通信系统(如无线通信、卫星通信)、数据压缩(如视频编码标准H.264/AVC)、密码学(如公钥加密和信息隐藏)、机器学习(如熵编码和信息增益在特征选择中的应用)等。 总之,...

    MP3设计的一些C语言源程序

    9. **错误隐藏**:由于音频数据在网络传输或存储过程中可能出错,MP3编码器会设计一些错误隐藏策略,如冗余编码,即使部分数据丢失,解码后的声音质量也不会大幅下降。 10. **C语言编程**:编写MP3编解码器需要深入...

    MP3Stego_1_1_15.rar_MPEG-1

    此外,该程序或许还包含了用于隐藏秘密信息的数字水印技术(Stego),这是一种信息安全领域的应用,可以用于验证音频文件的原始性和完整性。 在压缩包中,"MP3Stego"很可能是主程序文件,可能是一个命令行工具或者...

Global site tag (gtag.js) - Google Analytics