Amazon Elastic TranscoderとはAmazon Web Serviceの一つ(ベータ版)で

メディア変換をできるクラウドサービス。

 

あんまりメディアファイルを扱ったこと無いから利用イメージが湧かないが、

iOS用のストリーミング技術のHLSへの変換が簡単そうなので触ってみることにした。

 

基本的な使い方は安定のクラスメソッドさんのブログで↓

http://dev.classmethod.jp/cloud/amazon-elastic-transcoder-start/

http://dev.classmethod.jp/references/amazon-elastic-transcoder-hls/

 

一般的なWeb言語のSDKは存在するものの、apex用のSDKはもちろん無いので

pipeline(入出力バケットの設定)とjob(実際の変換操作)の作成部分を作ってみた。

 

 

Signature Version 4っていう署名生成規則でリクエストしないといけないんだけど、見事にハマった…。

1. HashedCanonicalRequestを作成(上記サンプルのcreateHashedCanonicalRequest)

2. 1を使ってStringToSignを作成(上記サンプルのcreateStringToSign)

3. StringToSign、SecretKey、その他パラメータからSignature生成(上記サンプルのcreateSignature)

っていう流れで、Signatureが間違っている場合(The request signature we calculated does not match the signature you provided.って言われる )は

正解のHashedCanonicalRequestとStringToSignをエラーメッセージと同時に教えてくれるので、

これを参考にプログラム側を修正していけば、いずれ成功します。

 

ちなみにapexでのSignature Version4に関しては

テラスカイさんのブログ(http://www.terrasky.co.jp/blog/?p=3280)でも紹介されてるので、

そちらも参考すると良い感じ。

 

上記サンプルはmp4とかの形式の動画ファイルをHLS形式(tsファイル&m3u8ファイル)にするもので

「salesforceから動画をアップロードしてiOSでストリーミング配信したい!」

とか言う要件があった場合に使えそう。

 

その場合はapexやJSからS3にアップロード→パイプラインとジョブ作成 って感じかな。

 

ジョブは非同期処理なので、SNSとかとうまく組み合わせて

完了通知や完了後処理を行うと良さそう。

完了通知だとEメール、完了後処理となるとHTTP通知とかかな。