C# 如何确定mp3文件的长度';s头球?
我正在为diff编写一个程序,并根据两端的更改复制整个文件或片段(Rsync风格…但更像Unison)。其主要思想是在多个位置保持我的音乐文件夹(所有MP3)最新 我想发送分段更新,如果只有一小部分的文件已更改,而不是复制整个文件。为此,我需要一种区分文件段的方法 我最初尝试为每个文件的块生成散列(每n个字节我将散列该段)。我注意到,当我更改一个属性(mp3上的id3v2标记)时,所有散列块都会更改。这是有道理的,因为我猜标题在获取新信息时正在增长 这就引出了我真正的问题。我想知道如何确定mp3头的长度,这样我就可以创建两个可比较的散列 1) 文件的元信息(头) 2) 带音频的实际mpeg流(如果我所做的只是更改标记信息,则此哈希应保持不变) 我还缺什么吗 谢谢C# 如何确定mp3文件的长度';s头球?,c#,mp3,id3,C#,Mp3,Id3,我正在为diff编写一个程序,并根据两端的更改复制整个文件或片段(Rsync风格…但更像Unison)。其主要思想是在多个位置保持我的音乐文件夹(所有MP3)最新 我想发送分段更新,如果只有一小部分的文件已更改,而不是复制整个文件。为此,我需要一种区分文件段的方法 我最初尝试为每个文件的块生成散列(每n个字节我将散列该段)。我注意到,当我更改一个属性(mp3上的id3v2标记)时,所有散列块都会更改。这是有道理的,因为我猜标题在获取新信息时正在增长 这就引出了我真正的问题。我想知道如何确定mp3
Ty如果要确定标题信息,您可以:
- a) 需要使用可以为您进行解析的mp3库,或者
- b) 转到并根据需要解析它
如果读取前3个字节,并且它们等于“ID3”,则跳到第7个字节,然后读取标题大小。不过要小心,因为大小存储为“synchsafe整数”。我最后使用了TagLibSharp。developer.novell.com/wiki/index.php/TagLib_Sharp您考虑过使用二进制diff实用程序/库吗?我最后使用了TagLibSharp。