나는 내 레일 3 응용 프로그램 Zencoder를 통합하는이 튜토리얼을 다음 해요 : http://www.nickdesteffen.com/blog/video-encoding-with-uploadify-carrierwave-and-zencoder레일 3 : Amazon S3에서 작동하도록 Zencoder를 구성하는 방법은 무엇입니까?
튜토리얼은 스토리지 랙 스페이스를 사용을하지만, 내가 대신 저장을 위해 아마존 S3를 사용할 수 있도록 코드를 적용하고 싶습니다. Rackspace의 모든 정보를 Amazon S3 정보로 바꿨지 만 양식에 비디오를 업로드하려고 할 때마다이 HTTP 오류가 나타납니다. "업로드 한 파일에 오류가 발생했습니다. 올바른 유형인지 확인하십시오. . "
이 작업을하려면 여기를 수정해야합니까?
carrierwave.rb
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => 'xxx',
:aws_secret_access_key => 'xxx',
}
config.fog_directory = 'mybucket'
config.fog_public = true
config.fog_attributes = {'Cache-Control' => 'max-age=315576000'}
end
video_uploader.rb
class VideoUploader < CarrierWave::Uploader::Base
include Rails.application.routes.url_helpers
Rails.application.routes.default_url_options = ActionMailer::Base.default_url_options
after :store, :zencode
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def extension_white_list
%w(mov avi mp4 mkv wmv mpg)
end
def filename
"video.mp4" if original_filename
end
private
def zencode(args)
zencoder_response = Zencoder::Job.create({:input => 's3://mybucket/key.mp4',
:outputs => [{:label => 'vp8 for the web',
:url => 's3://mybucket/key_output.webm'}]})
zencoder_response.body["outputs"].each do |output|
if output["label"] == "web"
@model.zencoder_output_id = output["id"]
@model.processed = false
@model.save(:validate => false)
end
end
end
end