Sha256: b405669666df6af490f35be4c109e9d4f4dfb2fc0f8d8cd09558bf032e1dbec3
Contents?: true
Size: 1.01 KB
Versions: 1
Compression:
Stored size: 1.01 KB
Contents
require "flv/version" require "flv/stream_reader" require "flv/format_error" require "flv/tag" class FLV def self.read(path) new(File.open(path, "rb")) end AUDIO_FLAG = 0x04 VIDEO_FLAG = 0x01 attr_reader :flags def initialize(io) @io = io @reader = StreamReader.new(io) read_header read_useless_footer end def audio? (flags & AUDIO_FLAG).nonzero? end def video? (flags & VIDEO_FLAG).nonzero? end def tags @tags ||= each_tag.to_a end def each_tag return enum_for(:each_tag) unless block_given? until @io.eof? yield Tag.read(@io) end end private def read_header raise FormatError, "bad header" unless @reader.read_bytes(3) == "FLV" raise FormatError, "bad version" unless @reader.read_byte == 1 @flags = @reader.read_byte raise FormatError, "bad header size" unless @reader.read_uint32_be == 9 end def read_useless_footer raise FormatError, "expected useless footer to be zero" unless @reader.read_uint32_be == 0 end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
flv-0.1.0 | lib/flv.rb |