Plone + AWS でプライベート動画を管理・配信
一つ前のエントリーで報告しましたが、2014年夏ごろから手がけていたプロダクトが陽の目を見ることになりました。
Ploneで動画扱うためのプロダクトが完成し、αリリースしました。Plone内にコンテンツとして設置する方法も考えましたが、AWS(Amazon Web Service)上に動画を置き、CloudFront経由で閲覧する方法としました。このプロダクトを使うと、Ploneのアクセスコントロール(ユーザ情報を元に)配下でセキュアに動画を配信することが可能です。
CloudFront (CDN) を使っていますので、アクセス集中による動画配信の対応も容易です。
プロダクト概要
プロダクト名 : c2.app.streamingaws
URL : https://pypi.python.org/pypi/c2.app.streamingaws/
バグ報告等 : https://bitbucket.org/cmscom/c2.app.streamingaws/issues
現在の状況 : α版リリース
導入手順 & 使い方
- Ploneへプロダクトをインストール(buildout & Quick Install)
- コントロールパネルからAWS関係の設定
- AWSへ設定の反映
- AWS Webコンソールで最終設定
- Ploneのコンテンツとして、動画をアップロード (StreamingVideoコンテンツタイプ)
- しばらく待つと、動画閲覧可能 (変換までしばらく時間がかかります)
基本的な機能
以下の様な機能を持っています。
- Ploneに動画をアップドードすると、仮置き用S3にビデオファイルをアップロード
- AWS内で、mp4形式とHLS形式に動画を変換。同時にサムネイルも作る
- Ploneのテンプレート上にVideoJSを用いて動画をストリーミング閲覧出来る
- AWS CloudFrontからは、サイン付きURL (時限式URL) を用いている
- スマートフォン(iOS / Android) へは、HLS形式で配信
- PCには、RTMPでストリーミング。ただし、HLSに対応しているSafariはHLSで閲覧
- Ploneコンテンツのワークフローによるセキュリティに応じた、アクセス管理が可能
- IFream タグでの、ポートレット表示、別サイトへの表示も可能
応用編
高機能なPloneとの組合せで、各種自由度が増すことになります。一例として以下の様な応用的な使い方ができると考えています。
- このプロダクトで動画を管理して、別の仕組みへ動画を提供。(Ploneは動画の管理に特化する) この機能のために、コンテンツの管理画面にはIFream タグ以外にも素のURLを表示しています。
- LDAP / SSO (シングルサインオン) との連携による、アクセス管理の強化。Ploneに組み込めるログイン機能であれば、どのようなものでも組合せることが可能です。
- 動画変換の仕組みの自動化。このプロダクト内部でAWS S3に転送して、ビデオ変換も自動で行っています。応用次第で複数のサイズの動画を自動的に作るということもかのうになります。
最後に
今後、CMS (コンテンツ管理システム) でのリッチコンテンツの管理が必須になってくると思っています。画像だけでなく動画も多くの人に提供する必要が出てくるでしょうし、イントラネットでも動画ビデオの使用が増えると思います。このような時にこのプロダクトがお役立ちできればと思っています。
また、こちらで把握しているバグもあります。これから徐々に解決していきたいと思っています。皆さんからのフィードバックをお待ちしております。
関連エントリー : AWS CloudFront でプライベート動画の配信手順の確立