IO.popen和ffmpeg出错

时间:2015-03-06 11:30:50

标签: ruby-on-rails ruby ruby-on-rails-4 ffmpeg

我收到了mp3文件(2分钟/文件)我想连接在一起并创建一个更大的文件。所以我使用ffmpeg和IO.popen

为我的模型创建了一个函数
FileUtils.mkdir_p "#{Rails.root}/tmp/files"
imported_dir = "#{Rails.root}/tmp/files/#{SecureRandom.uuid}"
links.each_with_index do |link, index|
  file_path = "#{imported_dir}_#{index}#{File.extname(link)}"
  File.open(file_path, 'wb') do |file|
    file.write open(link).read
  end
  concat_list << "file '#{file_path}'\n"
end
File.open("#{imported_dir}.txt", 'w'){ |f| f.write(concat_list)}
io = IO.popen("#{Rails.root}/lib/ffmpeg/ffmpeg -f concat -i #{imported_dir}.txt -c copy #{imported_dir}.mp3").readlines
if sound = Sound.create(user_id: user.id, file: File.open("#{imported_dir}.mp3"), lang: lang, title: title)
  audio = FFMPEG::Movie.new("#{imported_dir}.mp3")
  if !audio.valid?
    puts "//_!_\\\\ Failed reading with ffmpeg (#{sound.id})#{sound.title} //_!_\\\\"
    return false
  end
end 

问题是我的.txt文件包含文件路径

file '/home/test/apps/example/releases/20150305224026/tmp/files/4dbe9707-cfef-467b-ab2c-a5e1e1165953_0.mp3'

也创建了文件但是没有创建最终文件,我收到了错误消息:

No such file or directory @ rb_sysopen - /home/test/apps/example/releases/20150305224026/tmp/files/4dbe9707-cfef-467b-ab2c-a5e1e1165953.mp3

如果有人可以帮助我

1 个答案:

答案 0 :(得分:0)

确保目标目录存在且可由运行应用程序的用户写入。