class MpegFrame def initialize(buf) @buf = buf.unpack("B*").first end def valid_frame? @buf[0..10] == "11111111111" end def mpeg_version case @buf[11..12] when "00" "MPEG version 2.5" when "01" "reserved/invalid" when "10" "MPEG version 2" when "11" "MPEG version 1" else "invalid" end end def mpeg_layer case @buf[13..14] when "00" "reserved/invalid" when "01" "Layer 3" when "10" "Layer 2" when "11" "Layer 1" else "invalid" end end def protected? @buf[15, 1] == "1" end end frame = MpegFrame.new(IO.read(ARGV.first, 2)) puts <