lib/ffmpeg/transcoder.rb in streamio-ffmpeg-0.4.3 vs lib/ffmpeg/transcoder.rb in streamio-ffmpeg-0.5.0
- old
+ new
@@ -17,28 +17,35 @@
@errors = []
end
def run
command = "ffmpeg -y -i '#{@movie.path}' #{@raw_options} '#{@output_file}'"
+ FFMPEG.logger.info("Running transcoding...\n#{command}")
+ output = ""
last_output = nil
Open3.popen3(command) do |stdin, stdout, stderr|
stderr.each("r") do |line|
+ output << line
if line =~ /time=(\d+.\d+)/
time = $1.to_f
progress = time / @movie.duration
yield(progress) if block_given?
end
if line =~ /Unsupported codec/
+ FFMPEG.logger.error "Failed encoding...\nCommand\n#{command}\nOutput\n#{output}"
raise "Failed encoding: #{line}"
end
last_output = line
end
end
if encoding_succeeded?
+ FFMPEG.logger.info "Transcoding of #{@movie.path} to #{@output_file} succeeded"
yield(1.0) if block_given?
else
- raise "Failed encoding. Last output: #{last_output}. Errors: #{@errors.join(", ")}"
+ errors = @errors.empty? ? "" : "Errors: #{@errors.join(", ")}"
+ FFMPEG.logger.error "Failed encoding...\n#{command}\n\n#{output}\n#{errors}"
+ raise "Failed encoding. Last output: #{last_output}. #{errors}"
end
encoded
end