【问题标题】:How can I determine the length of an mp3 file's header?如何确定 mp3 文件头的长度?
【发布时间】:2010-02-01 22:24:07
【问题描述】:

我正在编写一个程序来区分,并根据两端的更改复制整个文件或段(Rsync-esque...但更像 Unison)。主要想法是让我的音乐文件夹(所有 mp3)在多个位置保持最新。

如果只有文件的一小部分发生了更改,我想发送分段更新,而不是复制整个文件。为此,我需要一种方法来区分文件的各个部分。

我最初尝试为每个文件的块生成散列(每 n 个字节我对段进行散列)。我注意到,当我更改一个属性(mp3 上的 id3v2 标记)时,所有散列块都会更改。这是有道理的,因为我猜标题会随着获取新信息而增长。

这引出了我的实际问题。我想知道如何确定 mp3 标题的长度,所以我可以创建 2 个可比较的哈希值。

1) 文件的元信息(头)

2) 带有音频的实际 mpeg 流(如果我所做的只是改变标签信息,这个哈希应该保持不变)

我还有什么遗漏吗?

谢谢!

泰

【问题讨论】:

标签: c# mp3 id3


【解决方案1】:

如果您想确定标头信息,您可以:

  • a) 需要使用可以为您进行解析的 mp3 库,或者
  • b) 转到mp3 specification 并根据需要将其解析出来。

【讨论】:

    【解决方案2】:

    如果您只想检查 id3v2 标签的长度,那么您可以在http://www.id3.org/id3v2.4.0-structure 找到有关其结构的信息。

    如果您读取前 3 个字节,并且它们等于“ID3”,则跳到第 7 个字节,然后读取标头大小。不过要小心,因为大小存储为“同步安全整数”。

    【讨论】:

      【解决方案3】:

      我最终使用了 TagLibSharp。 developer.novell.com/wiki/index.php/TagLib_Sharp

      【讨论】:

        猜你喜欢
        • 2013-03-29
        • 2011-08-27
        • 2010-09-12
        • 1970-01-01
        • 2013-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多