我完全被困住了。我需要了解使用 AWS-SDK for Ruby 对视频进行转码的过程。我不知道从哪里开始。我正在使用 CarrierWave-Direct 将文件上传到 s3 存储桶。记录已上传并很好地召回。上传是使用 Sidekiq 在后台完成的。我从这里去哪里?如何开始转码工作?如何维护文件记录以供以后在我的数据库中流式传输?我可以在上传 Sidekiq 过程的同时进行转码吗?我正在为试图找到解决方案而扯掉头发。
问问题
977 次
1 回答
2
转码操作在AWS::ElasticTranscoder类中定义。
完成上传到 s3 后,即可启动转码过程。为了让一个简单的转码器工作,你需要有
- 将在其上执行转码的管道。
- 确定输出视频属性的预设(您可以创建预设或使用 AWS 提供的系统预设)
现在启动 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方法检查作业的状态。一旦状态从“ Progressing ”变为“ Completed ” ,输出文件将在指定的输出桶中。
请通过这些链接:
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 主题以获取作业状态。已完成作业的响应将包含有关输出文件的必要详细信息,以便您可以将其存储在数据库中以供将来流式传输。
有关更多信息,请参阅此链接
于 2016-04-13T06:16:49.313 回答