我在一个 RoR 网站上工作,我在网站上上传媒体文件(如 mp3、pdf、图像和视频)。网站托管在 AWS 上,我正在使用 S3 存储桶上传媒体文件。
当我上传视频时,首先将视频保存在我的网站托管的 AWS 实例上我的项目的公共文件夹中,然后使用 FFMPEG 创建该视频的缩略图并使用 ffmpeg-streamio 获取持续时间并在创建缩略图后删除该视频。在上传大视频之前它工作正常,但是当我尝试通过错误上传大视频时,即
Errno::ENOMEM(无法分配内存 - /usr/local/bin/ffmpeg -i /var/www/html/proj/public/13/NVC_trim.mov):
path = "public/" + @admin.id.to_s + "/" + params[:video].original_filename
dirpath = "public/" + @admin.id.to_s
FileUtils.mkdir_p dirpath
aFile = File.new(path, "w")
aFile.write(open(params[:video]).read)
aFile.close
system"/usr/local/bin/ffmpeg -itsoffset -4 -i /var/www/html/proj/#{path} -vcodec mjpeg -vframes 1 -an -f rawvideo /var/www/html/proj/#{dirpath}/thumb.png"
#calculate video duration
FFMPEG.ffmpeg_binary = '/usr/local/bin/ffmpeg'
movie = FFMPEG::Movie.new("/var/www/html/proj/#{path}")
我在代码中遗漏了什么吗?对此的任何想法或帮助将不胜感激。
提前致谢 :)