2011-03-25 75 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