Я пытаюсь использовать скрипт aviglitch для каждого файла в папке.Мне нужно было бы: 1. открыть каждый файл и выполнить изменения 2. экспортировать каждый новый файл с добавленным глитчем_ перед исходным именем файла
Вот соответствующие строки кода:
Dir.glob("*.avi") do |filename|
a = AviGlitch.open '#{filename}'
o.output 'glitch_#{filename}'
end
Скрипт выдает мне следующую ошибку:
"C: \ Users \ Admin \ Documents \ Projects \ VIDEO \ 0000_BLENDER RENDER SCRIPT RENDER \ cig_fast_2frames \ 8frames> cig_fast_2frames_glitch.rb Трассировка (последний последний вызов): 7: от C: / Users / Admin / Документы / Проекты / VIDEO / 0000_BLENDER RENDER SCENDIP / cig_fast_2frames / 8frames / cig_fast_2frames_glitch.rb: 6: в <main>'
6: from C:/Users/Admin/Documents/Projects/VIDEO/0000_BLENDER SCRIPT RENDER/cig_fast_2frames/8frames/cig_fast_2frames_glitch.rb:6:in
glob '5: от C: / Users / Admin / Documents / Projects / VIDEO/ 0000_BLENDER RENDER / cig_fast_2frames / 8frames / cig_fast_2frames_glitch.rb: 8: в block in <main>'
4: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/aviglitch-0.1.5/lib/aviglitch.rb:46:in
open '3: из C: /Ruby25-x64/lib/ruby/gems/2.5.0/gems/aviglitch-0.1.5/lib/aviglitch.rb:46:in new'
2: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/aviglitch-0.1.5/lib/aviglitch/base.rb:18:in
инициализировать '1: из C: /Ruby25-x64/lib/ruby/gems/2.5.0/gems/aviglitch-0.1.5/lib/aviglitch/base.rb: 18: in open'
C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/aviglitch-0.1.5/lib/aviglitch/base.rb:18:in
initialize ': нет такого файла или каталога @ rb_sysopen - # {имя_файла} (Errno :: ENOENT) "
Если я запускаю скрипт с набранными вручную именами файлов, он работает.Что я делаю не так?
Вот весь код:
require 'aviglitch'
Dir.glob("*.avi") do |filename|
a = AviGlitch.open '#{filename}' # Rewrite this line for your file.
rep = 3
inc_rep = 0
inc_fr = 1
framecount = 0
d = []
a.frames.each_with_index do |f, i|
d.push(i) if f.is_deltaframe? # Collecting non-keyframes indices.
end
q = a.frames[0, 5] # Keep first key frame.
6.times do
x = a.frames[d[framecount], 1] # Select a certain non-keyframe.
q.concat(x * rep) # Repeat the frame n times and concatenate with q.
framecount = framecount + inc_fr
rep = rep + inc_rep
end
o = AviGlitch.open q # New AviGlitch instance using the frames.
o.mutate_keyframes_into_deltaframes!(range = nil)
o.output 'glitch_#{filename}'
end
Спасибо
Бенни