1

我完全被困住了。我需要了解使用 AWS-SDK for Ruby 对视频进行转码的过程。我不知道从哪里开始。我正在使用 CarrierWave-Direct 将文件上传到 s3 存储桶。记录已上传并很好地召回。上传是使用 Sidekiq 在后台完成的。我从这里去哪里?如何开始转码工作?如何维护文件记录以供以后在我的数据库中流式传输?我可以在上传 Sidekiq 过程的同时进行转码吗?我正在为试图找到解决方案而扯掉头发。

4

1 回答 1

2

转码操作在AWS::ElasticTranscoder类中定义。

完成上传到 s3 后,即可启动转码过程。为了让一个简单的转码器工作,你需要有

  1. 将在其上执行转码的管道。
  2. 确定输出视频属性的预设(您可以创建预设或使用 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 回答