嫁が携帯で撮った息子の動画を成長記録ブログで「ストリーミング再生」できるようにしたくなったのでプラグイン書きました。
※version 0.0.1 現在、S3への分割アップロード等に対応していない為、大きなサイズの動画は変換できないというオチがあります。クラウド版MovableTypeだとだいたい50MBぐらいはいけるっぽいです。
GitHub https://github.com/uzuki05/mt-plugin-VideoTranscoder
このプラグインについて
できること
MovableTypeにアイテムとして登録した動画を、クラウドサービスを利用して様々な形式に変換できます。
たとえば、
の動画ファイルを
- WebM、MPEG4(H.264 AAC)に変換してHTML5の
<video>
要素で再生する - HTTPライブストリーミング用(M3U8プレイリストとMPEG2TS)に書き出して、ストリーミング再生する
- MP3音声ファイルに変換して音のみ配信する
といったことができます。
動作環境
必要モジュール
IO::Socket::SSL
MovableTypeバージョン
MovableType 6.0 / クラウド版(6.0)
タスク実行
tools/run-periodic-tasks の CRON または daemon化 によるタスク実行を設定済みであること(動画ファイルのS3アップロードなどの時間のかかる処理、定期的なETS進捗状況確認に利用します)
一応実装しているところ
- 動画変換(単一ファイル出力)
- 動画変換(プレイリスト出力 / TSのみ)
- 音楽変換
- サムネイル登録
まだ足りないところ・TODO
- 全体的な安定性の向上
- chunkによる分割アップロード/ダウンロード対応
- 現状では大容量動画を扱おうとするとメモリ使いすぎで死ぬ プロセスが死ぬ
- クライアントライブラリのテスト
- エラーハンドリングとかもう少しちゃんとやる
- サムネイル登録した画像を動画のコンテキストから取得したり、逆にサムネイルのコンテキストから動画を取得できるようにしたい
- コールバックを作成して他のプラグインで拡張したり利用できるようにしたい
など
使い方
- Elastic Transcoder使用の準備
- AWSアカウント作成
- S3バケット作成
- Elastic Transcoder Pipeline作成
- インストール
- プラグイン設定(AWSのアクセスキーなど)
- アイテム一覧から「動画変換」プラグインメニュー実行
- 変換の完了つ
以上
詳しくは以下のページをご覧下さい。
MovableType + VideoTranscoder + JW Player でストリーミング再生をする(後日公開)
しくみ
動画変換操作を行うと、ジョブを登録すると、タスク(run-periodic-tasks)により、自動的に以下の操作が行われます。
- 対象の動画ファイルをS3にアップロード
- Elastic Transcoder Jobを登録
- Jobの完了を定期的に監視
- 完了したら変換後の動画ファイルをダウンロードしてアイテム登録
時間のかかる処理はすべて管理画面の裏側で行うので、操作はスムーズです。
インストール
操作方法
MovableType + VideoTranscoder + JW Player でストリーミング再生をする(後日公開)