如何将 Elastic Transcoder 与 AWS-SDK 结合使用 Ruby
How to use Elastic Transcoder with the AWS-SDK for Ruby
我完全卡住了。我需要了解使用 Ruby 的 AWS-SDK 对视频进行转码的过程。我不知道从哪里开始。我正在使用 CarrierWave-Direct 将文件上传到 s3 存储桶。记录已上传并可以正常召回。上传是使用 Sidekiq 在后台完成的。我从这里去哪里?如何开始转码工作?我如何维护文件记录以便以后在我的数据库中进行流式传输?我可以在上传 Sidekiq 过程中进行转码吗?我正在努力寻找解决方案。
转码操作在 class AWS::ElasticTranscoder.
中定义
上传到 s3 完成后,即可启动转码过程。
要使简单的转码器正常工作,您需要
- 一个pipeline将进行转码。
- Presets 确定输出视频属性(您可以创建预设或使用 AWS 提供的系统预设)
现在开始AWS::ElasticTranscoder::Clientclass
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
}
})
这将 return 一个可用于创建作业的 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 方法检查作业的状态。一旦状态从“进行中”变为“已完成”,输出文件将在指定的输出桶中。
请检查这些 link:
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 link
我完全卡住了。我需要了解使用 Ruby 的 AWS-SDK 对视频进行转码的过程。我不知道从哪里开始。我正在使用 CarrierWave-Direct 将文件上传到 s3 存储桶。记录已上传并可以正常召回。上传是使用 Sidekiq 在后台完成的。我从这里去哪里?如何开始转码工作?我如何维护文件记录以便以后在我的数据库中进行流式传输?我可以在上传 Sidekiq 过程中进行转码吗?我正在努力寻找解决方案。
转码操作在 class AWS::ElasticTranscoder.
中定义上传到 s3 完成后,即可启动转码过程。 要使简单的转码器正常工作,您需要
- 一个pipeline将进行转码。
- Presets 确定输出视频属性(您可以创建预设或使用 AWS 提供的系统预设)
现在开始AWS::ElasticTranscoder::Clientclass
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
}
})
这将 return 一个可用于创建作业的 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 方法检查作业的状态。一旦状态从“进行中”变为“已完成”,输出文件将在指定的输出桶中。
请检查这些 link:
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 link