2011-03-25 60 views
1

我有一个使用ffmpeg将视频转换为MP4格式的ruby程序。我使用crontab每15分钟运行一次ruby程序。实际上crontab运行ruby程序,但文件的转换并不完整。该过程在完成转换之前停止。我的testin代码示例如下。cron作业没有完成过程?

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

你可以发布crontab条目吗?另外,这是完整的脚本? – Wukerplank 2011-03-25 10:36:15

回答

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

+0

没有那个“..”和“。”不是不完整的原因。我曾尝试直接在crontab中使用ffmpeg命令,但仍然存在相同的问题。我是指文件夹中的一个视频文件,并直接指定路径... – zealmurugan 2011-03-29 05:47:34

+0

您是否将重定向添加到您的crontab中?他们会向您显示可能在成功/失败时生成的任何错误消息。添加到我上面的答案。 – samullen 2011-04-01 12:38:20