J'utilise FFMPEG pour identifier le débit binaire d'un fichier audio dans mon application Rails. Je télécharge le fichier à partir de S3 et je le stocke temporairement dans le dossier tmp, puis je lance les commandes FFMPEG.Identification du débit binaire audio à l'aide de FFMPEG
Localement tout fonctionne comme prévu. Le problème vient lors du déploiement, et je ne reçois rien de 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}}
J'utilise% x {ffmpeg_command} pour accéder à la ligne de commande, donc je suis errant si cela peut être la cause du problème où il ne trouve pas le fichier comme si elle avait été en cours d'exécution en mode natif dans Rails.
J'ai utilisé FFMPEG sur la ligne de commande sur le serveur, donc je sais que cela fonctionne très bien.
et les fichiers sont-ils écrits dans un dossier 'tmp'? – ted
Vous pouvez utiliser [ffprobe] (http://ffmpeg.org/ffprobe.html) à la place. – blahdiblah
Oui, le fichier est écrit en utilisant la syntaxe File.open. – user1756535