Sha256: 6b38620339694977e2e6b741010639da742b505ab036e01f51eb5db87c6fd9f2

Contents?: true

Size: 962 Bytes

Versions: 3

Compression:

Stored size: 962 Bytes

Contents

#!/usr/bin/env ruby

$: << File.join(File.dirname(__FILE__), "..", "lib")
require 'ffi-libav'
require 'pp'

def format_seconds(s)
  s = s.to_i
  h = s/3600
  s -= h * 3600
  m = s/60
  s -= m * 60
  "%02d:%02d:%02d" % [ h, m, s ]
end

GLYPHS = %w{ | / - \\ }
@first = nil
@last  = nil
@calls = 0
def spin(frame)
  now = Time.now()
  @first ||= now
  @last  ||= now

  @calls += 1

  if (@last + 0.25 < now)
    fps = @calls.to_f / (now - @first)
    pos = frame.number / frame.stream.fps.to_f
    printf("\r[%s] %0.03f fps, frame: %d, pts %d, pos: %s",
            format_seconds(now - @first), fps, frame.number, frame.pts, 
            format_seconds(pos))
    @last = now
  end
end

# open our video file
reader = Libav::Reader.new(ARGV[0])
reader.dump_format

# Find the first video stream
reader.streams.each { |s| s.discard == :all }
stream = reader.default_stream
stream.discard = :default
# stream.buffer_size = 2
stream.each_frame { |frame| spin frame}

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ffi-libav-0.3.0 examples/read_file.rb
ffi-libav-0.2.0 examples/read_file.rb
ffi-libav-0.1.0 examples/read_file.rb