vidibus-fileinfo 1.1.1 → 2.0.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.
- checksums.yaml +7 -0
- data/README.md +21 -2
- data/lib/vidibus/fileinfo/base.rb +5 -5
- data/lib/vidibus/fileinfo/processor/audio.rb +62 -0
- data/lib/vidibus/fileinfo/processor/video.rb +2 -2
- data/lib/vidibus/fileinfo/version.rb +1 -1
- data/lib/vidibus/fileinfo.rb +2 -1
- data/lib/vidibus-fileinfo.rb +5 -5
- metadata +36 -76
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 47c20c18ec3cc05d64b29c1f752b289a12bc3bbae5c4b499e0f82981b18fdbd5
|
|
4
|
+
data.tar.gz: d7166d9a842050f6a0f11b77ee1026b81e0ca725b9b5b4698a5dc6dbd72cc0c2
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 5bd2c2784dc472d1e9d5d284f06441ac020d4210501f8856c55a1132c895236f0e1b39d6e4b7e7ac9d6fc1bebb77c436ce4668a5e926c1c5c7e2befeec080c39
|
|
7
|
+
data.tar.gz: b8cebddfc8e4355d59cb8f2ec68d3f1aa9699f2b5b7e1691df9bd8387cc9ebe6a1e44fec85dedbbe980a7aca1e38f0630940108ad47e33476b683638476fca50
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Vidibus::Fileinfo
|
|
1
|
+
# Vidibus::Fileinfo
|
|
2
2
|
|
|
3
3
|
Returns information like the width, height and bits about an image or video file.
|
|
4
4
|
|
|
@@ -87,6 +87,25 @@ These video formats are currently supported:
|
|
|
87
87
|
mpeg, mpg, mts, mxf, ogg, ogv, rm, ts, webm, wmv
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
+
### Audio files
|
|
91
|
+
|
|
92
|
+
For audio files the dataset looks as follows:
|
|
93
|
+
|
|
94
|
+
``` ruby
|
|
95
|
+
:size # file size in bytes, eg. 20883991
|
|
96
|
+
:duration # duration of video in seconds, e.g. 44.82
|
|
97
|
+
:content_type # content type of video, e.g. "audio/mpeg"
|
|
98
|
+
:bit_rate # bit rate in bit, e.g. 600000
|
|
99
|
+
:codec # codec of audio stream, e.g. "aac"
|
|
100
|
+
:sample_rate # sample rate of audio stream, e.g. 48000
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
These audio formats are currently supported:
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
mp3
|
|
107
|
+
```
|
|
108
|
+
|
|
90
109
|
## Copyright
|
|
91
110
|
|
|
92
|
-
Copyright (c) 2011-
|
|
111
|
+
Copyright (c) 2011-2013 Andre Pankratz. See LICENSE for details.
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'open3'
|
|
2
|
+
|
|
1
3
|
module Vidibus
|
|
2
4
|
module Fileinfo
|
|
3
5
|
class Base
|
|
@@ -50,7 +52,7 @@ module Vidibus
|
|
|
50
52
|
end
|
|
51
53
|
|
|
52
54
|
def parse_metadata
|
|
53
|
-
@raw_metadata = process_cmd
|
|
55
|
+
@raw_metadata = process_cmd.force_encoding('ISO8859-1')
|
|
54
56
|
metadata = {}
|
|
55
57
|
@processor::METADATA.each do |attribute|
|
|
56
58
|
if data = send(attribute)
|
|
@@ -62,10 +64,8 @@ module Vidibus
|
|
|
62
64
|
end
|
|
63
65
|
|
|
64
66
|
def process_cmd
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
Process::waitpid(pid)
|
|
68
|
-
raw_metadata
|
|
67
|
+
stdout, stderr, status = Open3.capture3(cmd)
|
|
68
|
+
eval(output)
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
# Important attributes must be present and valid
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
module Vidibus
|
|
2
|
+
module Fileinfo
|
|
3
|
+
module Processor
|
|
4
|
+
module Audio
|
|
5
|
+
FORMATS = %w[
|
|
6
|
+
mp3
|
|
7
|
+
]
|
|
8
|
+
METADATA = %w[
|
|
9
|
+
codec sample_rate content_type bit_rate duration
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
# FFmpeg command
|
|
13
|
+
def cmd
|
|
14
|
+
%Q(ffmpeg -i "#{@path}")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def output
|
|
18
|
+
'stderr'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def validate
|
|
22
|
+
%w[duration]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
protected
|
|
26
|
+
|
|
27
|
+
def codec
|
|
28
|
+
@raw_metadata[/Audio:\s+([a-z0-9_]+).*,.*\d+\sHz/, 1]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def sample_rate
|
|
32
|
+
if match = @raw_metadata[/(\d+)\sHz/, 1]
|
|
33
|
+
match.to_i
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Return the bit rate defined as "bitrate". Calculate it from
|
|
38
|
+
# file size and duration otherwise.
|
|
39
|
+
# 1 kilobit == 1000 bit
|
|
40
|
+
def bit_rate
|
|
41
|
+
if match = @raw_metadata[/bitrate:\s(\d+)\skb\/s/, 1]
|
|
42
|
+
match.to_i * 1000
|
|
43
|
+
elsif duration && duration > 0
|
|
44
|
+
(size.to_f/1.024/duration*8).round
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def content_type
|
|
49
|
+
super('audio')
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def duration
|
|
53
|
+
if match = @raw_metadata[/Duration:\s+([0-9\:\.]+),/, 1]
|
|
54
|
+
units = match.split(":").map(&:to_f)
|
|
55
|
+
f = units[0]*3600 + units[1]*60 + units[2]
|
|
56
|
+
(f * 100).round.to_f / 100
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -3,8 +3,8 @@ module Vidibus
|
|
|
3
3
|
module Processor
|
|
4
4
|
module Video
|
|
5
5
|
FORMATS = %w[
|
|
6
|
-
3g2 3gp asf avi
|
|
7
|
-
|
|
6
|
+
3g2 3gp asf avi f4p f4v flv ivf mj2 mjpg mkv mov mp4 mpeg mpg
|
|
7
|
+
mxf ogg ogv rm ts webm wmv
|
|
8
8
|
]
|
|
9
9
|
METADATA = %w[
|
|
10
10
|
aspect_ratio audio_codec audio_sample_rate content_type bit_rate
|
data/lib/vidibus/fileinfo.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require "vidibus/fileinfo/base"
|
|
2
2
|
require "vidibus/fileinfo/processor/image"
|
|
3
3
|
require "vidibus/fileinfo/processor/video"
|
|
4
|
+
require "vidibus/fileinfo/processor/audio"
|
|
4
5
|
|
|
5
6
|
module Vidibus
|
|
6
7
|
module Fileinfo
|
|
@@ -19,7 +20,7 @@ module Vidibus
|
|
|
19
20
|
|
|
20
21
|
# Returns a list of available processors.
|
|
21
22
|
def processors
|
|
22
|
-
@processors ||= [Processor::Image, Processor::Video]
|
|
23
|
+
@processors ||= [Processor::Image, Processor::Video, Processor::Audio]
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
# Returns a list of processable formats.
|
data/lib/vidibus-fileinfo.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require
|
|
4
|
-
|
|
5
|
-
require
|
|
1
|
+
require 'yaml'
|
|
2
|
+
require 'mime/types'
|
|
3
|
+
require 'open3'
|
|
4
|
+
require 'vidibus-core_extensions'
|
|
5
|
+
require 'vidibus/fileinfo'
|
metadata
CHANGED
|
@@ -1,201 +1,161 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: vidibus-fileinfo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 2.0.0
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Andre Pankratz
|
|
9
|
-
autorequire:
|
|
10
8
|
bindir: bin
|
|
11
9
|
cert_chain: []
|
|
12
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
13
11
|
dependencies:
|
|
14
12
|
- !ruby/object:Gem::Dependency
|
|
15
13
|
name: mime-types
|
|
16
14
|
requirement: !ruby/object:Gem::Requirement
|
|
17
|
-
none: false
|
|
18
15
|
requirements:
|
|
19
|
-
- -
|
|
16
|
+
- - ">="
|
|
20
17
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: '
|
|
18
|
+
version: '3'
|
|
22
19
|
type: :runtime
|
|
23
20
|
prerelease: false
|
|
24
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
-
none: false
|
|
26
22
|
requirements:
|
|
27
|
-
- -
|
|
23
|
+
- - ">="
|
|
28
24
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: '
|
|
30
|
-
- !ruby/object:Gem::Dependency
|
|
31
|
-
name: posix-spawn
|
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
|
33
|
-
none: false
|
|
34
|
-
requirements:
|
|
35
|
-
- - ! '>='
|
|
36
|
-
- !ruby/object:Gem::Version
|
|
37
|
-
version: '0'
|
|
38
|
-
type: :runtime
|
|
39
|
-
prerelease: false
|
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
-
none: false
|
|
42
|
-
requirements:
|
|
43
|
-
- - ! '>='
|
|
44
|
-
- !ruby/object:Gem::Version
|
|
45
|
-
version: '0'
|
|
25
|
+
version: '3'
|
|
46
26
|
- !ruby/object:Gem::Dependency
|
|
47
27
|
name: vidibus-core_extensions
|
|
48
28
|
requirement: !ruby/object:Gem::Requirement
|
|
49
|
-
none: false
|
|
50
29
|
requirements:
|
|
51
|
-
- -
|
|
30
|
+
- - ">="
|
|
52
31
|
- !ruby/object:Gem::Version
|
|
53
32
|
version: '0'
|
|
54
33
|
type: :runtime
|
|
55
34
|
prerelease: false
|
|
56
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
none: false
|
|
58
36
|
requirements:
|
|
59
|
-
- -
|
|
37
|
+
- - ">="
|
|
60
38
|
- !ruby/object:Gem::Version
|
|
61
39
|
version: '0'
|
|
62
40
|
- !ruby/object:Gem::Dependency
|
|
63
41
|
name: bundler
|
|
64
42
|
requirement: !ruby/object:Gem::Requirement
|
|
65
|
-
none: false
|
|
66
43
|
requirements:
|
|
67
|
-
- -
|
|
44
|
+
- - ">="
|
|
68
45
|
- !ruby/object:Gem::Version
|
|
69
46
|
version: 1.0.0
|
|
70
47
|
type: :development
|
|
71
48
|
prerelease: false
|
|
72
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
-
none: false
|
|
74
50
|
requirements:
|
|
75
|
-
- -
|
|
51
|
+
- - ">="
|
|
76
52
|
- !ruby/object:Gem::Version
|
|
77
53
|
version: 1.0.0
|
|
78
54
|
- !ruby/object:Gem::Dependency
|
|
79
55
|
name: rspec
|
|
80
56
|
requirement: !ruby/object:Gem::Requirement
|
|
81
|
-
none: false
|
|
82
57
|
requirements:
|
|
83
|
-
- -
|
|
58
|
+
- - ">="
|
|
84
59
|
- !ruby/object:Gem::Version
|
|
85
|
-
version: '
|
|
60
|
+
version: '0'
|
|
86
61
|
type: :development
|
|
87
62
|
prerelease: false
|
|
88
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
89
|
-
none: false
|
|
90
64
|
requirements:
|
|
91
|
-
- -
|
|
65
|
+
- - ">="
|
|
92
66
|
- !ruby/object:Gem::Version
|
|
93
|
-
version: '
|
|
67
|
+
version: '0'
|
|
94
68
|
- !ruby/object:Gem::Dependency
|
|
95
69
|
name: rr
|
|
96
70
|
requirement: !ruby/object:Gem::Requirement
|
|
97
|
-
none: false
|
|
98
71
|
requirements:
|
|
99
|
-
- -
|
|
72
|
+
- - ">="
|
|
100
73
|
- !ruby/object:Gem::Version
|
|
101
74
|
version: '0'
|
|
102
75
|
type: :development
|
|
103
76
|
prerelease: false
|
|
104
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
-
none: false
|
|
106
78
|
requirements:
|
|
107
|
-
- -
|
|
79
|
+
- - ">="
|
|
108
80
|
- !ruby/object:Gem::Version
|
|
109
81
|
version: '0'
|
|
110
82
|
- !ruby/object:Gem::Dependency
|
|
111
83
|
name: rake
|
|
112
84
|
requirement: !ruby/object:Gem::Requirement
|
|
113
|
-
none: false
|
|
114
85
|
requirements:
|
|
115
|
-
- -
|
|
86
|
+
- - ">="
|
|
116
87
|
- !ruby/object:Gem::Version
|
|
117
88
|
version: '0'
|
|
118
89
|
type: :development
|
|
119
90
|
prerelease: false
|
|
120
91
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
none: false
|
|
122
92
|
requirements:
|
|
123
|
-
- -
|
|
93
|
+
- - ">="
|
|
124
94
|
- !ruby/object:Gem::Version
|
|
125
95
|
version: '0'
|
|
126
96
|
- !ruby/object:Gem::Dependency
|
|
127
97
|
name: rdoc
|
|
128
98
|
requirement: !ruby/object:Gem::Requirement
|
|
129
|
-
none: false
|
|
130
99
|
requirements:
|
|
131
|
-
- -
|
|
100
|
+
- - ">="
|
|
132
101
|
- !ruby/object:Gem::Version
|
|
133
102
|
version: '0'
|
|
134
103
|
type: :development
|
|
135
104
|
prerelease: false
|
|
136
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
137
|
-
none: false
|
|
138
106
|
requirements:
|
|
139
|
-
- -
|
|
107
|
+
- - ">="
|
|
140
108
|
- !ruby/object:Gem::Version
|
|
141
109
|
version: '0'
|
|
142
110
|
- !ruby/object:Gem::Dependency
|
|
143
111
|
name: simplecov
|
|
144
112
|
requirement: !ruby/object:Gem::Requirement
|
|
145
|
-
none: false
|
|
146
113
|
requirements:
|
|
147
|
-
- -
|
|
114
|
+
- - ">="
|
|
148
115
|
- !ruby/object:Gem::Version
|
|
149
116
|
version: '0'
|
|
150
117
|
type: :development
|
|
151
118
|
prerelease: false
|
|
152
119
|
version_requirements: !ruby/object:Gem::Requirement
|
|
153
|
-
none: false
|
|
154
120
|
requirements:
|
|
155
|
-
- -
|
|
121
|
+
- - ">="
|
|
156
122
|
- !ruby/object:Gem::Version
|
|
157
123
|
version: '0'
|
|
158
|
-
description: Returns information like the width, height and bits about an image
|
|
159
|
-
|
|
124
|
+
description: Returns information like the width, height and bits about an image, video
|
|
125
|
+
or audio file.
|
|
160
126
|
email: andre@vidibus.com
|
|
161
127
|
executables: []
|
|
162
128
|
extensions: []
|
|
163
129
|
extra_rdoc_files: []
|
|
164
130
|
files:
|
|
131
|
+
- LICENSE
|
|
132
|
+
- README.md
|
|
133
|
+
- Rakefile
|
|
134
|
+
- lib/vidibus-fileinfo.rb
|
|
135
|
+
- lib/vidibus/fileinfo.rb
|
|
165
136
|
- lib/vidibus/fileinfo/base.rb
|
|
137
|
+
- lib/vidibus/fileinfo/processor/audio.rb
|
|
166
138
|
- lib/vidibus/fileinfo/processor/image.rb
|
|
167
139
|
- lib/vidibus/fileinfo/processor/video.rb
|
|
168
140
|
- lib/vidibus/fileinfo/version.rb
|
|
169
|
-
- lib/vidibus/fileinfo.rb
|
|
170
|
-
- lib/vidibus-fileinfo.rb
|
|
171
|
-
- LICENSE
|
|
172
|
-
- README.md
|
|
173
|
-
- Rakefile
|
|
174
141
|
homepage: https://github.com/vidibus/vidibus-fileinfo
|
|
175
142
|
licenses: []
|
|
176
|
-
|
|
143
|
+
metadata: {}
|
|
177
144
|
rdoc_options: []
|
|
178
145
|
require_paths:
|
|
179
146
|
- lib
|
|
180
147
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
181
|
-
none: false
|
|
182
148
|
requirements:
|
|
183
|
-
- -
|
|
149
|
+
- - ">="
|
|
184
150
|
- !ruby/object:Gem::Version
|
|
185
151
|
version: '0'
|
|
186
|
-
segments:
|
|
187
|
-
- 0
|
|
188
|
-
hash: -2292526863933311751
|
|
189
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
|
-
none: false
|
|
191
153
|
requirements:
|
|
192
|
-
- -
|
|
154
|
+
- - ">="
|
|
193
155
|
- !ruby/object:Gem::Version
|
|
194
156
|
version: 1.3.6
|
|
195
157
|
requirements: []
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
specification_version: 3
|
|
200
|
-
summary: Returns information about an image or video file.
|
|
158
|
+
rubygems_version: 3.6.9
|
|
159
|
+
specification_version: 4
|
|
160
|
+
summary: Returns information about an image, video or audio file.
|
|
201
161
|
test_files: []
|