我有一个ruby程序,可以使用ffmpeg将视频转换为MP4格式。我使用crontab每15分钟运行一次ruby程序。 crontab实际上运行ruby程序,但文件的转换不完整。在完成转换之前,该过程已停止。我的testin示例代码如下。
def convert(y)
system "ffmpeg -i #{SOURCE_FOLDER + LOCATION_SOURCE}/#{y} -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 #{DEST_FOLDER + LOCATION_DEST}/#{y}"
end
SOURCE_FOLDER = "/home/someone/work/videoapp/public/"
DEST_FOLDER = "/home/someone/work/videoapp/public/"
LOCATION_SOURCE = "source"
LOCATION_DEST = "dest"
files = Dir.new(SOURCE_FOLDER + LOCATION_SOURCE)
files.each do |x|
convert(x)
end
如果我在控制台中手动运行,此代码可以正常工作。
答案 0 :(得分:1)
我的第一个猜测是它在“点”目录上死亡。在Unix中,每个目录/文件夹中都有两个目录:“。”和“......”。您需要特别跳过脚本中的那些:
next if File.directory?(x) # OR
next file x.match(/^\.+$/)
- 或 -
专门查看您想要的任何文件类型
Dir[SOURCE_FOLDER + LOCATION_SOURCE + "*.wav"].each do |file|
convert(file)
end
更新:20110401
将Unix重定向添加到crontab条目以查看输出是什么
* * * * * /your/program/location/file.rb 1> /some/output/file.txt 2>&1