Class: RVideo::Tools::Ffmpeg2theora
Instance Attribute Summary collapse
#command, #options, #progress, #raw_result
Instance Method Summary
collapse
abstract_attribute_formatter, #audio_bit_rate, #audio_channels, #audio_sample_rate, #calculate_height, #calculate_width, #deinterlace, #do_execute, #execute, #fps, #get_audio_bit_rate, #get_audio_channels, #get_audio_sample_rate, #get_constrain_resolution, #get_deinterlace, #get_fit_to_height_resolution, #get_fit_to_width_resolution, #get_fps, #get_letterbox_resolution, #get_mono_audio, #get_original_fps, #get_original_resolution, #get_padding_resolution, #get_resolution, #get_specific_audio_bit_rate, #get_specific_audio_sample_rate, #get_specific_fps, #get_specific_resolution, #get_stereo_audio, #get_valid_height, #get_valid_width, #get_video_bit_rate, #get_video_bit_rate_max, #get_video_bit_rate_min, #get_video_bit_rate_tolerance, #get_video_quality, #initialize, #original, #original=, #resolution, #resolution_and_padding, #resolution_keep_aspect_ratio, #temp_dir, #valid_dimension?, #video_bit_rate, #video_bit_rate_max, #video_bit_rate_min, #video_bit_rate_tolerance, #video_quality
Instance Attribute Details
Returns the value of attribute raw_metadata.
6
7
8
|
# File 'lib/rvideo/tools/ffmpeg2theora.rb', line 6
def raw_metadata
@raw_metadata
end
|
Instance Method Details
#do_execute_with_progress(command, &block) ⇒ Object
12
13
14
15
16
17
18
19
20
|
# File 'lib/rvideo/tools/ffmpeg2theora.rb', line 12
def do_execute_with_progress(command, &block)
@raw_result = ''
duration = 0
CommandExecutor::execute_with_block(command, "\r") do |line|
progress, duration = parse_progress(line, duration)
block.call(progress) if block && progress
@raw_result += line.to_s + "\r"
end
end
|
#execute_with_progress(&block) ⇒ Object
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/rvideo/tools/ffmpeg2theora.rb', line 42
def format_video_quality(params={})
bitrate = params[:video_bit_rate].blank? ? nil : params[:video_bit_rate]
factor = (params[:scale][:width].to_f * params[:scale][:height].to_f * params[:fps].to_f)
case params[:video_quality]
when 'low'
" -v 1 "
when 'medium'
"-v 5 "
when 'high'
"-v 10 "
else
""
end
end
|
#parse_progress(line, duration) ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/rvideo/tools/ffmpeg2theora.rb', line 29
def parse_progress(line, duration)
if line =~ /Duration: (\d{2}):(\d{2}):(\d{2}).(\d{1})/
duration = (($1.to_i * 60 + $2.to_i) * 60 + $3.to_i) * 10 + $4.to_i
end
if line =~ /(\d{1,2}):(\d{2}):(\d{2})\.(\d)\d audio: \d+kbps video: \d+kbps/
current_time = (($1.to_i * 60 + $2.to_i) * 60 + $3.to_i) * 10 + $4.to_i
end
progress = (current_time*100/duration) rescue nil
return [progress, duration]
end
|
#parse_result(result) ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/rvideo/tools/ffmpeg2theora.rb', line 57
def parse_result(result)
if m = /does not exist or has an unknown data format/.match(result)
raise TranscoderError::InvalidFile, "I/O error"
end
if m = /General output options/.match(result)
raise TranscoderError::InvalidCommand, "no command passed to ffmpeg2theora, or no output file specified"
end
@raw_metadata = result.empty? ? "No Results" : result
return true
end
|
8
9
10
|
# File 'lib/rvideo/tools/ffmpeg2theora.rb', line 8
def tool_command
'ffmpeg2theora'
end
|