Class: Arquivo::C118mp3
- Inherits:
-
String
- Object
- String
- Arquivo::C118mp3
- Defined in:
- lib/arquivo/mp3.rb
Overview
permite processar documentos em audio
Instance Attribute Summary collapse
-
#base ⇒ String
readonly
Base do documento.
-
#ext ⇒ String
readonly
Extensao do documento.
-
#file ⇒ String
readonly
Nome do documento.
-
#opcoes ⇒ Hash
readonly
Opcoes parametrizar MINUTA.
-
#size ⇒ Integer
readonly
Tamanho do documento.
processamento collapse
-
#onoise(npr) ⇒ String
Opcoes reducao ruido de fundo.
-
#orate ⇒ String
Opcoes sample rate & channels.
-
#processa_mp3(npr) ⇒ Object
Processa mp3 para arquivo.
segmentacao collapse
-
#cmd_segmenta(tempos, pse, cmd) ⇒ String
Comando para segmentar minuta.
-
#nome_segmento(pse) ⇒ String
Nome do segmento.
-
#segmenta_minuta(tempos) ⇒ Object
Segmenta minuta segundo lista tempos.
-
#segmenta_minuta? ⇒ Boolean
Posso segmentar minuta?.
Instance Method Summary collapse
-
#initialize(mp3, opt) ⇒ C118mp3
constructor
MP3 c118.
Constructor Details
#initialize(mp3, opt) ⇒ C118mp3
Returns MP3 c118.
22 23 24 25 26 27 28 |
# File 'lib/arquivo/mp3.rb', line 22 def initialize(mp3, opt) @file = mp3 @ext = File.extname(mp3).downcase @base = File.basename(mp3, File.extname(mp3)) @size = `soxi -V0 -D #{mp3} #{O1}`.to_f @opcoes = opt end |
Instance Attribute Details
#base ⇒ String (readonly)
Returns base do documento.
11 12 13 |
# File 'lib/arquivo/mp3.rb', line 11 def base @base end |
#ext ⇒ String (readonly)
Returns extensao do documento.
9 10 11 |
# File 'lib/arquivo/mp3.rb', line 9 def ext @ext end |
#file ⇒ String (readonly)
Returns nome do documento.
7 8 9 |
# File 'lib/arquivo/mp3.rb', line 7 def file @file end |
#opcoes ⇒ Hash (readonly)
Returns opcoes parametrizar MINUTA.
15 16 17 |
# File 'lib/arquivo/mp3.rb', line 15 def opcoes @opcoes end |
#size ⇒ Integer (readonly)
Returns tamanho do documento.
13 14 15 |
# File 'lib/arquivo/mp3.rb', line 13 def size @size end |
Instance Method Details
#cmd_segmenta(tempos, pse, cmd) ⇒ String
Returns comando para segmentar minuta.
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/arquivo/mp3.rb', line 69 def cmd_segmenta(tempos, pse, cmd) return cmd[1..-1] unless pse < tempos.size o = nome_segmento(pse) cmd += ";sox #{file} #{base}/#{o}#{ext} trim #{tempos[pse]}" pse += 1 cmd += " =#{tempos[pse]}" if pse < tempos.size puts o cmd_segmenta(tempos, pse, cmd + " #{O2}") end |
#nome_segmento(pse) ⇒ String
Returns nome do segmento.
61 62 63 |
# File 'lib/arquivo/mp3.rb', line 61 def nome_segmento(pse) "sg#{format('%<v>02d', v: pse)}-#{base[/\d{8}/]}#{base[/-\w+/]}" end |
#onoise(npr) ⇒ String
Returns opcoes reducao ruido de fundo.
40 41 42 |
# File 'lib/arquivo/mp3.rb', line 40 def onoise(npr) npr ? "noisered #{npr} #{format('%<v>.9f', v: opcoes[:amount])} " : '' end |
#orate ⇒ String
Returns opcoes sample rate & channels.
45 46 47 |
# File 'lib/arquivo/mp3.rb', line 45 def orate "rate -v #{opcoes[:rate]}k channels 1" end |
#processa_mp3(npr) ⇒ Object
Processa mp3 para arquivo
34 35 36 |
# File 'lib/arquivo/mp3.rb', line 34 def processa_mp3(npr) system "sox -G #{file} tmp/zip/#{base}.mp3 #{onoise(npr)}#{orate} #{O2}" end |
#segmenta_minuta(tempos) ⇒ Object
Segmenta minuta segundo lista tempos
55 56 57 |
# File 'lib/arquivo/mp3.rb', line 55 def segmenta_minuta(tempos) system cmd_segmenta(['0'] + tempos, 0, '') end |
#segmenta_minuta? ⇒ Boolean
Returns posso segmentar minuta?.
82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/arquivo/mp3.rb', line 82 def segmenta_minuta? return true if AT.include?(ext) && size.positive? && !File.exist?(base) if File.exist?(base) puts "erro: #{base} pasta ja existe" else puts 'erro: so consigo processar minutas com som ' \ "e do tipo #{AT}" end false end |