我正在使用 FFMPEG 来识别我的 Rails 应用程序中音频文件的比特率。我正在从 S3 下载文件,并临时存储在 tmp 文件夹中,然后对其运行 FFMPEG 命令。
在本地,一切都按预期运行。部署时出现问题,我没有从 FFMPEG 返回任何内容。
s3 = AWS::S3.new(
:access_key_id => ENV["AWS_ACCESS_KEY_ID"],
:secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"])
object = s3.buckets[ENV["AWS_S3_BUCKET"]].objects[CGI::unescape(self.url)]
tempname = Digest::MD5.hexdigest(DateTime.now.to_s) + "." + self.file_format
File.open(Rails.root.to_s + '/tmp/' + tempname, 'wb') do |f|
f.write(object.read)
end
dl = Rails.root.to_s + '/tmp/' + tempname
brcommand = "ffmpeg -i " + dl + " 2>&1 | grep Duration | sed 's/Duration: \(.*\), start/\1/g'"
ffmpeg = %x{#{brcommand}}
我正在使用 %x{ffmpeg_command} 访问命令行,所以我在徘徊是否可能导致找不到文件的问题,就好像它已经在 Rails 中本地运行一样。
我在服务器的命令行上使用了 FFMPEG,所以我知道它工作正常。