streamio-ffmpeg 0.6.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.6.3 2010-05-05
2
+
3
+ * Use DAR to calculate aspect ratio if availible
4
+
1
5
  == 0.6.2 2010-05-05
2
6
 
3
7
  * Added Movie#uncertain_duration? which is true if ffmpeg is guessing duration from bitrate
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.2
1
+ 0.6.3
data/lib/ffmpeg/movie.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module FFMPEG
2
2
  class Movie
3
3
  attr_reader :path, :duration, :bitrate
4
- attr_reader :video_stream, :video_codec, :colorspace, :resolution
4
+ attr_reader :video_stream, :video_codec, :colorspace, :resolution, :dar
5
5
  attr_reader :audio_stream, :audio_codec, :audio_sample_rate
6
6
 
7
7
  def initialize(path)
@@ -29,6 +29,7 @@ module FFMPEG
29
29
  if video_stream
30
30
  @video_codec, @colorspace, resolution = video_stream.split(/\s?,\s?/)
31
31
  @resolution = resolution.split(" ").first # get rid of [PAR 1:1 DAR 16:9]
32
+ @dar = $1 if video_stream[/DAR (\d+:\d+)/]
32
33
  end
33
34
 
34
35
  if audio_stream
@@ -56,8 +57,13 @@ module FFMPEG
56
57
  end
57
58
 
58
59
  def calculated_aspect_ratio
59
- aspect = width.to_f / height.to_f
60
- aspect.nan? ? nil : aspect
60
+ if dar
61
+ width, height = dar.split(":")
62
+ width.to_f / height.to_f
63
+ else
64
+ aspect = width.to_f / height.to_f
65
+ aspect.nan? ? nil : aspect
66
+ end
61
67
  end
62
68
 
63
69
  def audio_channels
@@ -22,7 +22,7 @@ module FFMPEG
22
22
 
23
23
  def run
24
24
  command = "ffmpeg -y -i '#{@movie.path}' #{@raw_options} '#{@output_file}'"
25
- FFMPEG.logger.info("Running transcoding...\n#{command}")
25
+ FFMPEG.logger.info("Running transcoding...\n#{command}\n")
26
26
  output = ""
27
27
  last_output = nil
28
28
  Open3.popen3(command) do |stdin, stdout, stderr|
@@ -34,7 +34,7 @@ module FFMPEG
34
34
  yield(progress) if block_given?
35
35
  end
36
36
  if line =~ /Unsupported codec/
37
- FFMPEG.logger.error "Failed encoding...\nCommand\n#{command}\nOutput\n#{output}"
37
+ FFMPEG.logger.error "Failed encoding...\nCommand\n#{command}\nOutput\n#{output}\n"
38
38
  raise "Failed encoding: #{line}"
39
39
  end
40
40
  last_output = line
@@ -42,11 +42,11 @@ module FFMPEG
42
42
  end
43
43
 
44
44
  if encoding_succeeded?
45
- FFMPEG.logger.info "Transcoding of #{@movie.path} to #{@output_file} succeeded"
45
+ FFMPEG.logger.info "Transcoding of #{@movie.path} to #{@output_file} succeeded\n"
46
46
  yield(1.0) if block_given?
47
47
  else
48
48
  errors = @errors.empty? ? "" : "Errors: #{@errors.join(", ")}"
49
- FFMPEG.logger.error "Failed encoding...\n#{command}\n\n#{output}\n#{errors}"
49
+ FFMPEG.logger.error "Failed encoding...\n#{command}\n\n#{output}\n#{errors}\n"
50
50
  raise "Failed encoding. Last output: #{last_output}. #{errors}"
51
51
  end
52
52
 
@@ -44,6 +44,20 @@ module FFMPEG
44
44
  end
45
45
  end
46
46
 
47
+ describe "given a weird aspect ratio file" do
48
+ before(:all) do
49
+ @movie = Movie.new("#{fixture_path}/movies/weird_aspect.small.mpg")
50
+ end
51
+
52
+ it "should parse the DAR" do
53
+ @movie.dar.should == "704:405"
54
+ end
55
+
56
+ it "should have correct calculated_aspect_ratio" do
57
+ @movie.calculated_aspect_ratio.to_s.should == "1.73827160493827"
58
+ end
59
+ end
60
+
47
61
  describe "given an awesome movie file" do
48
62
  before(:all) do
49
63
  @movie = Movie.new("#{fixture_path}/movies/awesome movie.mov")
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{streamio-ffmpeg}
8
- s.version = "0.6.2"
8
+ s.version = "0.6.3"
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"]
@@ -34,6 +34,7 @@ Gem::Specification.new do |s|
34
34
  "spec/fixtures/movies/awesome movie.mov",
35
35
  "spec/fixtures/movies/awesome_widescreen.mov",
36
36
  "spec/fixtures/movies/broken.mp4",
37
+ "spec/fixtures/movies/weird_aspect.small.mpg",
37
38
  "spec/fixtures/sounds/napoleon.mp3",
38
39
  "spec/spec.opts",
39
40
  "spec/spec_helper.rb",
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 6
8
- - 2
9
- version: 0.6.2
8
+ - 3
9
+ version: 0.6.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - David Backeus
@@ -58,6 +58,7 @@ files:
58
58
  - spec/fixtures/movies/awesome movie.mov
59
59
  - spec/fixtures/movies/awesome_widescreen.mov
60
60
  - spec/fixtures/movies/broken.mp4
61
+ - spec/fixtures/movies/weird_aspect.small.mpg
61
62
  - spec/fixtures/sounds/napoleon.mp3
62
63
  - spec/spec.opts
63
64
  - spec/spec_helper.rb