Slide 13
Slide 13 text
MIXI, Inc.
1秒動画の生成パイプライン実装イメージ(1/3)
# パイプライン全体の実装
class OneSecondMoviePipeline
include Sidekiq::Worker
def perform
trim(nil, {}) # パイプラインの先頭は trimの処理
end
# ヘルパメソッド self.define_sidekiq_method については gihyo.jp の記事参照
# パイプラインの定義。 trim, effect, add_watermark, crossfadeの順で処理する
define_sidekiq_method(method: 'trim', worker_class: TrimWorker, on_success_method: 'effect',
on_success_options: proc { |params| { outputs: params.map { |p| p.output.to_h } } })
define_sidekiq_method(method: 'effect', worker_class: EffectWorker, on_success_method: 'add_watermark',
on_success_options: proc { |params| { outputs: params.map { |p| p.output.to_h } } })
define_sidekiq_method(method: 'add_watermark', worker_class: AddWatermarkWorker, on_success_method: 'crossfade',
on_success_options: proc { |params| { outputs: params.map { |p| p.output.to_h } } })
define_sidekiq_method(method: 'crossfade', worker_class: CrossfadeWorker, on_success_method: 'on_success',
on_success_options: proc { |_| {} })
def on_complete(status, options)
# パイプライン完了後の処理として成果物として得られた動画ファイルの保存・返却を行う(省略)
end
end
13