libis-format 0.9.38 → 0.9.39

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +13 -13
  3. data/data/types.yml +85 -9
  4. data/lib/libis/format.rb +1 -0
  5. data/lib/libis/format/config.rb +2 -0
  6. data/lib/libis/format/converter/audio_converter.rb +181 -0
  7. data/lib/libis/format/converter/video_converter.rb +194 -0
  8. data/lib/libis/format/ffmpeg.rb +41 -0
  9. data/lib/libis/format/identifier.rb +1 -0
  10. data/lib/libis/format/pdf_to_pdfa.rb +1 -3
  11. data/lib/libis/format/pdfa_validator.rb +1 -1
  12. data/lib/libis/format/version.rb +1 -1
  13. data/libis-format.gemspec +1 -0
  14. data/spec/converter_spec.rb +116 -20
  15. data/spec/data/audio/carlin_disappointed.aac +0 -0
  16. data/spec/data/audio/carlin_disappointed.ac3 +0 -0
  17. data/spec/data/audio/carlin_disappointed.aiff +0 -0
  18. data/spec/data/audio/carlin_disappointed.au +0 -0
  19. data/spec/data/audio/carlin_disappointed.flac +0 -0
  20. data/spec/data/audio/carlin_disappointed.m4a +0 -0
  21. data/spec/data/audio/carlin_disappointed.mka +0 -0
  22. data/spec/data/audio/carlin_disappointed.mp3 +0 -0
  23. data/spec/data/audio/carlin_disappointed.ogg +0 -0
  24. data/spec/data/audio/carlin_disappointed.ra +0 -0
  25. data/spec/data/audio/carlin_disappointed.voc +0 -0
  26. data/spec/data/audio/carlin_disappointed.wav +0 -0
  27. data/spec/data/audio/carlin_disappointed.wma +0 -0
  28. data/spec/data/audio/greensleeves.aac +0 -0
  29. data/spec/data/audio/greensleeves.ac3 +0 -0
  30. data/spec/data/audio/greensleeves.aiff +0 -0
  31. data/spec/data/audio/greensleeves.au +0 -0
  32. data/spec/data/audio/greensleeves.flac +0 -0
  33. data/spec/data/audio/greensleeves.m4a +0 -0
  34. data/spec/data/audio/greensleeves.mka +0 -0
  35. data/spec/data/audio/greensleeves.mp3 +0 -0
  36. data/spec/data/audio/greensleeves.ogg +0 -0
  37. data/spec/data/audio/greensleeves.ra +0 -0
  38. data/spec/data/audio/greensleeves.voc +0 -0
  39. data/spec/data/audio/greensleeves.wav +0 -0
  40. data/spec/data/audio/greensleeves.wma +0 -0
  41. data/spec/data/audio/king_nonviolence.aac +0 -0
  42. data/spec/data/audio/king_nonviolence.ac3 +0 -0
  43. data/spec/data/audio/king_nonviolence.aiff +0 -0
  44. data/spec/data/audio/king_nonviolence.au +0 -0
  45. data/spec/data/audio/king_nonviolence.flac +0 -0
  46. data/spec/data/audio/king_nonviolence.m4a +0 -0
  47. data/spec/data/audio/king_nonviolence.mka +0 -0
  48. data/spec/data/audio/king_nonviolence.mp3 +0 -0
  49. data/spec/data/audio/king_nonviolence.ogg +0 -0
  50. data/spec/data/audio/king_nonviolence.ra +0 -0
  51. data/spec/data/audio/king_nonviolence.voc +0 -0
  52. data/spec/data/audio/king_nonviolence.wav +0 -0
  53. data/spec/data/audio/king_nonviolence.wma +0 -0
  54. data/spec/data/audio/top_gun_secret.aac +0 -0
  55. data/spec/data/audio/top_gun_secret.ac3 +0 -0
  56. data/spec/data/audio/top_gun_secret.aiff +0 -0
  57. data/spec/data/audio/top_gun_secret.au +0 -0
  58. data/spec/data/audio/top_gun_secret.flac +0 -0
  59. data/spec/data/audio/top_gun_secret.m4a +0 -0
  60. data/spec/data/audio/top_gun_secret.mka +0 -0
  61. data/spec/data/audio/top_gun_secret.mp3 +0 -0
  62. data/spec/data/audio/top_gun_secret.ogg +0 -0
  63. data/spec/data/audio/top_gun_secret.ra +0 -0
  64. data/spec/data/audio/top_gun_secret.voc +0 -0
  65. data/spec/data/audio/top_gun_secret.wav +0 -0
  66. data/spec/data/audio/top_gun_secret.wma +0 -0
  67. data/spec/data/video/SampleVideo_1080x720_2mb.flv +0 -0
  68. data/spec/data/video/SampleVideo_1080x720_2mb.mkv +0 -0
  69. data/spec/data/video/SampleVideo_1080x720_2mb.mp4 +0 -0
  70. data/spec/data/video/SampleVideo_176x144_2mb.3gp +0 -0
  71. data/spec/data/video/SampleVideo_320x240_2mb.3gp +0 -0
  72. data/spec/data/video/SampleVideo_360x240_2mb.flv +0 -0
  73. data/spec/data/video/SampleVideo_360x240_2mb.mkv +0 -0
  74. data/spec/data/video/SampleVideo_360x240_2mb.mp4 +0 -0
  75. data/spec/data/video/sample.avi +0 -0
  76. data/spec/data/video/sample.flv +0 -0
  77. data/spec/data/video/sample.mkv +0 -0
  78. data/spec/data/video/sample.mov +0 -0
  79. data/spec/data/video/sample.mp4 +0 -0
  80. data/spec/data/video/sample.mpg +0 -0
  81. data/spec/data/video/sample.swf +0 -0
  82. data/spec/data/video/sample.webm +0 -0
  83. data/spec/data/video/sample.wmv +0 -0
  84. data/spec/identifier_spec.rb +29 -39
  85. data/spec/spec_helper.rb +50 -1
  86. metadata +157 -2
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -69,8 +69,6 @@ describe 'Identfier' do
69
69
  ::Libis::Tools::Config.logger.appenders =
70
70
  ::Logging::Appenders.string_io('StringIO', layout: ::Libis::Tools::Config.get_log_formatter)
71
71
  ::Libis::Tools::Config.logger.level = :all
72
- ::Libis::Format::Config[:droid_path] = '/opt/droid/droid.sh'
73
- ::Libis::Format::Config[:fido_path] = File.join(ENV['HOME'], 'bin', 'fido')
74
72
  end
75
73
 
76
74
  let (:identifier) {::Libis::Format::Identifier}
@@ -106,53 +104,46 @@ describe 'Identfier' do
106
104
  end).to be_truthy
107
105
  end
108
106
 
109
- it 'should identify all files in a folder at once' do
110
- result = identifier.get (dir)
111
- expect(result[:formats].size).to be >= formatlist.size
112
- formatlist.each do |file, format|
113
- expect(result[:formats][File.join(dir, file)]).to include format
114
- end
115
- end
107
+ context 'Fido and Droid', if: (File.exists?(Libis::Format::Config[:droid_path]) &&
108
+ File.exists?(Libis::Format::Config[:fido_path])) do
116
109
 
117
- it 'should identify all files in a folder with base_dir option' do
118
- result = identifier.get(dir, base_dir: dir)
119
- expect(result[:formats].size).to be >= formatlist.size
120
- formatlist.each do |file, format|
121
- expect(result[:formats][file]).to include format
110
+ it 'should identify all files in a folder at once' do
111
+ result = identifier.get (dir)
112
+ expect(result[:formats].size).to be >= formatlist.size
113
+ formatlist.each do |file, format|
114
+ expect(result[:formats][File.join(dir, file)]).to include format
115
+ end
122
116
  end
123
- end
124
117
 
125
- it 'should identify all files in a list at once' do
126
- filelist = fidolist.keys.map {|file| File.join(dir, file)}
127
- result = identifier.get (filelist)
128
- expect(result[:formats].size).to be >= formatlist.size
129
- formatlist.each do |file, format|
130
- expect(result[:formats][File.join(dir, file)]).to include format
118
+ it 'should identify all files in a folder with base_dir option' do
119
+ result = identifier.get(dir, base_dir: dir)
120
+ expect(result[:formats].size).to be >= formatlist.size
121
+ formatlist.each do |file, format|
122
+ expect(result[:formats][file]).to include format
123
+ end
131
124
  end
132
- end
133
125
 
134
- it 'should identify all files in a list with base_dir option' do
135
- filelist = fidolist.keys.map {|file| File.join(dir, file)}
136
- result = identifier.get(filelist, base_dir: dir)
137
- expect(result[:formats].size).to be >= formatlist.size
138
- formatlist.each do |file, format|
139
- expect(result[:formats][file]).to include format
126
+ it 'should identify all files in a list at once' do
127
+ filelist = fidolist.keys.map {|file| File.join(dir, file)}
128
+ result = identifier.get (filelist)
129
+ expect(result[:formats].size).to be >= formatlist.size
130
+ formatlist.each do |file, format|
131
+ expect(result[:formats][File.join(dir, file)]).to include format
132
+ end
140
133
  end
141
- end
142
-
143
- context 'individual files' do
144
134
 
145
- formatlist.each do |file, format|
146
- it "should identify test document '#{file}'" do
147
- result = identifier.get (File.join(dir, file))
148
- expect(result[:formats].size).to be 1
149
- expect(result[:formats][File.join(dir, file)]).to include format
135
+ it 'should identify all files in a list with base_dir option' do
136
+ filelist = fidolist.keys.map {|file| File.join(dir, file)}
137
+ result = identifier.get(filelist, base_dir: dir)
138
+ expect(result[:formats].size).to be >= formatlist.size
139
+ formatlist.each do |file, format|
140
+ expect(result[:formats][file]).to include format
150
141
  end
151
142
  end
152
143
 
153
144
  end
154
145
 
155
- context 'Fido' do
146
+ context 'Fido', if: File.exists?(Libis::Format::Config[:fido_path]) do
156
147
 
157
148
  # expect(identifier.fido_formats.size).to be 1
158
149
  # expect(File.basename(identifier.fido_formats.first)).to eq 'lias_formats.xml'
@@ -169,7 +160,7 @@ describe 'Identfier' do
169
160
 
170
161
  it 'should identify dir of test documents' do
171
162
  filelist = fidolist.keys.map {|file| File.join(dir, file)}
172
- fido_result = ::Libis::Format::Fido.instance.run_dir(dir)
163
+ fido_result = ::Libis::Format::Fido.instance.run_dir(dir, false)
173
164
  filelist.each do |filename|
174
165
  result = fido_result[filename]
175
166
  result = result[0] if result
@@ -179,5 +170,4 @@ describe 'Identfier' do
179
170
  end
180
171
 
181
172
  end
182
-
183
173
  end
data/spec/spec_helper.rb CHANGED
@@ -6,4 +6,53 @@ Bundler.setup
6
6
 
7
7
  require 'rspec'
8
8
  require 'libis-format'
9
- require 'libis-tools'
9
+ require 'libis-tools'
10
+
11
+ require 'chromaprint'
12
+
13
+ RSpec::Matchers.define(:be_same_file_as) do |exected_file_path|
14
+ match do |actual_file_path|
15
+ expect(md5_hash(actual_file_path)).to eq md5_hash(exected_file_path)
16
+ end
17
+
18
+ def md5_hash(file_path)
19
+ Digest::MD5.hexdigest(File.read(file_path))
20
+ end
21
+ end
22
+
23
+ RSpec::Matchers.define :sound_like do |exp_file, threshold, rate, channels|
24
+ match do |tgt_file|
25
+ rate ||= 96000
26
+ channels ||= 1
27
+ threshold ||= 0.9
28
+
29
+ if File.exists?(exp_file) && File.exists?(tgt_file)
30
+ # Convert input files into raw 16-bit signed audio (WAV) to process with Chramaprint
31
+ exp_raw = File.join('','tmp', File.basename(exp_file) + '.wav')
32
+ tgt_raw = File.join('','tmp', File.basename(tgt_file) + '.wav')
33
+ FileUtils.rm(exp_raw, force: true)
34
+ FileUtils.rm(tgt_raw, force: true)
35
+ cvt_cmd = "sox %s -e signed -b 16 -t wav %s rate #{rate} channels #{channels}"
36
+ %x"#{cvt_cmd % [exp_file,exp_raw]}"
37
+ %x"#{cvt_cmd % [tgt_file,tgt_raw]}"
38
+ exp_audio = File.binread(exp_raw)
39
+ tgt_audio = File.binread(tgt_raw)
40
+
41
+ # Get audio fingerprints
42
+ chromaprint = Chromaprint::Context.new(rate, channels, Chromaprint::ALGORITHM_TEST3)
43
+ exp_fp = chromaprint.get_fingerprint(exp_audio)
44
+ tgt_fp = chromaprint.get_fingerprint(tgt_audio)
45
+
46
+ # Cleanup files
47
+ FileUtils.rm(exp_raw, force: true)
48
+ FileUtils.rm(tgt_raw, force: true)
49
+
50
+ # Compare fingerprints and compare result against threshold
51
+ cmp = exp_fp.compare(tgt_fp)
52
+ # puts "Threshold[#{File.basename(exp_file)},#{File.basename(tgt_file)}: #{cmp}"
53
+ cmp > threshold
54
+ else
55
+ false
56
+ end
57
+ end
58
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libis-format
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.38
4
+ version: 0.9.39
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kris Dekeyser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-03 00:00:00.000000000 Z
11
+ date: 2017-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0.3'
139
+ - !ruby/object:Gem::Dependency
140
+ name: chromaprint
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.0.2
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 0.0.2
139
153
  description: Collection of tools and classes that help to identify formats of binary
140
154
  files and create derivative copies (e.g. PDF from Word).
141
155
  email:
@@ -168,6 +182,7 @@ files:
168
182
  - lib/libis/format.rb
169
183
  - lib/libis/format/config.rb
170
184
  - lib/libis/format/converter.rb
185
+ - lib/libis/format/converter/audio_converter.rb
171
186
  - lib/libis/format/converter/base.rb
172
187
  - lib/libis/format/converter/chain.rb
173
188
  - lib/libis/format/converter/image_converter.rb
@@ -175,8 +190,10 @@ files:
175
190
  - lib/libis/format/converter/office_converter.rb
176
191
  - lib/libis/format/converter/pdf_converter.rb
177
192
  - lib/libis/format/converter/repository.rb
193
+ - lib/libis/format/converter/video_converter.rb
178
194
  - lib/libis/format/droid.rb
179
195
  - lib/libis/format/extension_identification.rb
196
+ - lib/libis/format/ffmpeg.rb
180
197
  - lib/libis/format/fido.rb
181
198
  - lib/libis/format/file_tool.rb
182
199
  - lib/libis/format/identification_tool.rb
@@ -197,6 +214,58 @@ files:
197
214
  - spec/data/Cevennes2.ppm
198
215
  - spec/data/NikonRaw-CameraRaw.TIF
199
216
  - spec/data/NikonRaw-CaptureOne.tif
217
+ - spec/data/audio/carlin_disappointed.aac
218
+ - spec/data/audio/carlin_disappointed.ac3
219
+ - spec/data/audio/carlin_disappointed.aiff
220
+ - spec/data/audio/carlin_disappointed.au
221
+ - spec/data/audio/carlin_disappointed.flac
222
+ - spec/data/audio/carlin_disappointed.m4a
223
+ - spec/data/audio/carlin_disappointed.mka
224
+ - spec/data/audio/carlin_disappointed.mp3
225
+ - spec/data/audio/carlin_disappointed.ogg
226
+ - spec/data/audio/carlin_disappointed.ra
227
+ - spec/data/audio/carlin_disappointed.voc
228
+ - spec/data/audio/carlin_disappointed.wav
229
+ - spec/data/audio/carlin_disappointed.wma
230
+ - spec/data/audio/greensleeves.aac
231
+ - spec/data/audio/greensleeves.ac3
232
+ - spec/data/audio/greensleeves.aiff
233
+ - spec/data/audio/greensleeves.au
234
+ - spec/data/audio/greensleeves.flac
235
+ - spec/data/audio/greensleeves.m4a
236
+ - spec/data/audio/greensleeves.mka
237
+ - spec/data/audio/greensleeves.mp3
238
+ - spec/data/audio/greensleeves.ogg
239
+ - spec/data/audio/greensleeves.ra
240
+ - spec/data/audio/greensleeves.voc
241
+ - spec/data/audio/greensleeves.wav
242
+ - spec/data/audio/greensleeves.wma
243
+ - spec/data/audio/king_nonviolence.aac
244
+ - spec/data/audio/king_nonviolence.ac3
245
+ - spec/data/audio/king_nonviolence.aiff
246
+ - spec/data/audio/king_nonviolence.au
247
+ - spec/data/audio/king_nonviolence.flac
248
+ - spec/data/audio/king_nonviolence.m4a
249
+ - spec/data/audio/king_nonviolence.mka
250
+ - spec/data/audio/king_nonviolence.mp3
251
+ - spec/data/audio/king_nonviolence.ogg
252
+ - spec/data/audio/king_nonviolence.ra
253
+ - spec/data/audio/king_nonviolence.voc
254
+ - spec/data/audio/king_nonviolence.wav
255
+ - spec/data/audio/king_nonviolence.wma
256
+ - spec/data/audio/top_gun_secret.aac
257
+ - spec/data/audio/top_gun_secret.ac3
258
+ - spec/data/audio/top_gun_secret.aiff
259
+ - spec/data/audio/top_gun_secret.au
260
+ - spec/data/audio/top_gun_secret.flac
261
+ - spec/data/audio/top_gun_secret.m4a
262
+ - spec/data/audio/top_gun_secret.mka
263
+ - spec/data/audio/top_gun_secret.mp3
264
+ - spec/data/audio/top_gun_secret.ogg
265
+ - spec/data/audio/top_gun_secret.ra
266
+ - spec/data/audio/top_gun_secret.voc
267
+ - spec/data/audio/top_gun_secret.wav
268
+ - spec/data/audio/top_gun_secret.wma
200
269
  - spec/data/multipage.tif
201
270
  - spec/data/multipage.tif.jp2
202
271
  - spec/data/test-ead.xml
@@ -224,6 +293,23 @@ files:
224
293
  - spec/data/test.xlsx
225
294
  - spec/data/test.xml
226
295
  - spec/data/test_pdfa.pdf
296
+ - spec/data/video/SampleVideo_1080x720_2mb.flv
297
+ - spec/data/video/SampleVideo_1080x720_2mb.mkv
298
+ - spec/data/video/SampleVideo_1080x720_2mb.mp4
299
+ - spec/data/video/SampleVideo_176x144_2mb.3gp
300
+ - spec/data/video/SampleVideo_320x240_2mb.3gp
301
+ - spec/data/video/SampleVideo_360x240_2mb.flv
302
+ - spec/data/video/SampleVideo_360x240_2mb.mkv
303
+ - spec/data/video/SampleVideo_360x240_2mb.mp4
304
+ - spec/data/video/sample.avi
305
+ - spec/data/video/sample.flv
306
+ - spec/data/video/sample.mkv
307
+ - spec/data/video/sample.mov
308
+ - spec/data/video/sample.mp4
309
+ - spec/data/video/sample.mpg
310
+ - spec/data/video/sample.swf
311
+ - spec/data/video/sample.webm
312
+ - spec/data/video/sample.wmv
227
313
  - spec/identifier_spec.rb
228
314
  - spec/spec_helper.rb
229
315
  - spec/test_types.yml
@@ -264,6 +350,58 @@ test_files:
264
350
  - spec/data/Cevennes2.ppm
265
351
  - spec/data/NikonRaw-CameraRaw.TIF
266
352
  - spec/data/NikonRaw-CaptureOne.tif
353
+ - spec/data/audio/carlin_disappointed.aac
354
+ - spec/data/audio/carlin_disappointed.ac3
355
+ - spec/data/audio/carlin_disappointed.aiff
356
+ - spec/data/audio/carlin_disappointed.au
357
+ - spec/data/audio/carlin_disappointed.flac
358
+ - spec/data/audio/carlin_disappointed.m4a
359
+ - spec/data/audio/carlin_disappointed.mka
360
+ - spec/data/audio/carlin_disappointed.mp3
361
+ - spec/data/audio/carlin_disappointed.ogg
362
+ - spec/data/audio/carlin_disappointed.ra
363
+ - spec/data/audio/carlin_disappointed.voc
364
+ - spec/data/audio/carlin_disappointed.wav
365
+ - spec/data/audio/carlin_disappointed.wma
366
+ - spec/data/audio/greensleeves.aac
367
+ - spec/data/audio/greensleeves.ac3
368
+ - spec/data/audio/greensleeves.aiff
369
+ - spec/data/audio/greensleeves.au
370
+ - spec/data/audio/greensleeves.flac
371
+ - spec/data/audio/greensleeves.m4a
372
+ - spec/data/audio/greensleeves.mka
373
+ - spec/data/audio/greensleeves.mp3
374
+ - spec/data/audio/greensleeves.ogg
375
+ - spec/data/audio/greensleeves.ra
376
+ - spec/data/audio/greensleeves.voc
377
+ - spec/data/audio/greensleeves.wav
378
+ - spec/data/audio/greensleeves.wma
379
+ - spec/data/audio/king_nonviolence.aac
380
+ - spec/data/audio/king_nonviolence.ac3
381
+ - spec/data/audio/king_nonviolence.aiff
382
+ - spec/data/audio/king_nonviolence.au
383
+ - spec/data/audio/king_nonviolence.flac
384
+ - spec/data/audio/king_nonviolence.m4a
385
+ - spec/data/audio/king_nonviolence.mka
386
+ - spec/data/audio/king_nonviolence.mp3
387
+ - spec/data/audio/king_nonviolence.ogg
388
+ - spec/data/audio/king_nonviolence.ra
389
+ - spec/data/audio/king_nonviolence.voc
390
+ - spec/data/audio/king_nonviolence.wav
391
+ - spec/data/audio/king_nonviolence.wma
392
+ - spec/data/audio/top_gun_secret.aac
393
+ - spec/data/audio/top_gun_secret.ac3
394
+ - spec/data/audio/top_gun_secret.aiff
395
+ - spec/data/audio/top_gun_secret.au
396
+ - spec/data/audio/top_gun_secret.flac
397
+ - spec/data/audio/top_gun_secret.m4a
398
+ - spec/data/audio/top_gun_secret.mka
399
+ - spec/data/audio/top_gun_secret.mp3
400
+ - spec/data/audio/top_gun_secret.ogg
401
+ - spec/data/audio/top_gun_secret.ra
402
+ - spec/data/audio/top_gun_secret.voc
403
+ - spec/data/audio/top_gun_secret.wav
404
+ - spec/data/audio/top_gun_secret.wma
267
405
  - spec/data/multipage.tif
268
406
  - spec/data/multipage.tif.jp2
269
407
  - spec/data/test-ead.xml
@@ -291,6 +429,23 @@ test_files:
291
429
  - spec/data/test.xlsx
292
430
  - spec/data/test.xml
293
431
  - spec/data/test_pdfa.pdf
432
+ - spec/data/video/SampleVideo_1080x720_2mb.flv
433
+ - spec/data/video/SampleVideo_1080x720_2mb.mkv
434
+ - spec/data/video/SampleVideo_1080x720_2mb.mp4
435
+ - spec/data/video/SampleVideo_176x144_2mb.3gp
436
+ - spec/data/video/SampleVideo_320x240_2mb.3gp
437
+ - spec/data/video/SampleVideo_360x240_2mb.flv
438
+ - spec/data/video/SampleVideo_360x240_2mb.mkv
439
+ - spec/data/video/SampleVideo_360x240_2mb.mp4
440
+ - spec/data/video/sample.avi
441
+ - spec/data/video/sample.flv
442
+ - spec/data/video/sample.mkv
443
+ - spec/data/video/sample.mov
444
+ - spec/data/video/sample.mp4
445
+ - spec/data/video/sample.mpg
446
+ - spec/data/video/sample.swf
447
+ - spec/data/video/sample.webm
448
+ - spec/data/video/sample.wmv
294
449
  - spec/identifier_spec.rb
295
450
  - spec/spec_helper.rb
296
451
  - spec/test_types.yml