flvedit 0.7.0 → 0.7.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.
- data/Rakefile +2 -2
- data/VERSION.yml +1 -1
- data/flvedit.gemspec +8 -8
- data/lib/flvedit/flv/packing.rb +12 -10
- data/lib/flvedit/processor/command_line.rb +1 -1
- data/lib/flvedit/processor/reader.rb +5 -1
- data/test/test_flv.rb +25 -5
- data/test/text_flv_edit_results/add_tags.txt +1 -2
- data/test/text_flv_edit_results/cut_from.txt +1 -2
- data/test/text_flv_edit_results/debug.txt +1 -2
- data/test/text_flv_edit_results/join.txt +85 -87
- data/test/text_flv_edit_results/update.txt +7 -7
- data/test/text_flv_edit_results/update_merge.txt +7 -7
- metadata +4 -4
data/Rakefile
CHANGED
|
@@ -38,8 +38,8 @@ begin
|
|
|
38
38
|
EOS
|
|
39
39
|
gem.authors = ["Marc-André Lafortune"]
|
|
40
40
|
gem.rubyforge_project = "flvedit"
|
|
41
|
-
gem.add_dependency "packable", ">=1.2"
|
|
42
|
-
gem.add_dependency "backports", ">=1.
|
|
41
|
+
gem.add_dependency "packable", ">=1.3.2"
|
|
42
|
+
gem.add_dependency "backports", ">=1.7.1"
|
|
43
43
|
gem.has_rdoc = true
|
|
44
44
|
gem.rdoc_options << '--title' << 'FLV::Edit' <<
|
|
45
45
|
'--main' << 'README.rdoc' <<
|
data/VERSION.yml
CHANGED
data/flvedit.gemspec
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = %q{flvedit}
|
|
5
|
-
s.version = "0.7.
|
|
5
|
+
s.version = "0.7.1"
|
|
6
6
|
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
8
8
|
s.authors = ["Marc-Andr\303\251 Lafortune"]
|
|
9
|
-
s.date = %q{2009-08-
|
|
9
|
+
s.date = %q{2009-08-20}
|
|
10
10
|
s.default_executable = %q{flvedit}
|
|
11
11
|
s.description = %q{flvedit allows you to: * compute metadata for FLV files * merge, split or cut FLVs * insert / remote cue points or other events flvedit is meant as a replacement for FLVTool2, FLVMeta, FLVTool++ It can be used as a command line tool or as a Ruby library.}
|
|
12
12
|
s.email = %q{github@marc-andre.ca}
|
|
@@ -97,14 +97,14 @@ Gem::Specification.new do |s|
|
|
|
97
97
|
s.specification_version = 2
|
|
98
98
|
|
|
99
99
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
|
100
|
-
s.add_runtime_dependency(%q<packable>, [">= 1.2"])
|
|
101
|
-
s.add_runtime_dependency(%q<backports>, [">= 1.
|
|
100
|
+
s.add_runtime_dependency(%q<packable>, [">= 1.3.2"])
|
|
101
|
+
s.add_runtime_dependency(%q<backports>, [">= 1.7.1"])
|
|
102
102
|
else
|
|
103
|
-
s.add_dependency(%q<packable>, [">= 1.2"])
|
|
104
|
-
s.add_dependency(%q<backports>, [">= 1.
|
|
103
|
+
s.add_dependency(%q<packable>, [">= 1.3.2"])
|
|
104
|
+
s.add_dependency(%q<backports>, [">= 1.7.1"])
|
|
105
105
|
end
|
|
106
106
|
else
|
|
107
|
-
s.add_dependency(%q<packable>, [">= 1.2"])
|
|
108
|
-
s.add_dependency(%q<backports>, [">= 1.
|
|
107
|
+
s.add_dependency(%q<packable>, [">= 1.3.2"])
|
|
108
|
+
s.add_dependency(%q<backports>, [">= 1.7.1"])
|
|
109
109
|
end
|
|
110
110
|
end
|
data/lib/flvedit/flv/packing.rb
CHANGED
|
@@ -17,7 +17,7 @@ module FLV
|
|
|
17
17
|
|
|
18
18
|
TYPE_TO_CLASS = Hash.new do |h, type|
|
|
19
19
|
#EndOfList
|
|
20
|
-
raise IOError, "Invalid type for a flash variable. #{type.inspect} is not in #{h.keys
|
|
20
|
+
raise IOError, "Invalid type for a flash variable. #{type.inspect} is not in #{h.keys}" #todo: handle error for corrupted da
|
|
21
21
|
end.merge!(
|
|
22
22
|
0 => Numeric ,
|
|
23
23
|
1 => TrueClass , # There really should be a Boolean class!
|
|
@@ -110,7 +110,14 @@ module FLV
|
|
|
110
110
|
packer.read do |io|
|
|
111
111
|
Hash[
|
|
112
112
|
io.each([String, :flv], :flv_value).
|
|
113
|
-
take_while {|str, val| val != EndOfList.instance }.
|
|
113
|
+
# take_while {|str, val| val != EndOfList.instance }.
|
|
114
|
+
take_while do |str, val|
|
|
115
|
+
if str == "" && val != EndOfList.instance
|
|
116
|
+
p "***Warning: read #{val.inspect} as end of list!?"
|
|
117
|
+
end
|
|
118
|
+
val != EndOfList.instance
|
|
119
|
+
str != ""
|
|
120
|
+
end.
|
|
114
121
|
map{|k,v| [k.to_sym, v]}
|
|
115
122
|
]
|
|
116
123
|
end
|
|
@@ -126,14 +133,9 @@ module FLV
|
|
|
126
133
|
|
|
127
134
|
class EndOfList # :nodoc:
|
|
128
135
|
include Singleton, Packable
|
|
129
|
-
packers.set
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
# no data to write
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
def self.read_packed(*)
|
|
136
|
-
self.instance
|
|
136
|
+
packers.set(:flv) do |packer|
|
|
137
|
+
packer.write {} # no data to write
|
|
138
|
+
packer.read {EndOfList.instance}
|
|
137
139
|
end
|
|
138
140
|
end
|
|
139
141
|
|
|
@@ -22,7 +22,7 @@ module FLV
|
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
puts (["Processed successfully:"] + ok).join("\n") unless ok.empty?
|
|
25
|
-
puts (["**** Processed with errors: ****"] + errors.map{|path, err| "#{path}: #{err}"}).join("\n") unless errors.empty?
|
|
25
|
+
puts (["**** Processed with errors: ****"] + errors.map{|path, err| "#{path}: #{err}"}+ err.backtrace).join("\n") unless errors.empty?
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
end
|
data/test/test_flv.rb
CHANGED
|
@@ -16,7 +16,7 @@ class TestFlv < Test::Unit::TestCase
|
|
|
16
16
|
assert_equal n, FLV::Timestamp.try_convert(s).in_milliseconds
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
{ "0" => 0 ,
|
|
21
21
|
"1" => 1000,
|
|
22
22
|
"1.0" => 1000,
|
|
@@ -31,7 +31,7 @@ class TestFlv < Test::Unit::TestCase
|
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
context "TimestampRange" do
|
|
36
36
|
context "conversion" do
|
|
37
37
|
{ "1:02-" => 62..(1/0.0),
|
|
@@ -45,7 +45,7 @@ class TestFlv < Test::Unit::TestCase
|
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
|
-
|
|
48
|
+
|
|
49
49
|
|
|
50
50
|
BIT_TEST = "\x01\x02\xff"
|
|
51
51
|
context "Bit reading from #{BIT_TEST.inspect}" do
|
|
@@ -72,7 +72,7 @@ class TestFlv < Test::Unit::TestCase
|
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
end
|
|
75
|
-
|
|
75
|
+
|
|
76
76
|
context "Packing" do
|
|
77
77
|
context "a header" do
|
|
78
78
|
setup do
|
|
@@ -116,6 +116,26 @@ class TestFlv < Test::Unit::TestCase
|
|
|
116
116
|
end
|
|
117
117
|
end
|
|
118
118
|
|
|
119
|
+
context "Packing + Unpacking" do
|
|
120
|
+
should "return the same object" do
|
|
121
|
+
obj = {
|
|
122
|
+
:event => "onMetaData" ,
|
|
123
|
+
:audiocodecid => 2 ,
|
|
124
|
+
:audiodatarate => 15.7066666666667 ,
|
|
125
|
+
:canSeekToEnd => false ,
|
|
126
|
+
:hasAudio => true ,
|
|
127
|
+
:cuePoints => [] ,
|
|
128
|
+
:keyframes => {:filepositions=>[846, 1968], :times=>[0.0, 0.2]},
|
|
129
|
+
:metadatadate => Time.gm(2000,"jan",1,20,15,1)
|
|
130
|
+
}
|
|
131
|
+
io = StringIO.new("").packed
|
|
132
|
+
io.write(obj, :flv_value)
|
|
133
|
+
io.rewind
|
|
134
|
+
assert_equal(obj, io.read(:flv_value))
|
|
135
|
+
assert io.eof?
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
119
139
|
context "Typematch" do
|
|
120
140
|
setup do
|
|
121
141
|
@chunks = FLV::File.open(SHORT_FLV).each.first(4)
|
|
@@ -141,5 +161,5 @@ class TestFlv < Test::Unit::TestCase
|
|
|
141
161
|
end
|
|
142
162
|
end
|
|
143
163
|
end
|
|
144
|
-
|
|
164
|
+
|
|
145
165
|
end
|
|
@@ -3,32 +3,32 @@
|
|
|
3
3
|
*** result:
|
|
4
4
|
Header| ./test/fixtures/short.flv
|
|
5
5
|
| extra :
|
|
6
|
+
| version : 1
|
|
6
7
|
| has_audio : true
|
|
7
8
|
| has_video : true
|
|
8
|
-
| version : 1
|
|
9
9
|
0.000 | FLV::Event tag
|
|
10
10
|
| event : onMetaData
|
|
11
|
-
|
|
|
12
|
-
| audiodatarate : 16
|
|
13
|
-
| audiodelay : 0
|
|
11
|
+
| videocodecid : 4
|
|
14
12
|
| canSeekToEnd : 1
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
| framerate : 10
|
|
13
|
+
| width : 192
|
|
14
|
+
| audiodatarate : 16
|
|
18
15
|
| height : 154
|
|
19
|
-
|
|
|
16
|
+
| framerate : 10
|
|
17
|
+
| audiocodecid : 2
|
|
18
|
+
| duration : 16.9
|
|
19
|
+
| creationdate : Fri Feb 03 122553 2006\n
|
|
20
20
|
| videodatarate : 40
|
|
21
|
-
|
|
|
21
|
+
| audiodelay : 0
|
|
22
22
|
0.000 | FLV::Audio tag
|
|
23
|
-
| channel : mono
|
|
24
|
-
| codec_id : 2
|
|
25
|
-
| format : MP3
|
|
26
23
|
| rate : 11000
|
|
24
|
+
| format : MP3
|
|
25
|
+
| codec_id : 2
|
|
26
|
+
| channel : mono
|
|
27
27
|
| sample_size : 16
|
|
28
28
|
0.000 | FLV::Video tag (keyframe)
|
|
29
|
-
| codec : on2_vp6
|
|
30
|
-
| codec_id : 4
|
|
31
29
|
| dimensions : nil
|
|
30
|
+
| codec_id : 4
|
|
31
|
+
| codec : on2_vp6
|
|
32
32
|
0.052 | FLV::Audio tag
|
|
33
33
|
0.100 | FLV::Video tag (interframe)
|
|
34
34
|
0.104 | FLV::Audio tag
|
|
@@ -129,109 +129,107 @@ Header| ./test/fixtures/short.flv
|
|
|
129
129
|
3.395 | FLV::Audio tag
|
|
130
130
|
3.400 | FLV::Video tag (interframe)
|
|
131
131
|
3.448 | FLV::Audio tag
|
|
132
|
-
3.
|
|
133
|
-
3.500 | FLV::Event tag
|
|
132
|
+
3.448 | FLV::Event tag
|
|
134
133
|
| event : onNextSegment
|
|
135
134
|
| file : short.flv
|
|
136
|
-
3.
|
|
137
|
-
3.
|
|
138
|
-
3.
|
|
139
|
-
3.
|
|
140
|
-
3.
|
|
141
|
-
3.
|
|
142
|
-
3.
|
|
143
|
-
3.
|
|
135
|
+
3.500 | FLV::Video tag (keyframe)
|
|
136
|
+
3.552 | FLV::Audio tag
|
|
137
|
+
3.600 | FLV::Video tag (interframe)
|
|
138
|
+
3.604 | FLV::Audio tag
|
|
139
|
+
3.656 | FLV::Audio tag
|
|
140
|
+
3.700 | FLV::Video tag (keyframe)
|
|
141
|
+
3.708 | FLV::Audio tag
|
|
142
|
+
3.761 | FLV::Audio tag
|
|
143
|
+
3.800 | FLV::Video tag (interframe)
|
|
144
|
+
3.813 | FLV::Audio tag
|
|
145
|
+
3.865 | FLV::Audio tag
|
|
144
146
|
3.900 | FLV::Video tag (interframe)
|
|
145
|
-
3.
|
|
146
|
-
3.
|
|
147
|
+
3.917 | FLV::Audio tag
|
|
148
|
+
3.970 | FLV::Audio tag
|
|
147
149
|
4.000 | FLV::Video tag (interframe)
|
|
148
|
-
4.
|
|
149
|
-
4.
|
|
150
|
+
4.022 | FLV::Audio tag
|
|
151
|
+
4.074 | FLV::Audio tag
|
|
150
152
|
4.100 | FLV::Video tag (interframe)
|
|
151
|
-
4.
|
|
152
|
-
4.
|
|
153
|
+
4.126 | FLV::Audio tag
|
|
154
|
+
4.179 | FLV::Audio tag
|
|
153
155
|
4.200 | FLV::Video tag (interframe)
|
|
154
|
-
4.
|
|
155
|
-
4.
|
|
156
|
+
4.231 | FLV::Audio tag
|
|
157
|
+
4.283 | FLV::Audio tag
|
|
156
158
|
4.300 | FLV::Video tag (interframe)
|
|
157
|
-
4.
|
|
158
|
-
4.
|
|
159
|
+
4.335 | FLV::Audio tag
|
|
160
|
+
4.388 | FLV::Audio tag
|
|
159
161
|
4.400 | FLV::Video tag (interframe)
|
|
160
|
-
4.
|
|
161
|
-
4.
|
|
162
|
+
4.440 | FLV::Audio tag
|
|
163
|
+
4.492 | FLV::Audio tag
|
|
162
164
|
4.500 | FLV::Video tag (interframe)
|
|
163
|
-
4.
|
|
164
|
-
4.
|
|
165
|
+
4.544 | FLV::Audio tag
|
|
166
|
+
4.597 | FLV::Audio tag
|
|
165
167
|
4.600 | FLV::Video tag (interframe)
|
|
166
|
-
4.
|
|
167
|
-
4.697 | FLV::Audio tag
|
|
168
|
+
4.649 | FLV::Audio tag
|
|
168
169
|
4.700 | FLV::Video tag (interframe)
|
|
169
|
-
4.
|
|
170
|
+
4.701 | FLV::Audio tag
|
|
171
|
+
4.753 | FLV::Audio tag
|
|
170
172
|
4.800 | FLV::Video tag (interframe)
|
|
171
|
-
4.
|
|
172
|
-
4.
|
|
173
|
+
4.806 | FLV::Audio tag
|
|
174
|
+
4.858 | FLV::Audio tag
|
|
173
175
|
4.900 | FLV::Video tag (interframe)
|
|
174
|
-
4.
|
|
175
|
-
4.
|
|
176
|
+
4.910 | FLV::Audio tag
|
|
177
|
+
4.962 | FLV::Audio tag
|
|
176
178
|
5.000 | FLV::Video tag (interframe)
|
|
177
|
-
5.
|
|
178
|
-
5.
|
|
179
|
+
5.015 | FLV::Audio tag
|
|
180
|
+
5.067 | FLV::Audio tag
|
|
179
181
|
5.100 | FLV::Video tag (interframe)
|
|
180
|
-
5.
|
|
181
|
-
5.
|
|
182
|
+
5.119 | FLV::Audio tag
|
|
183
|
+
5.171 | FLV::Audio tag
|
|
182
184
|
5.200 | FLV::Video tag (interframe)
|
|
183
|
-
5.
|
|
184
|
-
5.
|
|
185
|
+
5.224 | FLV::Audio tag
|
|
186
|
+
5.276 | FLV::Audio tag
|
|
185
187
|
5.300 | FLV::Video tag (interframe)
|
|
186
|
-
5.
|
|
187
|
-
5.
|
|
188
|
+
5.328 | FLV::Audio tag
|
|
189
|
+
5.380 | FLV::Audio tag
|
|
188
190
|
5.400 | FLV::Video tag (interframe)
|
|
189
|
-
5.
|
|
190
|
-
5.
|
|
191
|
+
5.433 | FLV::Audio tag
|
|
192
|
+
5.485 | FLV::Audio tag
|
|
191
193
|
5.500 | FLV::Video tag (interframe)
|
|
192
|
-
5.
|
|
193
|
-
5.
|
|
194
|
+
5.537 | FLV::Audio tag
|
|
195
|
+
5.589 | FLV::Audio tag
|
|
194
196
|
5.600 | FLV::Video tag (interframe)
|
|
195
|
-
5.
|
|
196
|
-
5.
|
|
197
|
+
5.642 | FLV::Audio tag
|
|
198
|
+
5.694 | FLV::Audio tag
|
|
197
199
|
5.700 | FLV::Video tag (interframe)
|
|
198
|
-
5.
|
|
199
|
-
5.
|
|
200
|
+
5.746 | FLV::Audio tag
|
|
201
|
+
5.798 | FLV::Audio tag
|
|
200
202
|
5.800 | FLV::Video tag (interframe)
|
|
201
|
-
5.
|
|
202
|
-
5.898 | FLV::Audio tag
|
|
203
|
+
5.851 | FLV::Audio tag
|
|
203
204
|
5.900 | FLV::Video tag (interframe)
|
|
204
|
-
5.
|
|
205
|
+
5.903 | FLV::Audio tag
|
|
206
|
+
5.955 | FLV::Audio tag
|
|
205
207
|
6.000 | FLV::Video tag (interframe)
|
|
206
|
-
6.
|
|
207
|
-
6.
|
|
208
|
+
6.007 | FLV::Audio tag
|
|
209
|
+
6.059 | FLV::Audio tag
|
|
208
210
|
6.100 | FLV::Video tag (interframe)
|
|
209
|
-
6.
|
|
210
|
-
6.
|
|
211
|
+
6.112 | FLV::Audio tag
|
|
212
|
+
6.164 | FLV::Audio tag
|
|
211
213
|
6.200 | FLV::Video tag (interframe)
|
|
212
|
-
6.
|
|
213
|
-
6.
|
|
214
|
+
6.216 | FLV::Audio tag
|
|
215
|
+
6.268 | FLV::Audio tag
|
|
214
216
|
6.300 | FLV::Video tag (interframe)
|
|
215
|
-
6.
|
|
216
|
-
6.
|
|
217
|
+
6.321 | FLV::Audio tag
|
|
218
|
+
6.373 | FLV::Audio tag
|
|
217
219
|
6.400 | FLV::Video tag (interframe)
|
|
218
|
-
6.
|
|
219
|
-
6.
|
|
220
|
+
6.425 | FLV::Audio tag
|
|
221
|
+
6.477 | FLV::Audio tag
|
|
220
222
|
6.500 | FLV::Video tag (interframe)
|
|
221
|
-
6.
|
|
222
|
-
6.
|
|
223
|
+
6.530 | FLV::Audio tag
|
|
224
|
+
6.582 | FLV::Audio tag
|
|
223
225
|
6.600 | FLV::Video tag (interframe)
|
|
224
|
-
6.
|
|
225
|
-
6.
|
|
226
|
+
6.634 | FLV::Audio tag
|
|
227
|
+
6.686 | FLV::Audio tag
|
|
226
228
|
6.700 | FLV::Video tag (interframe)
|
|
227
|
-
6.
|
|
228
|
-
6.
|
|
229
|
+
6.739 | FLV::Audio tag
|
|
230
|
+
6.791 | FLV::Audio tag
|
|
229
231
|
6.800 | FLV::Video tag (interframe)
|
|
230
|
-
6.
|
|
231
|
-
6.
|
|
232
|
+
6.843 | FLV::Audio tag
|
|
233
|
+
6.895 | FLV::Audio tag
|
|
232
234
|
6.900 | FLV::Video tag (interframe)
|
|
233
|
-
6.
|
|
234
|
-
6.995 | FLV::Audio tag
|
|
235
|
-
7.000 | FLV::Video tag (interframe)
|
|
236
|
-
7.048 | FLV::Audio tag
|
|
237
|
-
7.100 | FLV::Video tag (interframe)
|
|
235
|
+
6.948 | FLV::Audio tag
|
|
@@ -4,16 +4,16 @@
|
|
|
4
4
|
0.000 | FLV::Event tag
|
|
5
5
|
| event : onMetaData
|
|
6
6
|
| audiocodecid : 2
|
|
7
|
-
| audiodatarate : 15.
|
|
7
|
+
| audiodatarate : 15.9368658399098
|
|
8
8
|
| audiodelay : 0.0
|
|
9
9
|
| audiosamplerate: 11000
|
|
10
10
|
| audiosamplesize: 16
|
|
11
11
|
| audiosize : 7805
|
|
12
12
|
| canSeekToEnd : false
|
|
13
13
|
| cuePoints : []
|
|
14
|
-
| datasize :
|
|
15
|
-
| duration : 3.
|
|
16
|
-
| filesize :
|
|
14
|
+
| datasize : 24860
|
|
15
|
+
| duration : 3.548
|
|
16
|
+
| filesize : 25285
|
|
17
17
|
| framerate : 10.0
|
|
18
18
|
| hasAudio : true
|
|
19
19
|
| hasCuePoints : false
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
| height : 154
|
|
24
24
|
| keyframes : {filepositions=>[846, 1968], times=>[0.0, 0.2]}
|
|
25
25
|
| lastkeyframetimestamp: 0.2
|
|
26
|
-
| lasttimestamp : 3.
|
|
26
|
+
| lasttimestamp : 3.448
|
|
27
27
|
| metadatacreator: flvedit........................................................
|
|
28
28
|
| metadatadate : Sat Dec 20 000000 UTC 2008
|
|
29
29
|
| stereo : false
|
|
30
30
|
| videocodecid : 4
|
|
31
|
-
| videodatarate : 35.
|
|
32
|
-
| videosize :
|
|
31
|
+
| videodatarate : 35.988726042841
|
|
32
|
+
| videosize : 16346
|
|
33
33
|
| width : 192
|
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
| event : onMetaData
|
|
6
6
|
| answer : 42
|
|
7
7
|
| audiocodecid : 2
|
|
8
|
-
| audiodatarate : 15.
|
|
8
|
+
| audiodatarate : 15.9368658399098
|
|
9
9
|
| audiodelay : 0.0
|
|
10
10
|
| audiosamplerate: 11000
|
|
11
11
|
| audiosamplesize: 16
|
|
12
12
|
| audiosize : 7805
|
|
13
13
|
| canSeekToEnd : false
|
|
14
14
|
| cuePoints : []
|
|
15
|
-
| datasize :
|
|
16
|
-
| duration : 3.
|
|
17
|
-
| filesize :
|
|
15
|
+
| datasize : 24860
|
|
16
|
+
| duration : 3.548
|
|
17
|
+
| filesize : 25285
|
|
18
18
|
| framerate : 10.0
|
|
19
19
|
| hasAudio : true
|
|
20
20
|
| hasCuePoints : false
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
| height : 154
|
|
25
25
|
| keyframes : {filepositions=>[846, 1968], times=>[0.0, 0.2]}
|
|
26
26
|
| lastkeyframetimestamp: 0.2
|
|
27
|
-
| lasttimestamp : 3.
|
|
27
|
+
| lasttimestamp : 3.448
|
|
28
28
|
| metadatacreator: flvedit........................................................
|
|
29
29
|
| metadatadate : Sat Dec 20 000000 UTC 2008
|
|
30
30
|
| pills : [red, blue]
|
|
31
31
|
| stereo : false
|
|
32
32
|
| testing : Hello, world!
|
|
33
33
|
| videocodecid : 4
|
|
34
|
-
| videodatarate : 35.
|
|
35
|
-
| videosize :
|
|
34
|
+
| videodatarate : 35.988726042841
|
|
35
|
+
| videosize : 16346
|
|
36
36
|
| width : 192
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: flvedit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.7.
|
|
4
|
+
version: 0.7.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- "Marc-Andr\xC3\xA9 Lafortune"
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-08-
|
|
12
|
+
date: 2009-08-20 00:00:00 -04:00
|
|
13
13
|
default_executable: flvedit
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -20,7 +20,7 @@ dependencies:
|
|
|
20
20
|
requirements:
|
|
21
21
|
- - ">="
|
|
22
22
|
- !ruby/object:Gem::Version
|
|
23
|
-
version:
|
|
23
|
+
version: 1.3.2
|
|
24
24
|
version:
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: backports
|
|
@@ -30,7 +30,7 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 1.
|
|
33
|
+
version: 1.7.1
|
|
34
34
|
version:
|
|
35
35
|
description: "flvedit allows you to: * compute metadata for FLV files * merge, split or cut FLVs * insert / remote cue points or other events flvedit is meant as a replacement for FLVTool2, FLVMeta, FLVTool++ It can be used as a command line tool or as a Ruby library."
|
|
36
36
|
email: github@marc-andre.ca
|