Class: FFMPEG::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/ffmpeg/configuration.rb

Overview

Configuration options for FFMPEG

Examples:

FFMPEG.configure do |config|
  config.ffmpeg_binary = "/usr/local/bin/ffmpeg"
  config.ffprobe_binary = "/usr/local/bin/ffprobe"
  config.timeout = 300
  config.logger = Rails.logger
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/ffmpeg/configuration.rb', line 61

def initialize
  @ffmpeg_binary = find_binary("ffmpeg")
  @ffprobe_binary = find_binary("ffprobe")
  @timeout = 600 # 10 minutes default
  @logger = nil
  @default_video_codec = "libx264"
  @default_audio_codec = "aac"
  @default_format = "mp4"
  @threads = 0 # auto
  @hardware_acceleration = nil
  @temp_dir = Dir.tmpdir
  @overwrite_output = true
end

Instance Attribute Details

#default_audio_codecString

Default audio codec for transcoding

Returns:

  • (String)


39
40
41
# File 'lib/ffmpeg/configuration.rb', line 39

def default_audio_codec
  @default_audio_codec
end

#default_formatString

Default output format

Returns:

  • (String)


43
44
45
# File 'lib/ffmpeg/configuration.rb', line 43

def default_format
  @default_format
end

#default_video_codecString

Default video codec for transcoding

Returns:

  • (String)


35
36
37
# File 'lib/ffmpeg/configuration.rb', line 35

def default_video_codec
  @default_video_codec
end

#ffmpeg_binaryString

Path to ffmpeg binary

Returns:

  • (String)


19
20
21
# File 'lib/ffmpeg/configuration.rb', line 19

def ffmpeg_binary
  @ffmpeg_binary
end

#ffprobe_binaryString

Path to ffprobe binary

Returns:

  • (String)


23
24
25
# File 'lib/ffmpeg/configuration.rb', line 23

def ffprobe_binary
  @ffprobe_binary
end

#hardware_accelerationSymbol?

Hardware acceleration type (nil, :cuda, :videotoolbox, :vaapi, :qsv)

Returns:

  • (Symbol, nil)


51
52
53
# File 'lib/ffmpeg/configuration.rb', line 51

def hardware_acceleration
  @hardware_acceleration
end

#loggerLogger?

Logger for debug output

Returns:

  • (Logger, nil)


31
32
33
# File 'lib/ffmpeg/configuration.rb', line 31

def logger
  @logger
end

#overwrite_outputBoolean

Whether to overwrite existing output files

Returns:

  • (Boolean)


59
60
61
# File 'lib/ffmpeg/configuration.rb', line 59

def overwrite_output
  @overwrite_output
end

#temp_dirString

Temporary directory for intermediate files

Returns:

  • (String)


55
56
57
# File 'lib/ffmpeg/configuration.rb', line 55

def temp_dir
  @temp_dir
end

#threadsInteger

Number of threads to use (0 = auto)

Returns:

  • (Integer)


47
48
49
# File 'lib/ffmpeg/configuration.rb', line 47

def threads
  @threads
end

#timeoutInteger

Default timeout for commands in seconds

Returns:

  • (Integer)


27
28
29
# File 'lib/ffmpeg/configuration.rb', line 27

def timeout
  @timeout
end

Instance Method Details

#reset!Object

Reset configuration to defaults



76
77
78
# File 'lib/ffmpeg/configuration.rb', line 76

def reset!
  initialize
end

#validate!Object

Validate configuration

Raises:



83
84
85
86
87
88
# File 'lib/ffmpeg/configuration.rb', line 83

def validate!
  raise FFmpegNotFound, @ffmpeg_binary unless binary_exists?(@ffmpeg_binary)
  raise FFprobeNotFound, @ffprobe_binary unless binary_exists?(@ffprobe_binary)

  true
end