Audio 从原始MP3中去除另一个ID标签

Audio 从原始MP3中去除另一个ID标签,audio,mp3,id3,Audio,Mp3,Id3,我想得到一个干净的Mp3文件,没有任何像id标签,封面图像,编码器信息等传统数据。 只要mp3在一个有效的文件,它可以播放每一个mp3播放器 我从这个开始: 获得一个没有id标签的有效mp3散列很好,但是当你把输出保存到一个mp3文件中时,它就坏了 也许你有一个想法,如何完成这项工作。这个Ruby库应该非常简单: 最好是0.5.0或更高版本 安装gem后,检查“examples”目录中的文件 require 'id3' filename = "bla.mp3" if ID3.hasID3v

我想得到一个干净的Mp3文件,没有任何像id标签,封面图像,编码器信息等传统数据。 只要mp3在一个有效的文件,它可以播放每一个mp3播放器

我从这个开始:

获得一个没有id标签的有效mp3散列很好,但是当你把输出保存到一个mp3文件中时,它就坏了


也许你有一个想法,如何完成这项工作。

这个Ruby库应该非常简单:

最好是0.5.0或更高版本

安装gem后,检查“examples”目录中的文件

require 'id3'

filename = "bla.mp3"
if ID3.hasID3v1tag?( filename ) || ID3.hasID3v2tag?( filename )

   puts "File size: #{ File::Stat.new(filename).size }"   # file size including tags

   myfile = ID3::AudioFile.new( filename )
   puts "Audio length: #{myfile.audioLength}"    
   puts "Audio MD5sum: #{myfile.audioMD5sum}"

   # delete both id3 v1 and id3 v2 tags from the file:
   myfile.tagID3v1 = nil     # it might be a good idea to store the info somewhere before deleting it
   myfile.tagID3v2 = nil
   myfile.write              # we only write if we modified it..

end
e、 g:在irb中以交互方式进行测试

# /usr/bin/irb
irb> RUBY_VERSION
 => "1.8.6" 
irb>  require 'id3'   # version 0.5.0
 => true 
irb> filename = '/tmp/b.mp3'
 => "/tmp/b.mp3" 
irb>      puts "File size: #{ File::Stat.new(filename).size }"
File size: 8040064
irb>      myfile = ID3::AudioFile.new( filename )
irb>    puts "Audio length: #{myfile.audioLength}"    
Audio length: 8037877
irb>    puts "Audio MD5sum: #{myfile.audioMD5sum}"
Audio MD5sum: 47719e1881e5a2488e51fc250ccd2396
irb>       # /usr/bin/irb
irb> RUBY_VERSION
 => "1.8.6" 
irb>  require 'id3'   # version 0.5.0
 => true 
irb> filename = '/tmp/b.mp3'
 => "/tmp/b.mp3" 
irb>      puts "File size: #{ File::Stat.new(filename).size }"
File size: 8040064
irb>      myfile = ID3::AudioFile.new( filename )
irb>    puts "Audio length: #{myfile.audioLength}"    
Audio length: 8037877
irb>    puts "Audio MD5sum: #{myfile.audioMD5sum}"
Audio MD5sum: 47719e1881e5a2488e51fc250ccd2396
irb> myfile.tagID3v2
 => {"ARTIST"=>{"encoding"=>0, "text"=>"Juno reactor"}, "CONTENTTYPE"=>{"encoding"=>0, "text"=>"Electronica/Dance"}, "ALBUM"=>{"encoding"=>0, "text"=>"Bible of Dreams"}, "ENCODEDBY"=>{"encoding"=>0, "text"=>"iTunes v2.0"}, "TRACKNUM"=>{"encoding"=>0, "text"=>"6/9"}, "TITLE"=>{"encoding"=>0, "text"=>"Kaguya Hime"}, "YEAR"=>{"encoding"=>0, "text"=>"1997"}, "COMMENT"=>{"encoding"=>0, "language"=>"eng", "short"=>"iTunes_CDDB_IDs", "long"=>"9+647C467468A248173A4A203ED2204CAB+163399"}} 

irb>      myfile.tagID3v1 = nil
irb>      myfile.tagID3v2 = nil
irb>      myfile.write
irb>  puts "File size: #{ File::Stat.new(filename).size }"
File size: 8037877

如果您使用的是Linux或Mac,请尝试BulkID3

我使用0.5.0运行了上面的示例,我的MP3文件被截断为4KB。绝对是原始的东西。你用的是哪个Ruby版本?我没有看到ID3 0.5.0与Ruby 1.8.x结合使用时出现任何问题。如果您遇到问题,请提供一个复制错误的简短脚本,包括Ruby版本,然后发送给我。后来我得到了可接受的结果。现在无法复制错误。我很抱歉。