如何将 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 完成后,即可启动转码过程。 要使简单的转码器正常工作,您需要

  1. 一个pipeline将进行转码。
  2. 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