我正在編寫一個程序來區分,並根據兩端的變化(Rsync-esque ...但更像Unison)來更改整個文件或段。主要想法是讓我的音樂文件夾(所有mp3)保持在多個位置。如何確定mp3文件頭的長度?
如果只有文件的一小部分發生了變化,我想發送分段更新,而不是複製整個文件。爲此,我需要一種方法來區分文件的各個部分。
我最初試圖爲每個文件的塊生成散列(每n個字節我會散列該段)。我注意到當我改變一個屬性(在mp3上的id3v2標籤)時,所有散列塊都會改變。這是有道理的,因爲我猜想標題正在增長,因爲它獲得了新的信息。
這導致我到我的實際問題。我想知道如何確定mp3頭的長度,所以我可以創建2個可比較的哈希值。
1)文件的元信息(頭)
2)與音頻實際MPEG流(該散列應保持不變,如果我要做的就是ALTER標籤信息)
我錯過了什麼其他?
謝謝!
泰
您是否考慮過使用二進制diff實用程序/庫? http://www.daemonology.net/bsdiff/ – Amy 2010-02-01 22:36:23
我使用TagLibSharp結束。 http://developer.novell.com/wiki/index.php/TagLib_Sharp – 2010-02-22 22:29:10