Skip to content

Instantly share code, notes, and snippets.

@njvack
Last active August 29, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save njvack/9841889 to your computer and use it in GitHub Desktop.
Save njvack/9841889 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
require 'tmpdir'
require 'fileutils'
fix_file = ARGV[0]
vid_file = ARGV[1]
out_file = ARGV[2]
FIXATION_FRAMES=10
VID_FRAMES=25
LAST_FRAME_REPS=25
frame_counter = 1
Dir.mktmpdir do |tmp_dir|
`ffmpeg -i #{vid_file} -vf "scale=960:720" -r #{VID_FRAMES} -vframes #{VID_FRAMES} #{tmp_dir}/frame_%3d.jpg`
new_dir = "#{tmp_dir}/new"
Dir.mkdir(new_dir)
(1..FIXATION_FRAMES).each do
FileUtils.cp(fix_file, "#{new_dir}/frame_%03d.jpg" % frame_counter)
frame_counter += 1
end
(1..VID_FRAMES).each do |i|
FileUtils.cp(("#{tmp_dir}/frame_%03d.jpg" % i), ("#{new_dir}/frame_%03d.jpg" % frame_counter))
frame_counter += 1
end
(1..LAST_FRAME_REPS).each do
FileUtils.cp(("#{tmp_dir}/frame_%03d.jpg" % VID_FRAMES), ("#{new_dir}/frame_%03d.jpg" % frame_counter))
frame_counter += 1
end
puts Dir.glob("#{new_dir}/*")
`ffmpeg -i #{new_dir}/frame_%3d.jpg -vcodec mpeg4 #{out_file}`
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment