如何将Elastic Transcoder与适用于Ruby的AWS-SDK一起使用

时间:2016-04-13 00:25:35

标签: ruby-on-rails amazon-web-services carrierwave sidekiq amazon-elastic-transcoder

我完全陷入困境。我需要完成使用AWS-SDK for Ruby转码视频的过程。我不确定从哪里开始。我使用CarrierWave-Direct将文件上传到s3存储桶。记录上传并被召回。使用Sidekiq在后台完成上传。我从哪里开始?如何启动转码工作?如何维护文件记录以便以后在我的数据库中进行流式处理?我可以使用上传的Sidekiq流程进行转码吗?为了找到解决办法,我想把头发撕掉。

1 个答案:

答案 0 :(得分:4)

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

转码过程可以在您上传到s3完成后启动。 要使用简单的代码转换器,您需要

  1. 将在其上执行转码的 管道
  2. 预设 ,用于确定输出视频属性(您可以创建预设或使用AWS提供的系统预设)
  3. 现在启动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链接