代码之家  ›  专栏  ›  技术社区  ›  Dan Sosedoff

Ruby MP3 ID3解析

  •  8
  • Dan Sosedoff  · 技术社区  · 15 年前

    目前我正在做一个音乐项目,处理用户MP3上传。问题是我找不到一个ID3库,它对所有文件都能正常工作。 我试过了 id3-ruby Mp3Info 但没有一个能给我始终如一的正确结果。 例如,最常见的问题:

    • 错误的流参数(比特率和采样率,有时持续时间)
    • 不支持扩展标记

    我决定添加一个表单,用户可以在其中提供艺术家和标题等可选信息;这有点帮助,但并没有完全解决问题。

    Ruby最有用和最强大的ID3库是什么?

    4 回复  |  直到 6 年前
        1
  •  6
  •   Ana Betts    15 年前

    http://www.hakubi.us/ruby-taglib/

    我把它用在一个项目上,效果很好。Taglib的包装,这是非常可移植的。

        2
  •  4
  •   Mike Woodhouse    15 年前

    我用过这个:

    http://ruby-mp3info.rubyforge.org/

    gem install ruby-mp3info (增加规定 sudo 对于mac或*nix)

    有一些RDOC文档,这很好。不利的是,我不太喜欢使用大写的字段名,这似乎太过担心,无法保留规范中的名称。也许我应该黑进一些别名。无论如何,此示例脚本扫描我的音乐库并统计标题中的单词:

    require 'mp3info'
    
    count = 0
    words = Hash.new { |h, k| h[k] = 0 }
    Dir.glob("E:/MUSIC/**/*.mp3") do |f|
      count += 1
      Mp3Info.open(f) do |mp3info|
        title = mp3info.tag2.TIT2
        next unless title
        title.split(/\s/).each { |w| words[w.downcase] += 1 }
      end
    end
    puts "Examined #{count} files"
    words.to_a.sort{ |a, b| b[1] <=> a[1] }[0,100].each { |w| puts "#{w[0]}: #{w[1]}" }
    
        3
  •  0
  •   Garrett    15 年前

    http://id3lib-ruby.rubyforge.org/

    我特别喜欢这个,你也可以把标签写到文件里。

        4
  •  0
  •   Franklin Yu    6 年前

    id3tag 是另一个选择。例子:

    require "id3tag"
    
    mp3_file = File.open('/path/to/your/favorite_song.mp3', "rb")
    tag = ID3Tag.read(mp3_file)
    puts "#{tag.artist} - #{tag.title}"