我完全陷入困境。我需要完成使用AWS-SDK for Ruby转码视频的过程。我不确定从哪里开始。我使用CarrierWave-Direct将文件上传到s3存储桶。记录上传并被召回。使用Sidekiq在后台完成上传。我从哪里开始?如何启动转码工作?如何维护文件记录以便以后在我的数据库中进行流式处理?我可以使用上传的Sidekiq流程进行转码吗?为了找到解决办法,我想把头发撕掉。
答案 0 :(得分:4)
转码操作在类 AWS :: ElasticTranscoder 中定义。
转码过程可以在您上传到s3完成后启动。 要使用简单的代码转换器,您需要
现在启动AWS :: ElasticTranscoder :: Client类
transcoder = AWS::ElasticTranscoder::Client.new(:access_key_id => AwsKeyId,:secret_access_key => AwsAccessKey,:region=>TranscoderRegion)
创建管道:
transcoder.create_pipeline(options = {
:name => “test_pipeline”,
:input_bucket => “bucket_name” ,
:output_bucket => “bucket_name”,
:role => Elastic-Transcoder-Default-Role,
:content_config => {
:bucket => “bucket_name”,
:storage_class => Standard
}
:thumbnail_config => {
:bucket => “bucket_name”,
:storage_class => Standard
}
})
这将返回可用于创建作业的 pipelineId 。
现在您可以按如下方式创建作业:
transcoder_obj.create_job({
:pipeline_id=>PipelineId,
:input=> {
:key=>"video_path",
:frame_rate=> "auto",
:resolution => "auto",
:aspect_ratio => "auto",
:container => 'auto'
},
:outputs=>[{
:key=>"output_file_location",
:preset_id=>1351620000001-000010,
:thumbnail_pattern=>"thumbnails/thumb_{count}"
}]
})
这将启动转码过程。您可以使用 read_job 方法检查作业的状态。状态变为 已完成'从' 进度',输出文件将存在于指定的输出存储桶中。
请浏览以下链接:
http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/ElasticTranscoder/Client.html http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/system-presets.html
AWS :: SNS提供了一种更好的方式来获取有关转码作业状态的通知。您可以订阅sns主题以获取作业状态。已完成作业的响应将包含有关输出文件的必要详细信息,以便您可以将其存储在数据库中以供将来传输。
有关详细信息,请参阅this链接