streamio-ffmpeg 0.4.3 → 0.5.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.
data/CHANGELOG CHANGED
@@ -1,8 +1,12 @@
1
- == 0.4.3 20010-04-06
1
+ == 0.5.0 2010-04-28
2
+
3
+ * Added logging capabilities
4
+
5
+ == 0.4.3 2010-04-06
2
6
 
3
7
  * Correctly identify invalid movies on latest ffmpeg build (r22811)
4
8
 
5
- == 0.4.2 20010-04-06
9
+ == 0.4.2 2010-04-06
6
10
 
7
11
  * Escape the path to handle spaces in filenames and avoid CLI injection attacks (thanks J. Weir!)
8
12
 
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ begin
8
8
  gem.summary = %Q{Simple wrapper around ffmpeg to get metadata from movies and do transcoding}
9
9
  gem.description = %Q{Simple wrapper around ffmpeg to get metadata from movies and do transcoding}
10
10
  gem.email = "duztdruid@gmail.com"
11
- gem.homepage = "http://github.com/dbackeus/streamio-ffmpeg"
11
+ gem.homepage = "http://github.com/streamio/streamio-ffmpeg"
12
12
  gem.authors = ["David Backeus"]
13
13
  gem.add_development_dependency "rspec", ">= 1.2.9"
14
14
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.3
1
+ 0.5.0
@@ -19,15 +19,19 @@ module FFMPEG
19
19
 
20
20
  def run
21
21
  command = "ffmpeg -y -i '#{@movie.path}' #{@raw_options} '#{@output_file}'"
22
+ FFMPEG.logger.info("Running transcoding...\n#{command}")
23
+ output = ""
22
24
  last_output = nil
23
25
  Open3.popen3(command) do |stdin, stdout, stderr|
24
26
  stderr.each("r") do |line|
27
+ output << line
25
28
  if line =~ /time=(\d+.\d+)/
26
29
  time = $1.to_f
27
30
  progress = time / @movie.duration
28
31
  yield(progress) if block_given?
29
32
  end
30
33
  if line =~ /Unsupported codec/
34
+ FFMPEG.logger.error "Failed encoding...\nCommand\n#{command}\nOutput\n#{output}"
31
35
  raise "Failed encoding: #{line}"
32
36
  end
33
37
  last_output = line
@@ -35,9 +39,12 @@ module FFMPEG
35
39
  end
36
40
 
37
41
  if encoding_succeeded?
42
+ FFMPEG.logger.info "Transcoding of #{@movie.path} to #{@output_file} succeeded"
38
43
  yield(1.0) if block_given?
39
44
  else
40
- raise "Failed encoding. Last output: #{last_output}. Errors: #{@errors.join(", ")}"
45
+ errors = @errors.empty? ? "" : "Errors: #{@errors.join(", ")}"
46
+ FFMPEG.logger.error "Failed encoding...\n#{command}\n\n#{output}\n#{errors}"
47
+ raise "Failed encoding. Last output: #{last_output}. #{errors}"
41
48
  end
42
49
 
43
50
  encoded
@@ -1,9 +1,30 @@
1
1
  $LOAD_PATH.unshift File.dirname(__FILE__)
2
2
 
3
+ require 'logger'
4
+
3
5
  require 'ffmpeg/movie'
4
6
  require 'ffmpeg/transcoder'
5
7
  require 'ffmpeg/encoding_options'
6
8
 
7
9
  module FFMPEG
8
- VERSION = '0.4.3'
9
- end
10
+ VERSION = '0.5.0'
11
+
12
+ # FFMPEG logs information about its progress when it's transcoding.
13
+ # Jack in your own logger through this method if you wish to.
14
+ #
15
+ # @param [Logger] log your own logger
16
+ # @return [Logger] the logger you set
17
+ def self.logger=(log)
18
+ @logger = log
19
+ end
20
+
21
+ # Get FFMPEG logger.
22
+ #
23
+ # @return [Logger]
24
+ def self.logger
25
+ return @logger if @logger
26
+ logger = Logger.new(STDOUT)
27
+ logger.level = Logger::INFO
28
+ @logger = logger
29
+ end
30
+ end
@@ -26,6 +26,10 @@ module FFMPEG
26
26
  end
27
27
 
28
28
  describe "transcoding" do
29
+ before(:each) do
30
+ FFMPEG.logger.should_receive(:info).at_least(:once)
31
+ end
32
+
29
33
  it "should transcode the movie with progress given an awesome movie" do
30
34
  FileUtils.rm_f "#{tmp_path}/awesome.flv"
31
35
 
@@ -67,6 +71,7 @@ module FFMPEG
67
71
  end
68
72
 
69
73
  it "should fail when given an invalid movie" do
74
+ FFMPEG.logger.should_receive(:error)
70
75
  movie = Movie.new(__FILE__)
71
76
  transcoder = Transcoder.new(movie, "#{tmp_path}/fail.flv")
72
77
  lambda { transcoder.run }.should raise_error(RuntimeError, /no output file created/)
data/spec/spec_helper.rb CHANGED
@@ -5,8 +5,9 @@ require 'spec'
5
5
  require 'spec/autorun'
6
6
  require 'fileutils'
7
7
 
8
+ FFMPEG.logger = Logger.new(nil)
9
+
8
10
  Spec::Runner.configure do |config|
9
-
10
11
  end
11
12
 
12
13
  def fixture_path
@@ -17,4 +18,4 @@ def tmp_path
17
18
  @tmp_path ||= File.join(File.dirname(__FILE__), "..", "tmp")
18
19
  end
19
20
 
20
- FileUtils.mkdir_p tmp_path
21
+ FileUtils.mkdir_p tmp_path
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe FFMPEG do
4
+ describe "logger" do
5
+ after(:each) do
6
+ FFMPEG.logger = Logger.new(nil)
7
+ end
8
+
9
+ it "should be a Logger" do
10
+ FFMPEG.logger.should be_instance_of(Logger)
11
+ end
12
+
13
+ it "should be at info level" do
14
+ FFMPEG.logger = nil # Reset the logger so that we get the default
15
+ FFMPEG.logger.level.should == Logger::INFO
16
+ end
17
+
18
+ it "should be assignable" do
19
+ new_logger = Logger.new(STDOUT)
20
+ FFMPEG.logger = new_logger
21
+ FFMPEG.logger.should == new_logger
22
+ end
23
+ end
24
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{streamio-ffmpeg}
8
- s.version = "0.4.3"
8
+ s.version = "0.5.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["David Backeus"]
12
- s.date = %q{2010-04-06}
12
+ s.date = %q{2010-04-28}
13
13
  s.description = %q{Simple wrapper around ffmpeg to get metadata from movies and do transcoding}
14
14
  s.email = %q{duztdruid@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -34,9 +34,10 @@ Gem::Specification.new do |s|
34
34
  "spec/fixtures/movies/awesome movie.mov",
35
35
  "spec/spec.opts",
36
36
  "spec/spec_helper.rb",
37
+ "spec/stremio-ffmpeg_spec.rb",
37
38
  "streamio-ffmpeg.gemspec"
38
39
  ]
39
- s.homepage = %q{http://github.com/dbackeus/streamio-ffmpeg}
40
+ s.homepage = %q{http://github.com/streamio/streamio-ffmpeg}
40
41
  s.rdoc_options = ["--charset=UTF-8"]
41
42
  s.require_paths = ["lib"]
42
43
  s.rubygems_version = %q{1.3.6}
@@ -45,7 +46,8 @@ Gem::Specification.new do |s|
45
46
  "spec/ffmpeg/encoding_options_spec.rb",
46
47
  "spec/ffmpeg/movie_spec.rb",
47
48
  "spec/ffmpeg/transcoder_spec.rb",
48
- "spec/spec_helper.rb"
49
+ "spec/spec_helper.rb",
50
+ "spec/stremio-ffmpeg_spec.rb"
49
51
  ]
50
52
 
51
53
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 4
8
- - 3
9
- version: 0.4.3
7
+ - 5
8
+ - 0
9
+ version: 0.5.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - David Backeus
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-06 00:00:00 +02:00
17
+ date: 2010-04-28 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -58,9 +58,10 @@ files:
58
58
  - spec/fixtures/movies/awesome movie.mov
59
59
  - spec/spec.opts
60
60
  - spec/spec_helper.rb
61
+ - spec/stremio-ffmpeg_spec.rb
61
62
  - streamio-ffmpeg.gemspec
62
63
  has_rdoc: true
63
- homepage: http://github.com/dbackeus/streamio-ffmpeg
64
+ homepage: http://github.com/streamio/streamio-ffmpeg
64
65
  licenses: []
65
66
 
66
67
  post_install_message:
@@ -94,3 +95,4 @@ test_files:
94
95
  - spec/ffmpeg/movie_spec.rb
95
96
  - spec/ffmpeg/transcoder_spec.rb
96
97
  - spec/spec_helper.rb
98
+ - spec/stremio-ffmpeg_spec.rb