Оказывается, что SWFUpload предоставляет доступ к свойствам файла перед загрузкой в файл handlers.js. Итак, чтобы получить дату захвата:
//handlers.js
function uploadStart(file) {
// set the captured_at to the params
swfu.removePostParam("captured_at");
swfu.addPostParam("captured_at", file.modificationdate);
...
}
Теперь вы можете получить его в контроллере:
class UploadsController < ApplicationController
def create
@upload.captured_at = params[:captured_at].try :to_time
...
end
end
Чтобы узнать продолжительность видео, мы использовали Paper_ip before_post_process для запуска команды FFmpeg:
class Upload < ActiveRecord::Base
before_post_process :get_video_duration
def get_video_duration
result = `ffmpeg -i #{self.media.to_file.path} 2>&1`
if result =~ /Duration: ([\d][\d]:[\d][\d]:[\d][\d].[\d]+)/
self.duration = $1.to_s
end
return true
end
...
end