使用Silverlight读取MP3标签让我开始了解如何读取id3标签,但我意识到taglib#在线处理本地文件路径?有没有一种方法可以从远程文件中读取这些信息?
我最近回答了一个关于Ruby的类似问题(见下文) - 我相信你也可以做类似的事情。
思路如下:
使用HTTP 1.1协议或更高版本,以及Range HTTP请求。
下载ID3v2标签的开始部分(100字节)。
从下载的前几个字节中,您可以确定完整的ID3v2标签的正确长度,例如N。
下载文件的前N个字节(例如完整的ID3v2标签)。
解析ID3v2标签以满足您的需求。
请参见:
Tim Heuer在他的博客文章中介绍了如何做到这一点。http://timheuer.com/blog/archive/2010/01/30/reading-mp3-id3-tags-with-silverlight-taglib.aspx
就像你一样,他也遇到了TabLib#只使用本地路径的问题。
TagLib#缺少流输入实现。事实上,大多数库都假定本地文件路径。幸运的是,该库使用了通用的“文件”接口编写,因此我只需要创建自己的StreamFileAbstraction即可。我选择在我的项目中而不是基础库中进行这个操作。这很容易,因为LocalFileAbstraction实际上会在其第一个任务中打开文件并设置一些公共变量。我的抽象基本上只是将流交给它,已经准备好了。
Novell网站上有一个使用文件抽象的示例。 http:// developer.novell.com/wiki/index.php/TagLib_Sharp:_Examples