aacが厄介(2)

昨日の日記ではヘッダを

FF F8 XX 80

と仮定して処理を行っていましたが、どうやら 

FF F8 XX 40

となっている放送もあるようです。


ですので、昨日のスクリプトを修正しました。
「FF F8」が登場したら、それ以降を抜き出します。


使用は自己責任で。無保証。

#!ruby
#
# fixaac.rb
#
# usage:
#  ruby fixaac.rb INFILE OUTFILE
#

ifn = ARGV[0]
ofn = ARGV[1]
open(ifn) do |fi|
  found = false
  until fi.eof?
    byte1 = fi.read(1)
    if byte1[0] == 0xff
      byte2 = fi.read(1)
      if byte2[0] == 0xf8
        found = true
        break
      end
    end
  end
  if found
    puts "Header is found. Processing..."
    fi.seek fi.pos - 2
    open(ofn, "w") do |fo|
      until fi.eof?
        fo.write fi.read(1024 * 1024)
      end
    end
  else
    puts "Invalid AAC file."
  end
end