0

我完全被卡住了。我需要通過使用AWS-SDK for Ruby對視頻進行轉碼的流程。我不確定哪裏開始。我使用CarrierWave-Direct將文件上傳到s3存儲桶。記錄上傳和回收很好。上傳使用Sidekiq在後臺完成。我從哪裏出發?我如何開始轉碼作業?如何維護文件的記錄以便在數據庫中進行後續流式傳輸?我可以隨我的上傳Sidekiq流程一起轉碼嗎?我正在試圖找到解決方案。如何使用適用於Ruby的AWS-SDK的Elastic Transcoder

回答

3

轉碼操作在類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方法檢查作業的狀態。一旦狀態變爲'已完成'從'進展',輸出文件將在指定的輸出存儲區中。

請通過以下鏈接:

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鏈路

+0

提供樣品的代碼可能不被以下的精確語法。請參考文檔:) –

+0

關於CarrierWave,我該如何做到這一點?在「上傳到s3」代碼後,我會將此代碼放入我的上傳模型文件夾中,不是嗎?我將如何設置對從s3檢索視頻所需的新url的引用? –

+0

我現在不在我的機器上,但稍後我會用一些代碼更新我的問題。 –

相關問題