我正在构建一个适用于视频的Rails应用程序。我正在使用编码服务来编码我的视频,并将编码文件和一些缩略图放在我的s3上的指定位置。我可以通过AWS:S3访问视频,如下所示:
AWS::S3::S3Object.find 'videos/36/base/video.mp4', 'my-bucket-name'
-- or --
AWS::S3::S3Object.value 'videos/36/base/video.mp4', 'my-bucket-name'
我想要做的是在我的编码服务通知编码完成后,使用Paperclip管理这些文件。不知道该怎么做。以下是我到目前为止的情况:
class Encoding << ActiveRecord::Base
has_attached_file :video,
:url => ':s3_domain_url',
:path => 'videos/:video_id/:encoding_type/basename.:extension',
:storage => :s3,
:s3_credentials => {:access_key_id => AppConfig.s3.access_key_id,
:secret_access_key => AppConfig.s3.secret_access_key,
:bucket => AppConfig.s3.bucket
},
:s3_permissions => 'authenticated-read',
:s3_protocol => 'http'
end
class Video << ActiveRecord::Base
def after_encoded
encoding = encodings.build
encoding.video = ## WHAT GOES HERE ??
encoding.save
end
end
谢谢!非常感谢您的帮助
- 乔纳森
答案 0 :(得分:3)
我想出了如何做到这一点。直接简单地设置回形针属性。所以我的after_encoded方法看起来像这样
def after_encoded
encoding = encodings.build
encoding.video_file_name = @video_details['url'].split('/').last
encoding.video_content_type = MIME::Types.type_for(encoding.video_file_name).to_s
encoding.video_file_size = @video_details['size']
encoding.video_updated_at = Time.now
encoding.save
end
效果很好