zoukankan      html  css  js  c++  java
  • 用C#修改Mp3文件属性

    前段时间买了个mp3播放器,当将我电脑上的音乐传进去时发现我电脑上的mp3文件太杂乱无章了,便写了个工具将其自动按歌手,专辑等分类整理了一下。这里主要谈一下在写这个工具中的对用C#修改Mp3文件属性的一点心得

    MP3及wma等大多是通过ID3 Tag标记标题,歌手,出版日期等歌曲信息的,目前ID3主要用的是ID3v1及ID3v2两种,目前大部分mp3播放器也都支持这两种格式。关于ID3文件的详细格式,可以在ID3.org上查询。

    最开始我是写了一个简单的ID3 Tag的解析器,本身写个解析器并不是很难,但要命的是网上下载的很多文件并不是严格遵循ID3格式来写文件头的,不仅要处理大量的未知异常行为,一个不留神会造成对mp3文件的损害。于是我便放弃了自己写解析器的念头,想看一下网上有没有什么开源的ID3 Tag的解析器。在ID3的主页上看了一下,还真不少,各个语言的都有,光C#的就有如下几个:

    另外,codeproject上还找到了一个Professional Tag Editor for MP3 (ID3) and WMA,提供了完整的界面,试了一下,功能也比较完善。  


    有了这些开源的解析器后,还得处理以下几个问题:
    1. 并不是ID3Tag的属性的获取
      播放时间,比特率等并不是ID3Tag的信息,如何获取这些信息又是一个难题
    2. 下载的mp3文件的id3格式及播放器支持问题
      那些解析器之提供了基本的读取和修改功能,而真正要把修改正确应用到文件还需要一些额外的处理。
      如标题,歌手等在ID3v1和ID3v2中都存在,而网上下载的文件有的保护ID3v1,有的包含ID3v2,还有的啥都不包含;同时,有的播放器并不支持ID3v2。
    3. 这些开源解析器本身的bug
      开源软件的最大不足时缺乏足够的文档和测试,这些软件本身也还存在一些bug,如中文显示及一些异常的处理等,弄不好也很容易损坏mp3文件

    这几个问题处理起来还是很头疼的,这时我发现windows本身提供了mp3文件属性修改的api,通过这些api可以更安全,快捷的修改MP3属性。这里是我的一个实现(需要WindowsAPICodePack)。

    Code

    整个代码非常简单,要进行增加其它属性也只需要加入两行代码而已。目前发现这种方式的一个唯一不足是不支持缩略图的写操作(可以读取),但这个可以通过结合上面的那些开源软件很容易的解决。

  • 相关阅读:
    Perl的运算符号字符
    windows xp 使用远程桌面时的关机/重新启动方法
    抵御TCP的洪水
    远程桌面连接中的常见问题 连接上就断开
    批量kill mysql进程
    Linux如何查看硬盘型号和缓存
    Apache Rewrite 规则详解
    nginx 内置变量大全
    大数据量分页存储过程效率测试附代码
    ASP.Net 更新页面输出缓存的几种方法(包括用户控件,iframe,页面缓存等)
  • 原文地址:https://www.cnblogs.com/TianFang/p/1574722.html
Copyright © 2011-2022 走看看