RoR:使用回形针进行视频上传和带有弹性转码器的转码器

时间:2013-11-25 22:00:15

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

我想知道是否有人可以帮我解决这个问题。

我需要帮助才能找到一种使用弹性转码器制作回形针的方法。

我需要能够使用paperclip在S3 Amazon存储桶中保存上传的视频,然后将上传的视频转码为3种不同的格式并将其保存在同一个存储桶中。

问题是我可以一起完成所有工作吗?

1 个答案:

答案 0 :(得分:1)

使用名为'elastic_transcoder'的宝石

解决了这个问题

以下是使用elastic_transcoder

完成的示例
  • 首先获取您要转码的视频的网址,不包括AWS domain namebucket name

    url = self.paperclip_video.url.split('/').pop
    url = url.drop(3).join('/')

    您明白上述代码会因您获得的网址而异,您只需要我在排除AWS domain namebucket name之前所说的路径。

  • 然后获取原始视频的路径
    input_url = url + '/' + self.paperclip_video_file_name

  • 然后获取filename不包括用户的扩展程序,为output url生成transcoded video

    file_name = File.basename(self.paperclip_video_file_name, File.extname(self.paperclip_video_file_name))

  • 然后创建输出路径

    output_url = url + '/mp4_' + file_name + '.mp4'

    为简单起见,我将代码转换为mp4

  • 创建新的elastic transcoding pipline

    pipeline = ElasticTranscoder::Pipeline.new

    请注意,您需要首先在AWS帐户上设置管道,而且您需要在preset上为mp4转换设置AWS account

  • 通过传递从pipline object

    获得的pipeline_id来初始化AWS

    pipeline_front.pipeline '***************'

  • 创建一个新的Jobs对象,将转码作业传递给

    jobs = ElasticTranscoder::Jobs.new

  • 创建新的Job

    jobs.create_job input_url, output_url, "**your pipeline_id**", "your preset_id", "#{url}/web_thumbnail-{count}"

这将完成工作,您可以将视频转码。