jwthumbs 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +94 -0
- data/Rakefile +1 -0
- data/fixtures/iki_dakka.mp4 +0 -0
- data/jwthumbs.gemspec +24 -0
- data/lib/jwthumbs/version.rb +3 -0
- data/lib/jwthumbs.rb +19 -0
- data/lib/movie.rb +36 -0
- data/lib/shutter.rb +66 -0
- data/lib/vtt.rb +63 -0
- data/logs/origin.20140130_131528.log +65 -0
- data/logs/origin.20140130_133809.log +67 -0
- data/logs/origin.20140130_133858.log +67 -0
- data/spec/jwthumbs_spec.rb +72 -0
- data/spec/spec_helper.rb +21 -0
- metadata +110 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 5876c6963e6df7b78a4aaf8a3889dedc0b9e50be
|
|
4
|
+
data.tar.gz: 7a255034e3cedd695e0e56b09427887339a4913f
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: fc8b3eb567b6e9329caa4a343badd5c0d2b8b81b39e149d67fd2575b955dfc01d2077963a7797ede9d5d05b2fa6010fbebbbb461afbbabe45371b05e44a59324
|
|
7
|
+
data.tar.gz: 9a2ab54410723e29536589eac4dc447e76f97740624cbae085679177b602a7b3c52989f13f27494b2c8913fd6216c70be9ecb9a1b1e33ff27801b86da7e903ed
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.ruby-gemset
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
jwthumbs
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.0.0-p353
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2014 scary.mac
|
|
2
|
+
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# JWthumbs
|
|
2
|
+
|
|
3
|
+
Want to add tooltip thumbnails to your JWPlayer or another HTML5 video player? You're welcome!
|
|
4
|
+
|
|
5
|
+
JWthumbs is a Ruby gem to create a .VTT file and a sprite of thumbnails of a given video file (mp4, mpg, avi, mov and so on...). You can't create timeline thumnails easier than this. Heavily inspired by [vlanard](https://github.com/vlanard)'s great [Python script](https://github.com/vlanard/videoscripts).
|
|
6
|
+
|
|
7
|
+
## System requirements
|
|
8
|
+
|
|
9
|
+
In order to use JWthumbs, you must have [ffmpeg](http://www.ffmpeg.org/download.html) and [imagemagick](http://www.imagemagick.org/script/binary-releases.php) installed.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
Installation of JWthumbs is pretty straigt forward. Add this to your Gemfile:
|
|
15
|
+
|
|
16
|
+
gem 'jwthumbs'
|
|
17
|
+
|
|
18
|
+
And then:
|
|
19
|
+
|
|
20
|
+
$ bundle install
|
|
21
|
+
|
|
22
|
+
Or install it yourself as:
|
|
23
|
+
|
|
24
|
+
$ gem install jwthumbs
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
Instantiate your video file:
|
|
29
|
+
|
|
30
|
+
```ruby
|
|
31
|
+
movie = Jwthumbs::Movie.new("YOUR_VIDEO.mp4")
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`Jwthumbs::Movie.new` accepts second parameter as a `options` hash. You can configure several stuff at the same time you instantiate your video like this:
|
|
35
|
+
|
|
36
|
+
```ruby
|
|
37
|
+
movie = Jwthumbs::Movie.new("YOUR_VIDEO.mp4", seconds_between: 60, sprite_name: "my_sprite_name.jpg")
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
or after you instentiated your video, you can use `Jwthumbs::Movie` file to configure things:
|
|
41
|
+
|
|
42
|
+
```ruby
|
|
43
|
+
movie = Jwthumbs::Movie.new("YOUR_VIDEO.mp4")
|
|
44
|
+
movie.seconds_between = 60
|
|
45
|
+
movie.sprite_name = "my_sprite_name.jpg"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
and then to create your thumbnails and .VTT file just run this command.
|
|
50
|
+
|
|
51
|
+
```ruby
|
|
52
|
+
movie.create_thumbs!
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
If you haven't changed defaults, your `_sprite.jpg` and `_thumbs.vtt` file will be exportes to `output` directory of your root path.
|
|
57
|
+
|
|
58
|
+
"What will I do now?"
|
|
59
|
+
|
|
60
|
+
If you're using JWPlayer, there is a cool tutorial on their web site, see [Adding Tooltip Thumbnails](http://www.longtailvideo.com/support/jw-player/31778/adding-tooltip-thumbnails/)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
## Configuration
|
|
64
|
+
|
|
65
|
+
`:outdir` (string): The path you want your files to be exported. Example: /this/is/my/path
|
|
66
|
+
|
|
67
|
+
`:seconds_between` (integer): Time in seconds between each of snapshots to be taken. Default is video duration / 10.
|
|
68
|
+
|
|
69
|
+
`:thumb_width` (integer): Width of thumbnails that will be placed in the sprite of images. Bigger thumb width size means bigger sprite and bigger file size. Default is 100 which is also recommended.
|
|
70
|
+
|
|
71
|
+
`:vttfile` (string): Name of your .VTT file. Default is `file_name_thumbs.vtt`
|
|
72
|
+
|
|
73
|
+
`:spritefile` (string): Name of your sprite file. Default is `file_name_sprite.jpg`
|
|
74
|
+
|
|
75
|
+
`:clear_files` (true / false): Thumbnails should be deleted or not? Before creating sprite, number of snapshots will be taken from the video in respect of `:seconds_between` parameter. Sprite is created by `montage`ing those thumbnails into one file. So you may need to use thumbnails or you may not. Your choice. Default is `true`.
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## Contributing
|
|
79
|
+
|
|
80
|
+
Any kind of participation is welcomed.
|
|
81
|
+
|
|
82
|
+
1. Fork it
|
|
83
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
84
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
85
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
|
86
|
+
5. Create new Pull Request
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## Author, Licence and Permissions
|
|
90
|
+
|
|
91
|
+
scaryguy - 2014 - MIT
|
|
92
|
+
|
|
93
|
+
CAUTION: YOU CAN NOT USE THIS GEM IN APPLICATIONS HAVING ANY KIND OF INAPPROPRIATE CONTENT (see YouTube's [policy](http://www.youtube.com/yt/policyandsafety/policy.html) that I support).
|
|
94
|
+
|
data/Rakefile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
|
Binary file
|
data/jwthumbs.gemspec
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'jwthumbs/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "jwthumbs"
|
|
8
|
+
spec.version = Jwthumbs::VERSION
|
|
9
|
+
spec.authors = ["scary.mac"]
|
|
10
|
+
spec.email = ["soner2@gmail.com"]
|
|
11
|
+
spec.description = %q{A Ruby gem for creating a sprite of thumbnails and a .VTT file to use with JWPlayer and all other HTML5 video players.}
|
|
12
|
+
spec.summary = %q{Create thumb sprites with a .VTT file}
|
|
13
|
+
spec.homepage = "http://github.com/scaryguy/jwthumbs"
|
|
14
|
+
spec.license = "MIT"
|
|
15
|
+
|
|
16
|
+
spec.files = `git ls-files`.split($/)
|
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features|fixtures)/})
|
|
19
|
+
spec.require_paths = ["lib"]
|
|
20
|
+
|
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
|
22
|
+
spec.add_development_dependency "rake"
|
|
23
|
+
spec.add_development_dependency "rspec"
|
|
24
|
+
end
|
data/lib/jwthumbs.rb
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require "jwthumbs/version"
|
|
2
|
+
require 'movie'
|
|
3
|
+
require 'vtt'
|
|
4
|
+
require 'shutter'
|
|
5
|
+
require 'logger'
|
|
6
|
+
|
|
7
|
+
module Jwthumbs
|
|
8
|
+
def self.logger=(log)
|
|
9
|
+
@logger = log
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.logger
|
|
13
|
+
return @logger if @logger
|
|
14
|
+
logger = Logger.new(STDOUT)
|
|
15
|
+
logger.level = Logger::INFO
|
|
16
|
+
@logger = logger
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
data/lib/movie.rb
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'open3'
|
|
2
|
+
module Jwthumbs
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Movie
|
|
6
|
+
|
|
7
|
+
attr_reader :file_path, :duration
|
|
8
|
+
attr_accessor :outdir, :seconds_between, :thumb_width, :vttfile, :spritefile, :clear_files
|
|
9
|
+
|
|
10
|
+
def initialize(file_path=nil, options={})
|
|
11
|
+
raise Errno::ENOENT, "the file '#{file_path}' does not exist" unless File.exists?(file_path)
|
|
12
|
+
|
|
13
|
+
command = "ffprobe -i #{file_path} -show_format | grep duration"
|
|
14
|
+
output = Open3.popen3(command) { |stdin, stdout, stderr| stderr.read }
|
|
15
|
+
output[/Duration: (\d{2}):(\d{2}):(\d{2}\.\d{2})/]
|
|
16
|
+
@duration = ($1.to_i*60*60) + ($2.to_i*60) + $3.to_f
|
|
17
|
+
|
|
18
|
+
@file_path = file_path
|
|
19
|
+
@clear_files = options[:clear_files] ||= true
|
|
20
|
+
@seconds_between = options[:seconds_between] ||= @duration.to_i/10
|
|
21
|
+
@thumb_width = options[:thumb_width] ||= 100
|
|
22
|
+
@spritefile = options[:spritefile] ||= "#{File.basename(@file_path, File.extname(@file_path))}_sprite.jpg"
|
|
23
|
+
@vttfile_name = options[:vttfile_name] ||= "thumbs.vtt"
|
|
24
|
+
@outdir = options[:thumb_outdir] ||= "output/thumbs_#{Time.now.to_i.to_s}"
|
|
25
|
+
@vttfile = File.basename(@file_path, File.extname(@file_path))+"_"+@vttfile_name
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def create_thumbs!
|
|
30
|
+
Shutter.new(self)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
end
|
data/lib/shutter.rb
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
module Jwthumbs
|
|
2
|
+
class Shutter
|
|
3
|
+
attr_accessor :sprite
|
|
4
|
+
def initialize(movie)
|
|
5
|
+
@movie = movie
|
|
6
|
+
@sprite = @movie.outdir+"/"+@movie.spritefile
|
|
7
|
+
run
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
protected
|
|
11
|
+
|
|
12
|
+
def images
|
|
13
|
+
my_images = []
|
|
14
|
+
Dir.glob("#{@movie.outdir}/thumbnail*.jpg") do |image|
|
|
15
|
+
if image.include?("thumbnail001")
|
|
16
|
+
File.delete(image)
|
|
17
|
+
else
|
|
18
|
+
my_images.push(image)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
@images = my_images
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def run
|
|
25
|
+
take_snaps
|
|
26
|
+
process_images(images)
|
|
27
|
+
coords = get_geometry(@images.first)
|
|
28
|
+
gridsize = Math.sqrt(@images.length).ceil.to_i
|
|
29
|
+
gridsize = gridsize <= 0 ? 1 : gridsize
|
|
30
|
+
create_sprite(@movie.outdir, @movie.spritefile, coords, gridsize)
|
|
31
|
+
create_vtt(@movie, @movie.spritefile, @images.length, coords, gridsize)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def create_vtt(movie, spritefile, images_count, coords, gridsize)
|
|
35
|
+
Vtt.new(movie, spritefile, images_count, coords, gridsize)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def create_sprite(outdir, spritefile, coords, gridsize)
|
|
39
|
+
grid = "#{gridsize}x#{gridsize}"
|
|
40
|
+
cmd = "montage #{outdir}/thumbnail*.jpg -tile #{grid} -geometry #{coords} #{outdir}/#{spritefile}"
|
|
41
|
+
Jwthumbs.logger.info(system(cmd))
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def take_snaps
|
|
46
|
+
rate = "1/#{@movie.seconds_between}"
|
|
47
|
+
`mkdir -p #{@movie.outdir}`
|
|
48
|
+
cmd = "ffmpeg -i #{@movie.file_path} -f image2 -bt 20M -vf fps=#{rate} -aspect 16:9 #{@movie.outdir+"/thumbnail%03d.jpg"}"
|
|
49
|
+
Jwthumbs.logger.info(cmd)
|
|
50
|
+
system(cmd)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def process_images(images)
|
|
55
|
+
command ="mogrify -geometry #{@movie.thumb_width}x #{images.join(" ")}"
|
|
56
|
+
Jwthumbs.logger.info(command)
|
|
57
|
+
system(command)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def get_geometry(file)
|
|
62
|
+
`identify -format "%g" #{file}`.strip
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
end
|
data/lib/vtt.rb
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
module Jwthumbs
|
|
2
|
+
class Vtt
|
|
3
|
+
|
|
4
|
+
def initialize(movie, spritefile, images_count, coords, gridsize)
|
|
5
|
+
@movie = movie
|
|
6
|
+
create(movie, spritefile, images_count, coords, gridsize)
|
|
7
|
+
clear_files if @movie.clear_files
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def create(movie, spritefile, images_count, coords, gridsize)
|
|
11
|
+
whxy = coords.split(/\+([^.]*)$/)
|
|
12
|
+
w,h = whxy.first.split("x").map {|x| x.to_i}
|
|
13
|
+
x,y = whxy.last.split("+").map {|x| x.to_i}
|
|
14
|
+
thumb_rate = movie.seconds_between
|
|
15
|
+
count = images_count
|
|
16
|
+
|
|
17
|
+
vtt = ["WEBVTT",""]
|
|
18
|
+
clipstart = 0
|
|
19
|
+
clipend = clipstart + thumb_rate
|
|
20
|
+
|
|
21
|
+
count.times do |x|
|
|
22
|
+
x = x+1
|
|
23
|
+
xywh = get_grid_coordinates(x,gridsize,w,h)
|
|
24
|
+
start = get_time_str(clipstart)
|
|
25
|
+
clip_end = get_time_str(clipend)
|
|
26
|
+
vtt.push("#{start} --> #{clip_end}")
|
|
27
|
+
vtt.push("#{spritefile}#xywh=#{xywh}")
|
|
28
|
+
vtt.push("")
|
|
29
|
+
clipstart = clipend
|
|
30
|
+
clipend = clipend + thumb_rate
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
vtt_path = movie.outdir+"/"+movie.vttfile
|
|
34
|
+
File.open(vtt_path, 'w+') do |f|
|
|
35
|
+
f.write(vtt.join("\n"))
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
protected
|
|
41
|
+
|
|
42
|
+
def clear_files
|
|
43
|
+
Dir.glob("#{@movie.outdir}/thumbnail*.jpg") do |image|
|
|
44
|
+
|
|
45
|
+
File.delete(image)
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def get_time_str(clipstart)
|
|
51
|
+
Time.at(clipstart).gmtime.strftime('%H:%M:%S')
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def get_grid_coordinates(image_index,gridsize,w,h)
|
|
55
|
+
y = (image_index - 1)/gridsize
|
|
56
|
+
x = (image_index -1) - (y * gridsize)
|
|
57
|
+
imgx = x * w
|
|
58
|
+
imgy =y * h
|
|
59
|
+
"#{imgx},#{imgy},#{w},#{h}"
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
Making dir: /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt
|
|
2
|
+
START [2014-01-30 13:15:28.569189] : ffmpeg -i fixtures/iki_dakka.mp4 -f image2 -bt 20M -vf fps=1/45 -aspect 16:9 /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv%03d.jpg
|
|
3
|
+
END [2014-01-30 13:15:29.366560]
|
|
4
|
+
ffmpeg version 1.2 Copyright (c) 2000-2013 the FFmpeg developers
|
|
5
|
+
built on Mar 25 2013 18:12:13 with Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn)
|
|
6
|
+
configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
|
|
7
|
+
libavutil 52. 18.100 / 52. 18.100
|
|
8
|
+
libavcodec 54. 92.100 / 54. 92.100
|
|
9
|
+
libavformat 54. 63.104 / 54. 63.104
|
|
10
|
+
libavdevice 54. 3.103 / 54. 3.103
|
|
11
|
+
libavfilter 3. 42.103 / 3. 42.103
|
|
12
|
+
libswscale 2. 2.100 / 2. 2.100
|
|
13
|
+
libswresample 0. 17.102 / 0. 17.102
|
|
14
|
+
libpostproc 52. 2.100 / 52. 2.100
|
|
15
|
+
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'fixtures/iki_dakka.mp4':
|
|
16
|
+
Metadata:
|
|
17
|
+
major_brand : isom
|
|
18
|
+
minor_version : 512
|
|
19
|
+
compatible_brands: isomiso2avc1mp41
|
|
20
|
+
encoder : Lavf54.63.104
|
|
21
|
+
Duration: 00:02:00.04, start: 0.000000, bitrate: 555 kb/s
|
|
22
|
+
Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 480x270 [SAR 1:1 DAR 16:9], 423 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
|
|
23
|
+
Metadata:
|
|
24
|
+
handler_name : VideoHandler
|
|
25
|
+
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s
|
|
26
|
+
Metadata:
|
|
27
|
+
handler_name : SoundHandler
|
|
28
|
+
Output #0, image2, to '/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv%03d.jpg':
|
|
29
|
+
Metadata:
|
|
30
|
+
major_brand : isom
|
|
31
|
+
minor_version : 512
|
|
32
|
+
compatible_brands: isomiso2avc1mp41
|
|
33
|
+
encoder : Lavf54.63.104
|
|
34
|
+
Stream #0:0(eng): Video: mjpeg, yuvj420p, 480x270 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 0.02 tbc
|
|
35
|
+
Metadata:
|
|
36
|
+
handler_name : VideoHandler
|
|
37
|
+
Stream mapping:
|
|
38
|
+
Stream #0:0 -> #0:0 (h264 -> mjpeg)
|
|
39
|
+
Press [q] to stop, [?] for help
|
|
40
|
+
frame= 2 fps=0.0 q=0.0 size=N/A time=00:00:45.00 bitrate=N/A
|
|
41
|
+
video:71kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.030210%
|
|
42
|
+
|
|
43
|
+
Removing first image, unneeded
|
|
44
|
+
3 thumbs written in /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt
|
|
45
|
+
START [2014-01-30 13:15:29.367549] : sips --resampleWidth 100 /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv002.jpg /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv003.jpg /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv004.jpg
|
|
46
|
+
END [2014-01-30 13:15:29.386639]
|
|
47
|
+
<CGColor 0x7fa070c10060> [<CGColorSpace 0x7fa070c0eca0> (kCGColorSpaceDeviceRGB)] ( 0 0 0 1 )
|
|
48
|
+
<CGColor 0x7fa070c159c0> [<CGColorSpace 0x7fa070c0eca0> (kCGColorSpaceDeviceRGB)] ( 0 0 0 1 )
|
|
49
|
+
<CGColor 0x7fa070f014b0> [<CGColorSpace 0x7fa070c0eca0> (kCGColorSpaceDeviceRGB)] ( 0 0 0 1 )
|
|
50
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv002.jpg
|
|
51
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv002.jpg
|
|
52
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv003.jpg
|
|
53
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv003.jpg
|
|
54
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv004.jpg
|
|
55
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv004.jpg
|
|
56
|
+
|
|
57
|
+
START [2014-01-30 13:15:29.386955] : identify -format "%g - %f
|
|
58
|
+
" /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv002.jpg
|
|
59
|
+
END [2014-01-30 13:15:29.393838]
|
|
60
|
+
100x56+0+0 - tv002.jpg
|
|
61
|
+
|
|
62
|
+
START [2014-01-30 13:15:29.394285] : montage /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv*.jpg -tile 2x2 -geometry 100x56+0+0 /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/iki_dakka_sprite.jpg
|
|
63
|
+
END [2014-01-30 13:15:29.407703]
|
|
64
|
+
|
|
65
|
+
Wrote: /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/iki_dakka_thumbs.vtt
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
Making dir: /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt
|
|
2
|
+
START [2014-01-30 13:38:09.673204] : ffmpeg -i fixtures/iki_dakka.mp4 -f image2 -bt 20M -vf fps=1/45 -aspect 16:9 /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv%03d.jpg
|
|
3
|
+
END [2014-01-30 13:38:10.461779]
|
|
4
|
+
ffmpeg version 1.2 Copyright (c) 2000-2013 the FFmpeg developers
|
|
5
|
+
built on Mar 25 2013 18:12:13 with Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn)
|
|
6
|
+
configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
|
|
7
|
+
libavutil 52. 18.100 / 52. 18.100
|
|
8
|
+
libavcodec 54. 92.100 / 54. 92.100
|
|
9
|
+
libavformat 54. 63.104 / 54. 63.104
|
|
10
|
+
libavdevice 54. 3.103 / 54. 3.103
|
|
11
|
+
libavfilter 3. 42.103 / 3. 42.103
|
|
12
|
+
libswscale 2. 2.100 / 2. 2.100
|
|
13
|
+
libswresample 0. 17.102 / 0. 17.102
|
|
14
|
+
libpostproc 52. 2.100 / 52. 2.100
|
|
15
|
+
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'fixtures/iki_dakka.mp4':
|
|
16
|
+
Metadata:
|
|
17
|
+
major_brand : isom
|
|
18
|
+
minor_version : 512
|
|
19
|
+
compatible_brands: isomiso2avc1mp41
|
|
20
|
+
encoder : Lavf54.63.104
|
|
21
|
+
Duration: 00:02:00.04, start: 0.000000, bitrate: 555 kb/s
|
|
22
|
+
Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 480x270 [SAR 1:1 DAR 16:9], 423 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
|
|
23
|
+
Metadata:
|
|
24
|
+
handler_name : VideoHandler
|
|
25
|
+
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s
|
|
26
|
+
Metadata:
|
|
27
|
+
handler_name : SoundHandler
|
|
28
|
+
Output #0, image2, to '/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv%03d.jpg':
|
|
29
|
+
Metadata:
|
|
30
|
+
major_brand : isom
|
|
31
|
+
minor_version : 512
|
|
32
|
+
compatible_brands: isomiso2avc1mp41
|
|
33
|
+
encoder : Lavf54.63.104
|
|
34
|
+
Stream #0:0(eng): Video: mjpeg, yuvj420p, 480x270 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 0.02 tbc
|
|
35
|
+
Metadata:
|
|
36
|
+
handler_name : VideoHandler
|
|
37
|
+
Stream mapping:
|
|
38
|
+
Stream #0:0 -> #0:0 (h264 -> mjpeg)
|
|
39
|
+
Press [q] to stop, [?] for help
|
|
40
|
+
frame= 2 fps=0.0 q=0.0 size=N/A time=00:00:45.00 bitrate=N/A
|
|
41
|
+
video:71kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.030210%
|
|
42
|
+
|
|
43
|
+
4 thumbs written in /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt
|
|
44
|
+
START [2014-01-30 13:38:10.462666] : sips --resampleWidth 100 /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv001.jpg /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv002.jpg /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv003.jpg /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv004.jpg
|
|
45
|
+
END [2014-01-30 13:38:10.480625]
|
|
46
|
+
<CGColor 0x7ffd11d034e0> [<CGColorSpace 0x7ffd11d02180> (kCGColorSpaceDeviceRGB)] ( 0 0 0 1 )
|
|
47
|
+
<CGColor 0x7ffd13007b50> [<CGColorSpace 0x7ffd11d02180> (kCGColorSpaceDeviceRGB)] ( 0 0 0 1 )
|
|
48
|
+
<CGColor 0x7ffd11c0cac0> [<CGColorSpace 0x7ffd11d02180> (kCGColorSpaceDeviceRGB)] ( 0 0 0 1 )
|
|
49
|
+
<CGColor 0x7ffd11d04230> [<CGColorSpace 0x7ffd11d02180> (kCGColorSpaceDeviceRGB)] ( 0 0 0 1 )
|
|
50
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv001.jpg
|
|
51
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv001.jpg
|
|
52
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv002.jpg
|
|
53
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv002.jpg
|
|
54
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv003.jpg
|
|
55
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv003.jpg
|
|
56
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv004.jpg
|
|
57
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv004.jpg
|
|
58
|
+
|
|
59
|
+
START [2014-01-30 13:38:10.480967] : identify -format "%g - %f
|
|
60
|
+
" /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv001.jpg
|
|
61
|
+
END [2014-01-30 13:38:10.487670]
|
|
62
|
+
100x56+0+0 - tv001.jpg
|
|
63
|
+
|
|
64
|
+
START [2014-01-30 13:38:10.487948] : montage /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv*.jpg -tile 2x2 -geometry 100x56+0+0 /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/iki_dakka_sprite.jpg
|
|
65
|
+
END [2014-01-30 13:38:10.501937]
|
|
66
|
+
|
|
67
|
+
Wrote: /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/iki_dakka_thumbs.vtt
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
Making dir: /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt
|
|
2
|
+
START [2014-01-30 13:38:58.534791] : ffmpeg -i fixtures/iki_dakka.mp4 -f image2 -bt 20M -vf fps=1/45 -aspect 16:9 /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv%03d.jpg
|
|
3
|
+
END [2014-01-30 13:38:59.334542]
|
|
4
|
+
ffmpeg version 1.2 Copyright (c) 2000-2013 the FFmpeg developers
|
|
5
|
+
built on Mar 25 2013 18:12:13 with Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn)
|
|
6
|
+
configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
|
|
7
|
+
libavutil 52. 18.100 / 52. 18.100
|
|
8
|
+
libavcodec 54. 92.100 / 54. 92.100
|
|
9
|
+
libavformat 54. 63.104 / 54. 63.104
|
|
10
|
+
libavdevice 54. 3.103 / 54. 3.103
|
|
11
|
+
libavfilter 3. 42.103 / 3. 42.103
|
|
12
|
+
libswscale 2. 2.100 / 2. 2.100
|
|
13
|
+
libswresample 0. 17.102 / 0. 17.102
|
|
14
|
+
libpostproc 52. 2.100 / 52. 2.100
|
|
15
|
+
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'fixtures/iki_dakka.mp4':
|
|
16
|
+
Metadata:
|
|
17
|
+
major_brand : isom
|
|
18
|
+
minor_version : 512
|
|
19
|
+
compatible_brands: isomiso2avc1mp41
|
|
20
|
+
encoder : Lavf54.63.104
|
|
21
|
+
Duration: 00:02:00.04, start: 0.000000, bitrate: 555 kb/s
|
|
22
|
+
Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 480x270 [SAR 1:1 DAR 16:9], 423 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
|
|
23
|
+
Metadata:
|
|
24
|
+
handler_name : VideoHandler
|
|
25
|
+
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s
|
|
26
|
+
Metadata:
|
|
27
|
+
handler_name : SoundHandler
|
|
28
|
+
Output #0, image2, to '/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv%03d.jpg':
|
|
29
|
+
Metadata:
|
|
30
|
+
major_brand : isom
|
|
31
|
+
minor_version : 512
|
|
32
|
+
compatible_brands: isomiso2avc1mp41
|
|
33
|
+
encoder : Lavf54.63.104
|
|
34
|
+
Stream #0:0(eng): Video: mjpeg, yuvj420p, 480x270 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 0.02 tbc
|
|
35
|
+
Metadata:
|
|
36
|
+
handler_name : VideoHandler
|
|
37
|
+
Stream mapping:
|
|
38
|
+
Stream #0:0 -> #0:0 (h264 -> mjpeg)
|
|
39
|
+
Press [q] to stop, [?] for help
|
|
40
|
+
frame= 2 fps=0.0 q=0.0 size=N/A time=00:00:45.00 bitrate=N/A
|
|
41
|
+
video:71kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.030210%
|
|
42
|
+
|
|
43
|
+
4 thumbs written in /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt
|
|
44
|
+
START [2014-01-30 13:38:59.335400] : sips --resampleWidth 100 /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv001.jpg /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv002.jpg /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv003.jpg /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv004.jpg
|
|
45
|
+
END [2014-01-30 13:38:59.354598]
|
|
46
|
+
<CGColor 0x7fcdde002a30> [<CGColorSpace 0x7fcdde0016c0> (kCGColorSpaceDeviceRGB)] ( 0 0 0 1 )
|
|
47
|
+
<CGColor 0x7fcddbf048d0> [<CGColorSpace 0x7fcdde0016c0> (kCGColorSpaceDeviceRGB)] ( 0 0 0 1 )
|
|
48
|
+
<CGColor 0x7fcddbd009c0> [<CGColorSpace 0x7fcdde0016c0> (kCGColorSpaceDeviceRGB)] ( 0 0 0 1 )
|
|
49
|
+
<CGColor 0x7fcddbc0e650> [<CGColorSpace 0x7fcdde0016c0> (kCGColorSpaceDeviceRGB)] ( 0 0 0 1 )
|
|
50
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv001.jpg
|
|
51
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv001.jpg
|
|
52
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv002.jpg
|
|
53
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv002.jpg
|
|
54
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv003.jpg
|
|
55
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv003.jpg
|
|
56
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv004.jpg
|
|
57
|
+
/Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv004.jpg
|
|
58
|
+
|
|
59
|
+
START [2014-01-30 13:38:59.354965] : identify -format "%g - %f
|
|
60
|
+
" /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv001.jpg
|
|
61
|
+
END [2014-01-30 13:38:59.361772]
|
|
62
|
+
100x56+0+0 - tv001.jpg
|
|
63
|
+
|
|
64
|
+
START [2014-01-30 13:38:59.362108] : montage /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/tv*.jpg -tile 2x2 -geometry 100x56+0+0 /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/iki_dakka_sprite.jpg
|
|
65
|
+
END [2014-01-30 13:38:59.376215]
|
|
66
|
+
|
|
67
|
+
Wrote: /Users/scaryguy/gems/jwthumbs/thumbs/iki_dakka_vtt/iki_dakka_thumbs.vtt
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
require 'jwthumbs'
|
|
2
|
+
require 'spec_helper.rb'
|
|
3
|
+
|
|
4
|
+
describe "Initialization" do
|
|
5
|
+
|
|
6
|
+
describe "Check for file_path arguement" do
|
|
7
|
+
subject(:movie) { Jwthumbs::Movie.new("fixtures/iki_dakka.mp4") }
|
|
8
|
+
its(:file_path) { should == "fixtures/iki_dakka.mp4"}
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe "Checks for file existance" do
|
|
12
|
+
it { expect { Jwthumbs::Movie.new("fixtures/ergerge.mp4") }.to raise_error Errno::ENOENT }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "spritefile name" do
|
|
16
|
+
subject(:movie) { Jwthumbs::Movie.new("fixtures/iki_dakka.mp4") }
|
|
17
|
+
its(:spritefile) { should == movie.spritefile}
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe "vttfile name" do
|
|
21
|
+
subject(:movie) { Jwthumbs::Movie.new("fixtures/iki_dakka.mp4") }
|
|
22
|
+
its(:vttfile) { should == movie.vttfile}
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "check for outdir " do
|
|
26
|
+
subject(:movie) { Jwthumbs::Movie.new("fixtures/iki_dakka.mp4") }
|
|
27
|
+
its(:outdir) { should == "output/thumbs_#{Time.now.to_i.to_s}"}
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
describe "File progresses" do
|
|
33
|
+
|
|
34
|
+
before(:all) do
|
|
35
|
+
@movie = Jwthumbs::Movie.new("fixtures/iki_dakka.mp4")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
let!(:outdir) { @movie.outdir}
|
|
39
|
+
subject!(:shutter) { @movie.create_thumbs! }
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
describe "Shutter" do
|
|
43
|
+
|
|
44
|
+
describe "should create output dir" do
|
|
45
|
+
it { expect(File.directory?("output")).to eq true}
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe "should create outdir" do
|
|
49
|
+
it { expect(File.directory?(outdir)).to eq true}
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
describe "should create thumbs" do
|
|
53
|
+
it { expect(Dir[outdir].empty?).to eq false}
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
describe "should create sprite image" do
|
|
57
|
+
it { expect(File.exists?("#{outdir}/#{@movie.spritefile}")).to eq true}
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
describe "VTT progresses" do
|
|
64
|
+
|
|
65
|
+
describe "should create vtt file" do
|
|
66
|
+
it { expect(File.file?("#{outdir}/#{@movie.spritefile}")).to eq true}
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
|
3
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
|
4
|
+
# loaded once.
|
|
5
|
+
#
|
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
|
7
|
+
RSpec.configure do |config|
|
|
8
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
|
9
|
+
config.run_all_when_everything_filtered = true
|
|
10
|
+
config.filter_run :focus
|
|
11
|
+
|
|
12
|
+
# Run specs in random order to surface order dependencies. If you find an
|
|
13
|
+
# order dependency and want to debug it, you can fix the order by providing
|
|
14
|
+
# the seed, which is printed after each run.
|
|
15
|
+
# --seed 1234
|
|
16
|
+
config.order = 'random'
|
|
17
|
+
|
|
18
|
+
config.after do
|
|
19
|
+
FileUtils.rm_rf(Dir["output"])
|
|
20
|
+
end
|
|
21
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: jwthumbs
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- scary.mac
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2014-01-31 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ~>
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.3'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ~>
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.3'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - '>='
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - '>='
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rspec
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - '>='
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - '>='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
description: A Ruby gem for creating a sprite of thumbnails and a .VTT file to use
|
|
56
|
+
with JWPlayer and all other HTML5 video players.
|
|
57
|
+
email:
|
|
58
|
+
- soner2@gmail.com
|
|
59
|
+
executables: []
|
|
60
|
+
extensions: []
|
|
61
|
+
extra_rdoc_files: []
|
|
62
|
+
files:
|
|
63
|
+
- .gitignore
|
|
64
|
+
- .rspec
|
|
65
|
+
- .ruby-gemset
|
|
66
|
+
- .ruby-version
|
|
67
|
+
- Gemfile
|
|
68
|
+
- LICENSE.txt
|
|
69
|
+
- README.md
|
|
70
|
+
- Rakefile
|
|
71
|
+
- fixtures/iki_dakka.mp4
|
|
72
|
+
- jwthumbs.gemspec
|
|
73
|
+
- lib/jwthumbs.rb
|
|
74
|
+
- lib/jwthumbs/version.rb
|
|
75
|
+
- lib/movie.rb
|
|
76
|
+
- lib/shutter.rb
|
|
77
|
+
- lib/vtt.rb
|
|
78
|
+
- logs/origin.20140130_131528.log
|
|
79
|
+
- logs/origin.20140130_133809.log
|
|
80
|
+
- logs/origin.20140130_133858.log
|
|
81
|
+
- spec/jwthumbs_spec.rb
|
|
82
|
+
- spec/spec_helper.rb
|
|
83
|
+
homepage: http://github.com/scaryguy/jwthumbs
|
|
84
|
+
licenses:
|
|
85
|
+
- MIT
|
|
86
|
+
metadata: {}
|
|
87
|
+
post_install_message:
|
|
88
|
+
rdoc_options: []
|
|
89
|
+
require_paths:
|
|
90
|
+
- lib
|
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - '>='
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '0'
|
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
|
+
requirements:
|
|
98
|
+
- - '>='
|
|
99
|
+
- !ruby/object:Gem::Version
|
|
100
|
+
version: '0'
|
|
101
|
+
requirements: []
|
|
102
|
+
rubyforge_project:
|
|
103
|
+
rubygems_version: 2.1.11
|
|
104
|
+
signing_key:
|
|
105
|
+
specification_version: 4
|
|
106
|
+
summary: Create thumb sprites with a .VTT file
|
|
107
|
+
test_files:
|
|
108
|
+
- fixtures/iki_dakka.mp4
|
|
109
|
+
- spec/jwthumbs_spec.rb
|
|
110
|
+
- spec/spec_helper.rb
|