abrizer 0.1.0

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.
Files changed (77) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.travis.yml +5 -0
  4. data/Gemfile +6 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +91 -0
  7. data/Rakefile +10 -0
  8. data/Vagrantfile +76 -0
  9. data/abrizer.gemspec +31 -0
  10. data/ansible/development-playbook.retry +1 -0
  11. data/ansible/development-playbook.yml +19 -0
  12. data/ansible/development.ini +2 -0
  13. data/ansible/roles/basic-setup/tasks/main.yml +39 -0
  14. data/ansible/roles/bento4/tasks/main.yml +14 -0
  15. data/ansible/roles/ffmpeg/defaults/main.yml +6 -0
  16. data/ansible/roles/ffmpeg/tasks/ff-libraries.yml +21 -0
  17. data/ansible/roles/ffmpeg/tasks/ffmpeg.yml +18 -0
  18. data/ansible/roles/ffmpeg/tasks/libfdk_aac.yml +19 -0
  19. data/ansible/roles/ffmpeg/tasks/libmp3lame.yml +20 -0
  20. data/ansible/roles/ffmpeg/tasks/libogg.yml +18 -0
  21. data/ansible/roles/ffmpeg/tasks/libopus.yml +20 -0
  22. data/ansible/roles/ffmpeg/tasks/libvorbis.yml +18 -0
  23. data/ansible/roles/ffmpeg/tasks/libvpx.yml +18 -0
  24. data/ansible/roles/ffmpeg/tasks/main.yml +80 -0
  25. data/ansible/roles/ffmpeg/tasks/x264.yml +18 -0
  26. data/ansible/roles/ffmpeg/tasks/x265.yml +14 -0
  27. data/ansible/roles/ffmpeg/tasks/yasm.yml +19 -0
  28. data/ansible/roles/franklinkim.environment/.clog.toml +4 -0
  29. data/ansible/roles/franklinkim.environment/.editorconfig +16 -0
  30. data/ansible/roles/franklinkim.environment/.gitignore +2 -0
  31. data/ansible/roles/franklinkim.environment/.travis.yml +17 -0
  32. data/ansible/roles/franklinkim.environment/CHANGELOG.md +14 -0
  33. data/ansible/roles/franklinkim.environment/LICENSE +22 -0
  34. data/ansible/roles/franklinkim.environment/Makefile +11 -0
  35. data/ansible/roles/franklinkim.environment/README.md +100 -0
  36. data/ansible/roles/franklinkim.environment/Vagrantfile +23 -0
  37. data/ansible/roles/franklinkim.environment/defaults/main.yml +13 -0
  38. data/ansible/roles/franklinkim.environment/meta/.galaxy_install_info +1 -0
  39. data/ansible/roles/franklinkim.environment/meta/main.yml +143 -0
  40. data/ansible/roles/franklinkim.environment/meta/readme.yml +11 -0
  41. data/ansible/roles/franklinkim.environment/tasks/config.yml +21 -0
  42. data/ansible/roles/franklinkim.environment/tasks/main.yml +8 -0
  43. data/ansible/roles/franklinkim.environment/tests/main.yml +8 -0
  44. data/ansible/roles/rvm_io.rvm1-ruby/.gitignore +6 -0
  45. data/ansible/roles/rvm_io.rvm1-ruby/.travis.yml +52 -0
  46. data/ansible/roles/rvm_io.rvm1-ruby/LICENSE +22 -0
  47. data/ansible/roles/rvm_io.rvm1-ruby/README.md +142 -0
  48. data/ansible/roles/rvm_io.rvm1-ruby/defaults/main.yml +44 -0
  49. data/ansible/roles/rvm_io.rvm1-ruby/meta/main.yml +21 -0
  50. data/ansible/roles/rvm_io.rvm1-ruby/tasks/main.yml +4 -0
  51. data/ansible/roles/rvm_io.rvm1-ruby/tasks/rubies.yml +78 -0
  52. data/ansible/roles/rvm_io.rvm1-ruby/tasks/rvm.yml +55 -0
  53. data/ansible/roles/rvm_io.rvm1-ruby/tests/inventory +1 -0
  54. data/ansible/roles/rvm_io.rvm1-ruby/tests/test.yml +14 -0
  55. data/ansible/roles/rvm_io.rvm1-ruby/vars/main.yml +22 -0
  56. data/bin/console +14 -0
  57. data/bin/setup +8 -0
  58. data/exe/abrizer +5 -0
  59. data/lib/abrizer/adaptation.rb +53 -0
  60. data/lib/abrizer/adaptation_finder.rb +59 -0
  61. data/lib/abrizer/all.rb +20 -0
  62. data/lib/abrizer/cleaner.rb +37 -0
  63. data/lib/abrizer/cli.rb +84 -0
  64. data/lib/abrizer/ffmpeg_processor.rb +59 -0
  65. data/lib/abrizer/ffprobe_informer.rb +69 -0
  66. data/lib/abrizer/filepath_helpers.rb +33 -0
  67. data/lib/abrizer/package_dash_bento.rb +35 -0
  68. data/lib/abrizer/package_dash_shaka.rb +49 -0
  69. data/lib/abrizer/package_hls_bento.rb +35 -0
  70. data/lib/abrizer/package_hls_shaka.rb +50 -0
  71. data/lib/abrizer/processor.rb +8 -0
  72. data/lib/abrizer/progressive_mp4.rb +37 -0
  73. data/lib/abrizer/progressive_vp9.rb +57 -0
  74. data/lib/abrizer/sprites.rb +24 -0
  75. data/lib/abrizer/version.rb +3 -0
  76. data/lib/abrizer.rb +22 -0
  77. metadata +232 -0
@@ -0,0 +1,33 @@
1
+ module Abrizer
2
+ module FilepathHelpers
3
+ def audio_filepath
4
+ File.join output_directory, "#{basename}-audio.m4a"
5
+ end
6
+
7
+ def audio_filepath_fragmented
8
+ File.join output_directory, "#{basename}-audio-frag.m4a"
9
+ end
10
+
11
+ def webvtt_input_filepath
12
+ File.join filename_directory, "#{basename}.vtt"
13
+ end
14
+
15
+ def output_directory
16
+ if @output_directory
17
+ @output_directory
18
+ else
19
+ File.join filename_directory, basename
20
+ end
21
+ end
22
+
23
+ def filename_directory
24
+ File.dirname @filename
25
+ end
26
+
27
+ # TODO: don't assume all incoming files will be .mp4
28
+ def basename
29
+ extname = File.extname @filename
30
+ File.basename @filename, extname
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,35 @@
1
+ module Abrizer
2
+ class PackageDashBento
3
+
4
+ include FilepathHelpers
5
+
6
+ def initialize(filename, output_dir=nil)
7
+ @filename = filename
8
+ @output_directory = output_dir
9
+ @adaptations = Abrizer::AdaptationFinder.new(@filename).adaptations
10
+ end
11
+
12
+ def package
13
+ # Must change to output directory so this all works as intended
14
+ Dir.chdir output_directory
15
+ `#{bento_cmd}`
16
+ end
17
+
18
+ def video_inputs
19
+ @adaptations.map do |adaptation|
20
+ adaptation.filepath_fragmented(@filename, output_directory)
21
+ end
22
+ end
23
+
24
+ def bento_cmd
25
+ cmd = %Q|mp4dash --output-dir=fmp4 --force --use-segment-template-number-padding --profiles=live --hls |
26
+ if File.exist? webvtt_input_filepath
27
+ cmd += %Q| [+format=webvtt,+language=eng]#{webvtt_input_filepath} |
28
+ end
29
+ cmd += %Q| #{video_inputs.join(' ')} [+language=eng]#{audio_filepath_fragmented} |
30
+ puts cmd
31
+ cmd
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,49 @@
1
+ module Abrizer
2
+ class PackageDashShaka
3
+
4
+ include FilepathHelpers
5
+
6
+ def initialize(filename, output_dir=nil)
7
+ @filename = filename
8
+ @adaptations = Abrizer::AdaptationFinder.new(@filename).adaptations
9
+ end
10
+
11
+ def package
12
+ make_directory
13
+ Dir.chdir output_directory
14
+ `#{shaka_cmd}`
15
+ end
16
+
17
+ def video_inputs
18
+ @adaptations.map do |adaptation|
19
+ filepath = adaptation.filepath(@filename)
20
+ adaptation_basename = File.basename filepath, '.mp4'
21
+ output_filename = File.join 'dash', "#{adaptation_basename}-dash.mp4"
22
+ %Q|"input=#{filepath},stream=video,output=#{output_filename}"|
23
+ end
24
+ end
25
+
26
+ def audio_input
27
+ dash_audio_filename = File.join 'dash', "#{basename}-audio-dash.m4a"
28
+ "input=#{audio_filepath},stream=audio,output=#{dash_audio_filename}"
29
+ end
30
+
31
+ def mpd_filename
32
+ File.join 'dash', "#{basename}.mpd"
33
+ end
34
+
35
+ def shaka_cmd
36
+ %Q|shaka-packager #{video_inputs.join(' ')} #{audio_input} --profile on-demand --mpd_output #{mpd_filename}|
37
+ end
38
+
39
+ def make_directory
40
+ FileUtils.mkdir dash_directory unless File.exist? dash_directory
41
+ end
42
+
43
+ def dash_directory
44
+ File.join output_directory, 'dash'
45
+ end
46
+
47
+
48
+ end
49
+ end
@@ -0,0 +1,35 @@
1
+ module Abrizer
2
+ class PackageHlsBento
3
+
4
+ include FilepathHelpers
5
+
6
+ def initialize(filename, output_dir=nil)
7
+ @filename = filename
8
+ @output_directory = output_dir
9
+ @adaptations = Abrizer::AdaptationFinder.new(@filename).adaptations
10
+ end
11
+
12
+ def package
13
+ # Must change to output directory so this all works as intended
14
+ Dir.chdir output_directory
15
+ `#{bento_cmd}`
16
+ end
17
+
18
+ def video_inputs
19
+ @adaptations.map do |adaptation|
20
+ adaptation.filepath_fragmented(@filename, output_directory)
21
+ end
22
+ end
23
+
24
+ def bento_cmd
25
+ cmd = %Q|mp4hls --output-dir=hls --force --output-single-file |
26
+ if File.exist? webvtt_input_filepath
27
+ cmd += %Q| [+format=webvtt,+language=eng]#{webvtt_input_filepath} |
28
+ end
29
+ cmd += %Q| #{video_inputs.join(' ')} [+language=eng]#{audio_filepath_fragmented} |
30
+ puts cmd
31
+ cmd
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,50 @@
1
+ module Abrizer
2
+ class PackageHlsShaka
3
+
4
+ include FilepathHelpers
5
+
6
+ def initialize(filename, output_dir=nil)
7
+ @filename = filename
8
+ @adaptations = Abrizer::AdaptationFinder.new(@filename).adaptations
9
+ end
10
+
11
+ def package
12
+ make_directory
13
+ Dir.chdir hls_directory
14
+ `#{shaka_cmd}`
15
+ end
16
+
17
+ def video_inputs
18
+ @adaptations.map do |adaptation|
19
+ filepath = adaptation.filepath(@filename)
20
+ adaptation_basename = File.basename filepath, '.mp4'
21
+ segment_template = "#{adaptation_basename}-$Number$.ts"
22
+ adaptation_hls_playlist = "#{adaptation_basename}.m3u8"
23
+ %Q|'input=#{filepath},stream=video,segment_template=#{segment_template},playlist_name=#{adaptation_hls_playlist}'|
24
+ end
25
+ end
26
+
27
+ def audio_input
28
+ hls_audio_filename = "#{basename}-audio-$Number$.ts"
29
+ hls_audio_playlist = "#{basename}-audio.m3u8"
30
+ %Q| 'input=#{audio_filepath},stream=audio,segment_template=#{hls_audio_filename},playlist_name=#{hls_audio_playlist},hls_group_id=AUDIO,hls_name=ENGLISH' |
31
+ end
32
+
33
+ def mpd_filename
34
+ File.join 'dash', "#{basename}.mpd"
35
+ end
36
+
37
+ def shaka_cmd
38
+ %Q|shaka-packager #{video_inputs.join(' ')} #{audio_input} --single_segment=false --hls_master_playlist_output=#{basename}.m3u8|
39
+ end
40
+
41
+ def make_directory
42
+ FileUtils.mkdir hls_directory unless File.exist? hls_directory
43
+ end
44
+
45
+ def hls_directory
46
+ File.join output_directory, 'hls'
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,8 @@
1
+ module Abrizer
2
+ class Processor
3
+ def self.process(filename, output_dir=nil)
4
+ ffp = FfmpegProcessor.new(filename, output_dir)
5
+ ffp.process
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,37 @@
1
+ module Abrizer
2
+ class ProgressiveMp4
3
+
4
+ include FilepathHelpers
5
+
6
+ def initialize(filename, output_dir=nil)
7
+ @filename = filename
8
+ @output_directory = output_dir
9
+ find_adaptation
10
+ end
11
+
12
+ def create
13
+ `#{ffmpeg_cmd}`
14
+ end
15
+
16
+ def find_adaptation
17
+ adaptations = Abrizer::AdaptationFinder.new(@filename).adaptations
18
+ sorted = adaptations.sort_by do |adaptation|
19
+ adaptation.width
20
+ end
21
+ @adaptation = sorted[-2]
22
+ end
23
+
24
+ def input_video_filepath
25
+ @adaptation.filepath_fragmented(@filename, output_directory)
26
+ end
27
+
28
+ def ffmpeg_cmd
29
+ "ffmpeg -y -i #{input_video_filepath} -i #{audio_filepath_fragmented} -c:v copy -c:a copy #{static_filepath}"
30
+ end
31
+
32
+ def static_filepath
33
+ File.join output_directory, "progressive.mp4"
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,57 @@
1
+ module Abrizer
2
+ class ProgressiveVp9
3
+
4
+ include FilepathHelpers
5
+
6
+ def initialize(filename, output_dir=nil)
7
+ @filename = filename
8
+ @output_directory = output_dir
9
+ make_directory
10
+ Dir.chdir @output_directory
11
+ find_adaptation
12
+ end
13
+
14
+ def create
15
+ `#{ffmpeg_cmd_pass1}`
16
+ `#{ffmpeg_cmd_pass2}`
17
+ end
18
+
19
+ def make_directory
20
+ FileUtils.mkdir @output_directory unless File.exist? @output_directory
21
+ end
22
+
23
+ def find_adaptation
24
+ adaptations = Abrizer::AdaptationFinder.new(@filename).adaptations
25
+ sorted = adaptations.sort_by do |adaptation|
26
+ adaptation.width
27
+ end
28
+ @adaptation = sorted.last
29
+ end
30
+
31
+ # Since we are using the VP9 as a fallback we use half the bitrate
32
+ # we would use for an MP4 encode.
33
+ def bitrate
34
+ @adaptation.bitrate/2
35
+ end
36
+
37
+ def ffmpeg_cmd_pass1
38
+ "ffmpeg -y -i #{@filename} -c:v libvpx-vp9 -b:v #{bitrate}k -c:a libvorbis \
39
+ -vf scale='#{@adaptation.width}:trunc(#{@adaptation.width}/dar/2)*2',setsar=1 \
40
+ -speed 4 -tile-columns 6 -frame-parallel 1 \
41
+ -pass 1 -passlogfile ffmpeg2pass-webm -f webm /dev/null"
42
+ end
43
+
44
+ def ffmpeg_cmd_pass2
45
+ "ffmpeg -y -i #{@filename} -c:v libvpx-vp9 -b:v #{bitrate}k -c:a libvorbis \
46
+ -vf scale='#{@adaptation.width}:trunc(#{@adaptation.width}/dar/2)*2',setsar=1 \
47
+ -speed 1 -tile-columns 6 -frame-parallel 1 -auto-alt-ref 1 -lag-in-frames 25 \
48
+ -pass 2 -passlogfile ffmpeg2pass-webm -y #{static_filepath}"
49
+ end
50
+
51
+ def static_filepath
52
+ File.join output_directory, "progressive-vp9.webm"
53
+ end
54
+
55
+
56
+ end
57
+ end
@@ -0,0 +1,24 @@
1
+ module Abrizer
2
+ class Sprites
3
+
4
+ def initialize(filename, output_dir=nil)
5
+ @filename = filename
6
+ @output_directory = File.join output_dir, 'sprites'
7
+ # TODO: make video sprites options configurable
8
+ @options = {
9
+ seconds: 10,
10
+ width: 160,
11
+ columns: 4,
12
+ group: 20,
13
+ gif: false,
14
+ keep_images: true
15
+ }
16
+ end
17
+
18
+ def create
19
+ processor = VideoSprites::Processor.new(@filename, @output_directory, @options)
20
+ processor.process
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,3 @@
1
+ module Abrizer
2
+ VERSION = "0.1.0"
3
+ end
data/lib/abrizer.rb ADDED
@@ -0,0 +1,22 @@
1
+ require 'json'
2
+ require 'video_sprites'
3
+ require "abrizer/version"
4
+ require 'abrizer/filepath_helpers'
5
+ require 'abrizer/package_dash_shaka'
6
+ require 'abrizer/package_hls_shaka'
7
+ require 'abrizer/package_dash_bento'
8
+ require 'abrizer/package_hls_bento'
9
+ require 'abrizer/adaptation'
10
+ require 'abrizer/adaptation_finder'
11
+ require 'abrizer/ffmpeg_processor'
12
+ require 'abrizer/ffprobe_informer'
13
+ require 'abrizer/processor'
14
+ require 'abrizer/cleaner'
15
+ require 'abrizer/progressive_mp4'
16
+ require 'abrizer/progressive_vp9'
17
+ require 'abrizer/sprites'
18
+ require 'abrizer/all'
19
+
20
+ module Abrizer
21
+ # Your code goes here...
22
+ end
metadata ADDED
@@ -0,0 +1,232 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: abrizer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jason Ronallo
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-01-29 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.12'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.12'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: colorize
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler-audit
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: thor
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: json
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: video_sprites
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 0.2.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 0.2.0
125
+ description: Creates adaptive bitrate streams and other delivery derivatives.
126
+ email:
127
+ - jronallo@gmail.com
128
+ executables:
129
+ - abrizer
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - ".gitignore"
134
+ - ".travis.yml"
135
+ - Gemfile
136
+ - LICENSE.txt
137
+ - README.md
138
+ - Rakefile
139
+ - Vagrantfile
140
+ - abrizer.gemspec
141
+ - ansible/development-playbook.retry
142
+ - ansible/development-playbook.yml
143
+ - ansible/development.ini
144
+ - ansible/roles/basic-setup/tasks/main.yml
145
+ - ansible/roles/bento4/tasks/main.yml
146
+ - ansible/roles/ffmpeg/defaults/main.yml
147
+ - ansible/roles/ffmpeg/tasks/ff-libraries.yml
148
+ - ansible/roles/ffmpeg/tasks/ffmpeg.yml
149
+ - ansible/roles/ffmpeg/tasks/libfdk_aac.yml
150
+ - ansible/roles/ffmpeg/tasks/libmp3lame.yml
151
+ - ansible/roles/ffmpeg/tasks/libogg.yml
152
+ - ansible/roles/ffmpeg/tasks/libopus.yml
153
+ - ansible/roles/ffmpeg/tasks/libvorbis.yml
154
+ - ansible/roles/ffmpeg/tasks/libvpx.yml
155
+ - ansible/roles/ffmpeg/tasks/main.yml
156
+ - ansible/roles/ffmpeg/tasks/x264.yml
157
+ - ansible/roles/ffmpeg/tasks/x265.yml
158
+ - ansible/roles/ffmpeg/tasks/yasm.yml
159
+ - ansible/roles/franklinkim.environment/.clog.toml
160
+ - ansible/roles/franklinkim.environment/.editorconfig
161
+ - ansible/roles/franklinkim.environment/.gitignore
162
+ - ansible/roles/franklinkim.environment/.travis.yml
163
+ - ansible/roles/franklinkim.environment/CHANGELOG.md
164
+ - ansible/roles/franklinkim.environment/LICENSE
165
+ - ansible/roles/franklinkim.environment/Makefile
166
+ - ansible/roles/franklinkim.environment/README.md
167
+ - ansible/roles/franklinkim.environment/Vagrantfile
168
+ - ansible/roles/franklinkim.environment/defaults/main.yml
169
+ - ansible/roles/franklinkim.environment/meta/.galaxy_install_info
170
+ - ansible/roles/franklinkim.environment/meta/main.yml
171
+ - ansible/roles/franklinkim.environment/meta/readme.yml
172
+ - ansible/roles/franklinkim.environment/tasks/config.yml
173
+ - ansible/roles/franklinkim.environment/tasks/main.yml
174
+ - ansible/roles/franklinkim.environment/tests/main.yml
175
+ - ansible/roles/rvm_io.rvm1-ruby/.gitignore
176
+ - ansible/roles/rvm_io.rvm1-ruby/.travis.yml
177
+ - ansible/roles/rvm_io.rvm1-ruby/LICENSE
178
+ - ansible/roles/rvm_io.rvm1-ruby/README.md
179
+ - ansible/roles/rvm_io.rvm1-ruby/defaults/main.yml
180
+ - ansible/roles/rvm_io.rvm1-ruby/meta/main.yml
181
+ - ansible/roles/rvm_io.rvm1-ruby/tasks/main.yml
182
+ - ansible/roles/rvm_io.rvm1-ruby/tasks/rubies.yml
183
+ - ansible/roles/rvm_io.rvm1-ruby/tasks/rvm.yml
184
+ - ansible/roles/rvm_io.rvm1-ruby/tests/inventory
185
+ - ansible/roles/rvm_io.rvm1-ruby/tests/test.yml
186
+ - ansible/roles/rvm_io.rvm1-ruby/vars/main.yml
187
+ - bin/console
188
+ - bin/setup
189
+ - exe/abrizer
190
+ - lib/abrizer.rb
191
+ - lib/abrizer/adaptation.rb
192
+ - lib/abrizer/adaptation_finder.rb
193
+ - lib/abrizer/all.rb
194
+ - lib/abrizer/cleaner.rb
195
+ - lib/abrizer/cli.rb
196
+ - lib/abrizer/ffmpeg_processor.rb
197
+ - lib/abrizer/ffprobe_informer.rb
198
+ - lib/abrizer/filepath_helpers.rb
199
+ - lib/abrizer/package_dash_bento.rb
200
+ - lib/abrizer/package_dash_shaka.rb
201
+ - lib/abrizer/package_hls_bento.rb
202
+ - lib/abrizer/package_hls_shaka.rb
203
+ - lib/abrizer/processor.rb
204
+ - lib/abrizer/progressive_mp4.rb
205
+ - lib/abrizer/progressive_vp9.rb
206
+ - lib/abrizer/sprites.rb
207
+ - lib/abrizer/version.rb
208
+ homepage: https://github.com/jronallo/abrizer
209
+ licenses:
210
+ - MIT
211
+ metadata: {}
212
+ post_install_message:
213
+ rdoc_options: []
214
+ require_paths:
215
+ - lib
216
+ required_ruby_version: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ required_rubygems_version: !ruby/object:Gem::Requirement
222
+ requirements:
223
+ - - ">="
224
+ - !ruby/object:Gem::Version
225
+ version: '0'
226
+ requirements: []
227
+ rubyforge_project:
228
+ rubygems_version: 2.5.2
229
+ signing_key:
230
+ specification_version: 4
231
+ summary: Creates MPEG-DASH and HLS streams from a video file.
232
+ test_files: []