Sha256: 587bd4fc3fb0789ceafd0e2a0560a5fb4ee8da4a7e6cd6fe4140d1a54b2097e8
Contents?: true
Size: 1.5 KB
Versions: 1
Compression:
Stored size: 1.5 KB
Contents
require 'streamio-ffmpeg' require 'fileutils' module WGif class Video attr_accessor :name, :clip, :logger def initialize(name, filepath) @name = name @clip = FFMPEG::Movie.new(filepath) FileUtils.mkdir_p '/tmp/wgif/' @logger = Logger.new("/tmp/wgif/#{name}.log") FFMPEG.logger = @logger end def trim(start_timestamp, duration) options = { audio_codec: 'copy', video_codec: 'copy', custom: "-ss #{start_timestamp} -t 00:00:#{'%06.3f' % duration}" } transcode(@clip, "/tmp/wgif/#{@name}-clip.mov", options) WGif::Video.new "#{@name}-clip", "/tmp/wgif/#{@name}-clip.mov" end def to_frames(options = {}) make_frame_dir if options[:frames] framerate = options[:frames] / @clip.duration else framerate = 24 end transcode(@clip, "/tmp/wgif/frames/\%2d.png", "-vf fps=#{framerate}") open_frame_dir end private def make_frame_dir FileUtils.rm Dir.glob('/tmp/wgif/frames/*.png') FileUtils.mkdir_p '/tmp/wgif/frames' end def open_frame_dir Dir.glob('/tmp/wgif/frames/*.png') end def transcode(clip, file, options) clip.transcode(file, options) rescue FFMPEG::Error => error unless error.message.include? 'no output file created' raise WGif::ClipEncodingException end if error.message.include? 'Invalid data found when processing input' raise WGif::ClipEncodingException end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
wgif-0.3.0 | lib/wgif/video.rb |