wavファイルのヘッダを読み込む

参考


readHeader.rb

#!/usr/bin/env ruby

if ARGV.size < 1
  puts 'ruby readHeader.rb input.wav'
  exit 1
end

File.open(ARGV.first){|file|
  file.binmode
  puts riff = file.read(4)
  puts data_size = file.read(4).unpack('V').first
  puts wave = file.read(4)
  
  if riff != 'RIFF' or wave != 'WAVE'
    puts 'not wave file'
    exit 1
  end
  
  while !file.eof?
    id = file.read(4)
    chunk_size = file.read(4).unpack('V').first
    data = file.read(chunk_size)
    puts "chunk id: #{id}, size: #{chunk_size}"
  end
}

実行

ruby readHeader.rb ~/test.wav

結果

RIFF
51858468
WAVE
chunk id: fmt , size: 16
chunk id: data, size: 51858432