<初級> Windows Azure Media Services を活用したマルチデバイスへの動画配信 -...
-
Upload
mitsunori-seki -
Category
Technology
-
view
2.384 -
download
1
description
Transcript of <初級> Windows Azure Media Services を活用したマルチデバイスへの動画配信 -...
<初級> Windows Azure Media Services を活用したマルチデバイスへの動画配信
2013年05月11日(土)15:00-15:50
Community Open Day 2013 東京会場
せき@fullvirtue
1 Copyright © @fullvirtue. All rights reserved.
はじめに
セッション概要(告知文)
Windows Azure Media Services とは、 ビデオの作成、管理、およびユーザーへの配信をだれでも簡単に 利用できるようにした機能で、Windows Azure の中でも非常に 注目を集めています。
Windows Azure Media Services を使ったサービスを開発した 経験から、開発方法や Tips を、デモを交えてお届けいたします。
Copyright © @fullvirtue. All rights reserved. 2
はじめに
本セッションのゴール
Windows Azure 管理ポータルから配信する手順を確認
Windows Azure Media Services の開発環境準備方法を確認
Windows Azure Media Services のAPIを使った配信手順を確認
Windows Azure Media Services の背景やコンセプトを確認
– 本セッションは、2012年12月リリースの public beta の仕様に 基づきます。
– 今後、予告なく変更される可能性がありますのでご注意ください。
Copyright © @fullvirtue. All rights reserved. 3
Copyright © @fullvirtue. All rights reserved.
今日のアジェンダ(1/1)
Windows Azure 管理ポータルでの配信手順
Windows Azure Media Services 開発環境の準備
Windows Azure Media Services APIを使った配信手順
Windows Azure Media Services コンセプト
まとめ
4
おことわり(1/1)
今回の資料について 本内容はMicrosoftより許可を得て、一部他資料をそのまま利用しています
今回の資料は、以下の資料を参考にしています。 私自身のオリジナルはほとんどありませんので、ご了承ください。
– はじめての Windows Azure メディア サービス
» http://msdn.microsoft.com/ja-jp/windowsazure/dn133199
– Media Services SDK for .NET を使用したアプリケーション構築
» http://msdn.microsoft.com/ja-jp/en-us/library/windowsazure/hh973613.aspx
– msdn - Windows Azure Media Services
» http://msdn.microsoft.com/ja-jp/library/hh973629
– Windows Azure Media Services Poster
» http://www.microsoft.com/en-us/download/details.aspx?id=38195
– ScottGu’s Blog: Windows Azure Media Services and London 2012 Olympics
» http://weblogs.asp.net/scottgu/archive/2012/08/21/windows-azure-media-services-and-the-london-2012-olympics.aspx
Copyright © @fullvirtue. All rights reserved. 5
WINDOWS AZURE 管理ポータルでの配信手順
Copyright © @fullvirtue. All rights reserved. 6
Windows Azure 管理ポータルでの配信手順(1/26)
Windows Azure Media Service の用意
1. Windows Azure サブスクリプションのご用意
2. Windows Azure Media Services アカウント作成
3. 動画ファイルのご用意
4. Sample Playerの準備
Copyright © @fullvirtue. All rights reserved. 7
Windows Azure 管理ポータルでの配信手順(2/26)
1. Windows Azure サブスクリプションのご用意
1. Windows Azureのサブスクリプション購入
2. Windows AzureのWebサイトおよびWindows Azureポータルのサブスクリプション購入の確認
3. Windows Azure プレビュー機能のサインアップ
[ご参考]
– http://aka.ms/azure-subscription
Copyright © @fullvirtue. All rights reserved. 8
Windows Azure 管理ポータルでの配信手順(3/26)
2. Windows Azure Media Services アカウント作成
Windows Azure 管理ポータルより以下を選択 [新規]-[アプリ サービス]-[メディアサービス]-[簡易作成]
Copyright © @fullvirtue. All rights reserved. 9
Windows Azure 管理ポータルでの配信手順(4/26)
2. Windows Azure Media Services アカウント作成
【ご参考】
– アカウント管理のAPI(RESTのみ)について
» Operations on Media Services (only English)
» http://msdn.microsoft.com/ja-jp/library/dn167014
» 使い道の例
Windows Azure Media Servicesの存在を意識させたくない場合
• →SaaS のような統合パッケージ等
マルチテナントでの課金などの簡易化
Copyright © @fullvirtue. All rights reserved. 10
Windows Azure Media Services 開発環境の準備(5/26)
3. 動画ファイルのご用意 – Windows Azure Media Encoder でサポートされている
コーデックとファイルの種類
» http://msdn.microsoft.com/ja-jp/library/hh973634
Copyright © @fullvirtue. All rights reserved. 11
ビデオコーデック •H.264 (Baseline、Main、および High Profile) •MPEG-1 •MPEG-2 (Simple および Main Profile) •MPEG-4 v2 (Simple Visual Profile および Advanced Simple Profile) •VC-1 (Simple、Main、および Advanced Profile) •Windows Media ビデオ (Simple、Main、および Advanced Profile) •DV (DVC、DVHD、DVSD、DVSL)
ビデオファイル形式
ファイル形式 ファイル拡張子
•3GPP、3GPP2 •Advanced Systems Format (ASF) •Advanced Video Coding High Definition (AVCHD) [MPEG-2 トランスポート ストリーム] •Audio-Video Interleaved (AVI) •Digital camcorder MPEG-2 (MOD) •デジタル ビデオ (DV) カメラ ファイル •DVD トランスポート ストリーム (TS) ファイル •DVD ビデオ オブジェクト (VOB) ファイル •Expression Encoder Screen Capture Codec ファイル •MP4 •MPEG-1 システム ストリーム •MPEG-2 ビデオ ファイル •スムーズ ストリーミング ファイル形式 (PIFF 1.3) •Windows Media ビデオ (WMV)
.3gp、.3g2、.3gp2
.asf
.mts、.m2ts
.avi
.mod
.dv
.ts
.vob
.xesc
.mp4
.mpeg、.mpg
.m2v
.ismv
.wmv
Windows Azure Media Services 開発環境の準備(6/26)
3. 動画ファイルのご用意 – Windows Azure Media Encoder でサポートされている
コーデックとファイルの種類
» http://msdn.microsoft.com/ja-jp/library/hh973634
Copyright © @fullvirtue. All rights reserved. 12
オーディオコーデック •AC-3 (Dolby Digital オーディオ) •AAC (AAC-LC、HE-AAC v1 と AAC-LC コア、および HE-AAC v2 と AAC-LC コア) •MP3 •Windows Media オーディオ (Windows Media オーディオ Standard、Windows Media オーディオ Professional、および Windows Media オーディオ ロスレス)
オーディオファイル形式 ファイル形式 ファイル拡張子
•AC-3 (Dolby Digital) オーディオ •Audio Interchange File Format (AIFF) •Broadcast Wave Format •MP3 (MPEG-1 Audio Layer 3) •MP4 オーディオ •MPEG-4 オーディオ ブック •WAVE ファイル •Windows Media オーディオ
.ac3
.aiff
.bwf
.mp3
.m4A
.m4b
.wav
.wma
画像ファイル形式 ファイル形式 ファイル拡張子
•ビットマップ •GIF、アニメーション GIF •JPEG •PNG •TIFF •WPF Canvas XAML
.bmp
.gif
.jpeg、.jpg
.png
.tif
.xaml
Windows Azure Media Services 開発環境の準備(7/26)
3. 動画ファイルのご用意 – Windows Azure Media Encoder でエクスポート用に
サポートされているコーデックとファイルの種類
» http://msdn.microsoft.com/ja-jp/library/hh973634
» Media Servicesでサポートされているコーデックの詳細
http://msdn.microsoft.com/en-us/library/windows/desktop/ff819077.aspx
» Media Servicesでサポートされているフィルターの詳細
http://msdn.microsoft.com/en-us/library/windows/desktop/dd375464.aspx
Copyright © @fullvirtue. All rights reserved. 13
ファイル形式 ビデオ コーデック オーディオ コーデック
•Windows メディア (*.wmv、.wma) •VC-1 (Advanced、Main、および Simple Profile)
•Windows Media オーディオ Standard •Windows Media オーディオ Professional •Windows Media オーディオ音声 •Windows Media オーディオ ロスレス
•MP4 (*.mp4)
•H.264 (High、Main、および Baseline Profile)
•AAC-LC •HE-AAC v1 •HE-AAC v2
•スムーズ ストリーミング ファイル形式 (PIFF 1.1) (*.ismv、*.isma)
•VC-1 (Advanced Profile) •H.264 (High、Main、および Baseline Profile)
•Windows Media オーディオ Standard •Windows Media オーディオ Professional •AAC-LC •HE-AAC v1 •HE-AAC v2
Windows Azure Media Services 開発環境の準備(8/26)
3. 動画ファイルのご用意 [ご参考]
– 動画のファイルをシステムの管理下に置く事を 「インジェスト」と呼びます
» Windows Azure はクラウド上にあるため、多くのシナリオでは クラウドへのファイルのアップロードとなります
– Windows Azure メディア サービスの内部では、 動画のファイルは「アセット」という単位で管理されています
» インジェストを行う際には、空のアセットを作成し、そこに「アセット ファイル」を追加していく作業となります
» アセット ファイルは実ファイルそのものです
» ストリーミングの方式に由来し、複数のファイルが必要となります
Copyright © @fullvirtue. All rights reserved. 14
Windows Azure Media Services 開発環境の準備(9/26)
3. 動画ファイルのご用意 [ご参考]
– よく利用される動画配信の方式には以下があります。
» Microsoft が開発して主に Silverlight、Windows Phone、Windows 8 などで利用されている Smooth Streaming
» Apple が開発して主に iOS で利用されている HTTP Live Streaming (HLS)
新しい Android でも HLS サポートが始まっています。
» Adobe が開発して主に Flash で使われる HTTP Dynamic Streaming (HDS)
– 動画のファイルは異なるビット レートごとに複数作成されます
» デバイスの CPU とネットワーク帯域を鑑みて、デバイス側で自動的にどのビット レートのファイルを再生するかを短期間で切り替えながら動画の再生を行う方式です
» 「Adaptive Bitrate Streaming over HTTP」と呼ばれています
Copyright © @fullvirtue. All rights reserved. 15
Windows Azure Media Services 開発環境の準備(10/26)
3. 動画ファイルのご用意 [ご参考]
– Smooth Streaming を実施する際の動画ファイル
» .ismv が動画ファイルそのもの
» HTML5 の VIDEO タグでは執筆時点では MP4 ファイルのプログレッシブ ダウンロードでしか配信が出来ないため、このような複数のビット レートのファイルは作成されません
Copyright © @fullvirtue. All rights reserved. 16
Windows Azure Media Services 開発環境の準備(11/26)
4. Sample Playerの準備
Smooth Streaming
– HelthMonitor Tool サイト
» http://smf.cloudapp.net/healthmonitor
» 任意の場所にある ismファイル指定が出来る
– Microsoft Media Platform: Player Framework
» Windows 8
http://playerframework.codeplex.com/releases/view/94684
» Silverlight
http://smf.codeplex.com/releases/view/88970
HTML5 <video> (iOS用)
Copyright © @fullvirtue. All rights reserved. 17
<video width="640" height="480" src="http://<your url>/hogehoge.mp4" autoplay controls > ご利用の Web ブラウザー では再生できません </video>
Windows Azure 管理ポータルでの配信手順(12/26)
Windows Azure 管理ポータルでの配信手順
1. Ingest:ファイルのアップロード
– 動画のファイルをシステムに取り込む(管理下に置く)
2. Process:エンコード(正確にはトランスコード)
– Windows Azure 管理ポータルの画面は「エンコード」と記載
[参考:言葉の正確な定義]
» エンコード:アナログ→デジタルの変換を行う
» トランスコード:デジタル→デジタルの変換を行う
Manage:管理
– コンテンツの管理
3. Delivery:配信
– ダウンロード、ストリーミング等にて、動画の配信を行う
Copyright © @fullvirtue. All rights reserved. 18
Windows Azure 管理ポータルでの配信手順(13/26)
Windows Azure 管理ポータルでの配信手順
Copyright © @fullvirtue. All rights reserved. 19
Com
pute
Sto
rage
Windows Azure Media Services
Windows Azure 管理ポータルでの配信手順(14/26)
1. Ingest:ファイルのアップロード
Windows Azure 管理ポータルの、作成された Windows Azure Media Servicesから [コンテンツ] タブに移動します
Copyright © @fullvirtue. All rights reserved. 20
Windows Azure 管理ポータルでの配信手順(15/26)
1. Ingest:ファイルのアップロード
[アップロード] をクリックして、ファイル アップロードの画面を表示させます
[ローカルから] または [ストレージから(Windows Azure Blob Storage)] からファイルを選択し、決定するとアップロードを 開始します
Copyright © @fullvirtue. All rights reserved. 21
Windows Azure 管理ポータルでの配信手順(16/26)
1. Ingest:ファイルのアップロード
アップロードが完了すると、[サイズ] にファイルサイズが表示されます
Copyright © @fullvirtue. All rights reserved. 22
Windows Azure 管理ポータルでの配信手順(17/26)
2. Process:エンコード(正確にはトランスコード)
ファイルを選択したまま、管理ポータル下部にあるコマンドから [エンコード] を選択します
Copyright © @fullvirtue. All rights reserved. 23
Windows Azure 管理ポータルでの配信手順(18/26)
2. Process:エンコード(正確にはトランスコード)
[PC/Mac での再生] または [HTML5での再生]を実行します
Copyright © @fullvirtue. All rights reserved. 24
[メモ] 実際のエンコードでは、コーデック、画角などの細かい設定が必要です。これらをテンプレートとしてまとめたものを「プリセット」と呼びます。 管理ポータルでは、[主なプリセット]と[詳細なプリセット]から選択可能です。APIを使うと、もっと細かい設定も可能となります。
Windows Azure 管理ポータルでの配信手順(19/26)
2. Process:エンコード(正確にはトランスコード)
管理ポータルで [ジョブ] に移動すると、実行中のエンコード処理の状況が確認できます
– 処理の状況は、逐次確認が出来ます
– 処理は、Windows Azure Media Servicesでは「ジョブ」という単位で管理されています
Copyright © @fullvirtue. All rights reserved. 25
Windows Azure 管理ポータルでの配信手順(20/26)
2. Process:エンコード(正確にはトランスコード) – [進捗状況] が [Finished] となっていると、エンコード処理が正常に
行われたことになります
– エラーがあった場合は、ジョブを選択し、コマンドの [詳細] から、 エラー内容を確認してください
– 既定では、処理は 1 つずつしか行われません
– 同時に複数のジョブを走らせたい場合は、管理ポータルの [スケール] から、ENCODING のユニット数を増やす必要があります
» こちらはサービスを占有するため、日割りで追加の料金が発生する点をご留意ください。
Copyright © @fullvirtue. All rights reserved. 26
Windows Azure 管理ポータルでの配信手順(21/26)
2. Process:エンコード(正確にはトランスコード) – [進捗状況] が [Finished] となっていると、エンコード処理が正常に
行われたことになります
– エラーがあった場合は、ジョブを選択し、コマンドの [詳細] から、 エラー内容を確認してください
– 既定では、処理は 1 つずつしか行われません
– 同時に複数のジョブを走らせたい場合は、管理ポータルの [スケール] から、ENCODING のユニット数を増やす必要があります
» こちらはサービスを占有するため、日割りで追加の料金が発生する点をご留意ください。
Copyright © @fullvirtue. All rights reserved. 27
Windows Azure 管理ポータルでの配信手順(22/26)
3. Delivery:配信
発行対象のコンテンツを選択し、画面下部の [発行] を選択します
– 5 ~ 10 秒程度で、配信準備が終わります
– エンコードしただけでは、動画の配信はされません
– 「コンテンツを公開する」という手順を踏みます
– Windows Azure Media Services では高いセキュリティを維持する ため、指示が無い限りコンテンツは外部に出ていきません
Copyright © @fullvirtue. All rights reserved. 28
Windows Azure 管理ポータルでの配信手順(23/26)
3. Delivery:配信
発行が完了すると、[発行 URL] が出力されます
– そのままプレイヤーのアプリケーションに設定する URL です
– (未発行)のものは公開されていません
– [発行 URL] の各データを選択すると、クリップ ボードにコピーするアイコンが表示されます
Copyright © @fullvirtue. All rights reserved. 29
Windows Azure 管理ポータルでの配信手順(24/26)
3. Delivery:配信
コンテンツを選択して [再生] を選択すると、 発行結果を確認できます
– Windows Azure メディア サービスの管理ポータルには、 Flash と HTML5 のプレイヤーが搭載されているため、 結果をすぐ確認できます
– Windows OS では、iOS用の動画は再生できません
Copyright © @fullvirtue. All rights reserved. 30
Windows Azure 管理ポータルでの配信手順(25/26)
[参考]安定した実行・パフォーマンスのための 「占有」型
[スケール] タブ内の [ON-DEMAND STREAMING]や [ENCODING] に割り当てるユニットを増やします
– 反映にある程度時間がかかり、課金額も増えます
Copyright © @fullvirtue. All rights reserved. 31
Windows Azure 管理ポータルでの配信手順(26/26)
[参考]再生できなかった場合のトラブルシューティング
IIS上で、MAXビットレートを1,600kbpsにする必要があります
– Azureは1,600に設定されています
再生ができなかったらファイルの詳細でビットレートを確認 してください
ビットレートが大きすぎたら、エンコードでビットレートを 下げてください
Copyright © @fullvirtue. All rights reserved. 32
WINDOWS AZURE MEDIA SERVICES 開発環境の準備
Copyright © @fullvirtue. All rights reserved. 33
Windows Azure Media Services 開発環境の準備(1/11)
開発環境の事前準備
1. SDKインストール
– .NET の場合
– Java の場合
[ご参考]
– Windows 7, Windows 8, Windows 2008 R2
– .NET Framework 4.5 or 4.0
– Visual Studio 2012, Visual Studio 2010 SP1
– Windows Azure Media Services SDK 2.0.1.0
» http://msdn.microsoft.com/en-us/library/jj129588.aspx
Copyright © @fullvirtue. All rights reserved. 34
Windows Azure Media Services 開発環境の準備(2/11)
1. SDKインストール
【.NET の場合】
– NuGetパッケージにて Windows Azure Media Services を追加
Copyright © @fullvirtue. All rights reserved. 35
Windows Azure Media Services 開発環境の準備(3/11)
1. SDKインストール
【.NET の場合】
– NuGetパッケージにて Windows Azure Media Services を追加
Copyright © @fullvirtue. All rights reserved. 36
「安定版パッケージのみ」 「名前:降順」 「Media」 で検索すると探しやすいです
Windows Azure Media Services 開発環境の準備(4/11)
1. SDKインストール
【.NET の場合】
– 既存の関連モジュールの確認作業が終わった後、[ライセンスの同意] 画面が出てくるので、確認後[同意する]をクリックします
Copyright © @fullvirtue. All rights reserved. 37
Windows Azure Media Services 開発環境の準備(5/11)
1. SDKインストール
【.NET の場合】
– インストールが正常に完了するとNuGet パッケージの管理画面の Windows Azure Media Services の右上に 緑色のチェックアイコンが付きます
Copyright © @fullvirtue. All rights reserved. 38
Windows Azure Media Services 開発環境の準備(6/11)
1. SDKインストール
【Java の場合】
– Windows Azure Media Services は、オープンな開発環境を提供
– .NET 以外の環境でも Windows Azure Media Services の開発が可能
– Windows Azure SDK for Javaの中に Windows Azure Media Servicesも含まれています
[ご参考]
– Eclipse におけるWindows Azure SDK for Javaのインストール手順
» Installing the Windows Azure Plugin for Eclipse with Java (by Microsoft Open Technologies)
» http://msdn.microsoft.com/en-us/library/windowsazure/hh690946
Copyright © @fullvirtue. All rights reserved. 39
Windows Azure Media Services 開発環境の準備(7/11)
1. SDKインストール
【Java の場合】
– Windows Azure Library for Java の 参照設定 適切なプロジェクトを作成後、プロジェクトの [プロパティー]を選択
Copyright © @fullvirtue. All rights reserved. 40
Windows Azure Media Services 開発環境の準備(8/11)
1. SDKインストール
【Java の場合】
– [Java のビルド・パス] – [ライブラリー] – [ライブラリーの追加] を 選択します
Copyright © @fullvirtue. All rights reserved. 41
Windows Azure Media Services 開発環境の準備(9/11)
1. SDKインストール
【Java の場合】
– [Package for Windows Azure Libraries for Java (by MS Open Tech)] を選択、ウィザードをそのまま進めて完了します
Copyright © @fullvirtue. All rights reserved. 42
Windows Azure Media Services 開発環境の準備(10/11)
1. SDKインストール
【Java の場合】
– Eclipse の開発環境の中にも、 ”com.microsoft.windowsazure.services.media” 以下に Windows Azure Media Services のSDKがあることが確認できます
Copyright © @fullvirtue. All rights reserved. 43
Windows Azure Media Services 開発環境の準備(11/11)
ご参考:Windows Azure Media Services SDK for .NET
Copyright © @fullvirtue. All rights reserved. 44
Microsoft.WindowsAzure.MediaServices.Client.
CloudMediaContext サービスとのセッション
Asset / AssetFile コンテンツ(ファイル)
Job / Task エンコードなどのメディア処理
MediaProcessor メディア処理アプリ定義
Locator 配布/配信ポイント
AccessPolicy 配布/配信 公開ポリシー
WINDOWS AZURE MEDIA SERVICES APIを使った配信手順
Copyright © @fullvirtue. All rights reserved. 45
Windows Azure Media Services APIを使った配信手順(1/21)
Windows Azure Media Services APIを使った配信手順
Copyright © @fullvirtue. All rights reserved. 46
Com
pute
Sto
rage
Windows Azure Media Services
Windows Azure Media Services APIを使った配信手順(2/21)
コーディングの流れ
Copyright © @fullvirtue. All rights reserved. 47
Windows Azure Media Services APIを使った配信手順(3/21)
コーディングの流れ
Copyright © @fullvirtue. All rights reserved. 48
Windows Azure Media Services APIを使った配信手順(4/21)
Windows Azure Media Services接続
Copyright © @fullvirtue. All rights reserved. 49
Windows Azure Media Servicesとの全てのやりとりは、CloudMediaContext クラスを通じて行っています 注意点 CloudMediaContext はスレッドセーフではありません
ParalellTransferThreadCountは同時にファイル転送を行う上限値を設定しています 初期値が 10 です 適切な数に設定ください。 多すぎるとネットワーク帯域が不足する場合もありますので、ご注意ください
var context = new CloudMediaContext( ConfigurationManager.AppSettings["accountName"], ConfigurationManager.AppSettings["accountKey"] ); context.ParallelTransferThreadCount = 100;
Windows Azure Media Services APIを使った配信手順(5/21)
Windows Azure Media Services接続
引数になっているメディア サービスのアカウント名、アカウント キーは、Windows Azure 管理ポータルから取得します
Copyright © @fullvirtue. All rights reserved. 50
Windows Azure Media Services APIを使った配信手順(6/21)
1. Ingest:ファイルのアップロード
Copyright © @fullvirtue. All rights reserved. 51
Ingest
Asset作成 = ファイルをWindows Azure Media Services 管理下に置く 別の Blob からのコピーも可能 Asset に 書き込み可能な SAS URLを作成し、それを元に
Containerを作成する http://social.msdn.microsoft.com/Forums/en-
US/MediaServices/thread/be486bac-ac37-4984-87d0-20931fcb1328
2つの暗号化オプション: AES 256bit / Common Encryption 途中経過取得のためには、非同期実行とBlobTransferClient
Windows Azure Media Services APIを使った配信手順(7/21)
1. Ingest – sample code: 同期
Copyright © @fullvirtue. All rights reserved. 52
var targetFile = new FileInfo(@"D:¥Demo¥Sample.wmv"); // 1. 空のAssetを作成 var ingestAsset = context.Assets.Create( targetFile.Name, AssetCreationOptions.StorageEncrypted); // 2. 空のAssetFileを作成 var ingestAssetFile = ingestAsset.AssetFiles.Create( targetFile.Name); // 3. AccessPolicyを作成します。ここでは1時間のみ書き込み許可 var uploadAccessPolicy = context.AccessPolicies.Create(targetFile.Name, TimeSpan.FromHours(1), AccessPermissions.Write | AccessPermissions.List); // 4. SAS Locatorを作成 var locator = context.Locators.CreateLocator(LocatorType.Sas, ingestAsset, uploadAccessPolicy); // 2.5. Upload を実行します (同期実行) ingestAssetFile.Upload(targetFile.FullName);
Ingest
Windows Azure Media Services APIを使った配信手順(8/21)
1. Ingest – sample code: 非同期
Copyright © @fullvirtue. All rights reserved. 53
// 2.5. Upload を実行します (非同期実行) // ---- ファイル転送 途中経過取得用 ---- BlobTransferClient transferClient = new BlobTransferClient(); transferClient.TransferProgressChanged += transferClient_TransferProgressChanged; // ---------------------------------- var uploadTask = ingestAssetFile.UploadAsync( targetFile.FullName, transferClient, locator, System.Threading.CancellationToken.None);
Ingest
//ファイルアップロードの状況確認 static void transferClient_TransferProgressChanged(object sender, BlobTransferProgressChangedEventArgs e) { Console.WriteLine(" 経過 {0}%", e.ProgressPercentage); }
Windows Azure Media Services APIを使った配信手順(9/21)
Manage:管理
Copyright © @fullvirtue. All rights reserved. 54
Asset / Job / AccessPolicy の管理
実際には Windows Azure SQL database 上で管理
LINQ サポート
Ingest
Windows Azure Media Services APIを使った配信手順(10/21)
Manage: Assetの作成
アセットは言わば「器」です
– アップロード対象のファイル名を、アセットとアセット ファイル、それぞれの名前とします
» Windows Azure メディア サービスは Contents Management System (CMS) を併せ持っていません
» この名前でクエリーをかける事も可能ですが、コンテンツそのものの検索はサーチ エンジンなどと合わせて CMS 側にて行ってください
» つまり、この名前は何でも良いのです
» アセット作成時に Id が発行されます
» Id は大変重要で、Primary Key として作用します
» 単一アセットの検索スピードが、最も速いのです。
– Asset オブジェクトには、Id 以外に AlternatedId というフィールドがあり、こちらは皆さんがお使いの CMS の ID を設定いただくことを想定しています
Copyright © @fullvirtue. All rights reserved. 55
Windows Azure Media Services APIを使った配信手順(11/21)
Manage: Assetの作成
Copyright © @fullvirtue. All rights reserved. 56
Windows Azure Blob コンテナ
アプリケーション的なメタは持っていない
Asset. AlternateId にてCMS連携
削除する際の注意点
関連する Locator は個別削除が必要
AssetCreationOptions.CommonEncryptionProtected 指定をしたAsset を削除する場合は、ContentsKey の個別削除が必須
Ingest
Id AlternateId Name
<guid> 0001 contoso
ID Name Title Artist
0001 Contoso Great Video Art #1
Windows Azure Media Services APIを使った配信手順(12/21)
2. Process:エンコード(正確にはトランスコード)
Copyright © @fullvirtue. All rights reserved. 57
エンコードなどのメディア処理の実行単位 Job に、n個 の Task を作成 Job が実行の単位。トランザクションではない
開始/キャンセル/終了/エラーなど
入力/出力ファイルを指定する ファイル同士の依存関係がないと
Task は並列実行。あると直列実行 途中経過取得のためには、以下を呼び出す job.GetExecutionProgressTask
Ingest
Job
Task
Input Asset
Output Asset
Task
Input Asset
Output Asset
Windows Azure Media Services APIを使った配信手順(13/21)
2. Process:Windows Azure Media Encoder
Copyright © @fullvirtue. All rights reserved. 58
Expression Encoder 4 Pro SP2 がベース Azure に最適化 Adaptive Bitrate Streamingでは、複数VMを使う
タスク プリセット 指定 http://msdn.microsoft.com/en-
us/library/jj129582.aspx 「現在」は、Expression Encoder 4 Pro SP2 の カスタム タスク プリセット (XML文字列) も動作する!
サムネイル作成, 時間指定の切り出し など
Ingest
Windows Azure Media Services APIを使った配信手順(14/21)
2. Process:Windows Azure Media Encoder
Copyright © @fullvirtue. All rights reserved. 59
サポートしているファイルフォーマット: Import
Ingest
File Format File Extensions
3GPP, 3GPP2 .3gp, .3g2, .3gp2
Advanced Systems Format (ASF) .asf
Advanced Video Coding High Definition (AVCHD) [MPEG-2 Transport Stream]
.mts, .m2ts
Audio-Video Interleaved (AVI) .avi
Digital camcorder MPEG-2 (MOD) .mod
Digital video (DV) camera file .dv
DVD transport stream (TS) file .ts
DVD video object (VOB) file .vob
Expression Encoder Screen Capture Codec file
.xesc
MP4 .mp4
MPEG-1 System Stream .mpeg, .mpg
MPEG-2 video file .m2v
Smooth Streaming File Format (PIFF 1.3)
.ismv
Windows Media Video (WMV) .wmv
File Format File Extensions
AC-3 (Dolby Digital) audio .ac3
Audio Interchange File Format (AIFF)
.aiff
Broadcast Wave Format .bwf
MP3 (MPEG-1 Audio Layer 3) .mp3
MP4 audio .m4A
MPEG-4 audio book .m4b
WAVE file .wav
Windows Media Audio .wma
Video Audio
http://msdn.microsoft.com/en-us/library/hh973634.aspx
Windows Azure Media Services APIを使った配信手順(15/21)
2. Process:Windows Azure Media Encoder
Copyright © @fullvirtue. All rights reserved. 60 http://msdn.microsoft.com/en-us/library/hh973634.aspx
サポートしているコーデック: Import
Ingest
H.264 MPEG-1 MPEG-2 VC-1 Windows Media Video
AC-3 (Dolby Digital audio) Advanced Audio Coding (AAC) MP3 (MPEG-1 Audio Layer 3) Windows Media Audio
Video Audio
Windows Azure Media Services APIを使った配信手順(16/21)
2. Process:Windows Azure Media Encoder
Copyright © @fullvirtue. All rights reserved. 61 http://msdn.microsoft.com/en-us/library/hh973634.aspx
サポートしているファイルフォーマット/コーデック: Export
Ingest
File Format Video Codec Audio Codec
Windows Media (*.wmv; *.wma)
VC-1 (Advanced, Main, and Simple Profiles)
WMA Standard, WMA Professional, WMA Voice, WMA Lossless
MP4 (*.mp4) H.264 (High, Main, and Baseline Profiles)
AAC-LC, HE-AAC v1, HE-AAC v2
Smooth Streaming File Format (PIFF 1.1) (*.ismv; *.isma)
VC-1 (Advanced Profile) H.264 (High, Main, and Baseline Profiles)
WMA Standard, WMA Professional AAC-LC, HE-AAC v1, HE-AAC v2
Windows Azure Media Services APIを使った配信手順(17/21)
2. Process:Windows Azure Media Packager / Encryptor
Copyright © @fullvirtue. All rights reserved. 62 http://msdn.microsoft.com/en-us/library/hh973634.aspx
IIS Transform Manager 1.1 がベース http://msdn.microsoft.com/en-us/library/hh973619.aspx
Media Processor 定義 + 設定XML文字列 PlayReady Protection Task MP4 to Smooth Streams Task Smooth Streams to HLS Conversion Task サムネイル作成 Storage Decryption
http://msdn.microsoft.com/en-us/library/jj129580.aspx#get_media_processor
Ingest
Windows Azure Media Services APIを使った配信手順(18/21)
2. Process – sample code: エンコード
Copyright © @fullvirtue. All rights reserved. 63 http://msdn.microsoft.com/en-us/library/hh973634.aspx
// 1. Job 作成 var job = context.Jobs.Create("WMVをSmooth StreamingとHLSにエンコード : " + DateTime.Now.ToLongTimeString());
var windowsAzureMediaEncoder = context.MediaProcessors .Where(p => p.Name == "Windows Azure Media Encoder"). ToList().OrderBy(p => new Version(p.Version)).LastOrDefault(); // 2. タスクの作成
var WMS2SSTask = job.Tasks.AddNew("WMV to Smooth Streaming - " + DateTime.Now.ToLongTimeString(), windowsAzureMediaEncoder, "H264 Smooth Streaming SD 4x3", TaskOptions.None); // 3. 入出力Asset指定
WMS2SSTask.InputAssets.Add(ingestAsset); var SSedAsset = WMS2SSTask.OutputAssets.AddNew( string.Format("{0} - SmoothStreaming:{1}", ingestAssetFile.Name, DateTime.Now.ToLongTimeString()), AssetCreationOptions.None); // 4. ジョブ実行
job.Submit(); // ----- ジョブ実行の途中経過の取得をする設定 ---------------------
var progressJobTask = job.GetExecutionProgressTask(CancellationToken.None); // ------------------------------------------------------------
Ingest
Windows Azure Media Services APIを使った配信手順(19/21)
2. Process – sample code: Job 状態確認
Copyright © @fullvirtue. All rights reserved. 64 http://msdn.microsoft.com/en-us/library/hh973634.aspx
bool jobFinalize = false; while (!jobFinalize) { switch (job.State) { case JobState.Finished: jobFinalize = true; Console.WriteLine(" 正常終了: {0}", job.RunningDuration); break; case JobState.Error: jobFinalize = true; Console.WriteLine(" エラー発生: {0}", job.Tasks[0].ErrorDetails); StringBuilder errorDescription = new StringBuilder(); errorDescription.Append(" ** 詳細: ¥n"); foreach (var task in job.Tasks) { foreach (ErrorDetail detail in task.ErrorDetails) { errorDescription.AppendLine(" ** Task Id: " + task.Id); errorDescription.AppendLine(" ** Error Code: " + detail.Code); errorDescription.AppendLine(" ** Error Message: " + detail.Message + "¥n"); } } Console.WriteLine(errorDescription); break;
default: Console.WriteLine(" 15秒間 待機します: {0}", DateTime.Now.ToLongTimeString()); System.Threading.Thread.Sleep(15000); break; } }
Ingest
Windows Azure Media Services APIを使った配信手順(20/21)
3. Delivery:配信
Copyright © @fullvirtue. All rights reserved. 65 http://msdn.microsoft.com/en-us/library/hh973634.aspx
ストリーミング / ダウンロード のオリジンサーバー Locator に Asset 単位で割り当てる 1 つの Asset につき 5つの Locator が上限
AccessPolicyによって、時間単位での公開を設定 アクセス権設定ではない
占有型と共有型は一つのアカウントで同居できない Dynamic Packaging を使う場合は、占有型でのみ対応。 Dynamic Packaging は Smooth Streaming, HLSのみ。
DRM未対応
Ingest
Windows Azure Media Services APIを使った配信手順(21/21)
3. Delivery – sample code
Copyright © @fullvirtue. All rights reserved. 66 http://msdn.microsoft.com/en-us/library/hh973634.aspx
// 1. Access Policy 作成 var deliveryAccessPolicy = context.AccessPolicies.Create("Streaming", TimeSpan.FromHours(3), AccessPermissions.Read | AccessPermissions.List); var SS_OutputAsset = job.OutputMediaAssets[0]; var SS_Manifest = (from f in SS_OutputAsset.AssetFiles where f.Name.EndsWith(".ism") select f).First(); // 2. Locator 作成 var SS_StreamingPointLocator = context.Locators.CreateLocator( LocatorType.OnDemandOrigin, SS_OutputAsset, deliveryAccessPolicy, DateTime.UtcNow.AddMinutes(-5)); // 3. プレイヤーに渡すURL生成 (ここではデスクトップに出力) WriteToFile(Environment.GetEnvironmentVariable("USERPROFILE") + @"¥Desktop¥SSPath.txt", SS_StreamingPointLocator.Path + SS_Manifest.Name+ "/manifest");
Ingest
"/manifest(format=m3u8-aapl)"
WINDOWS AZURE MEDIA SERVICES コンセプト
Copyright © @fullvirtue. All rights reserved. 67
Windows Azure Media Services コンセプト(1/35)
動画配信を取り巻く環境
Copyright © @fullvirtue. All rights reserved. 68
コンテンツを どこに届けたいですか?
ポケットには iPhone
リビングには iPad
自宅の机はもちろんWindows PC
電子書籍、いよいよ本格化?
All in One の新しい形
Windows Azure Media Services コンセプト(8/35)
Copyright © @fullvirtue. All rights reserved. 75
99% PC/Mac
NO PLUGIN
PROGRESSIVE DOWNLOAD
ADAPTIVE STREAMING RTSP/RTMP
Web とともに歩んだ動画配信
Windows Azure Media Services コンセプト(9/35)
Copyright © @fullvirtue. All rights reserved. 76
(standard) Streaming
3Mbps
Streaming Server
HTTP Progressive Download
RTMP / RTSP / MMS etc …
3Mbps
Web Server HTTP Cache
Adaptive bitrate Streaming over HTTP 3Mbps
Streaming Server HTTP Cache
1Mbps
512 kbps
256 kbps
No Live!
配信技術の変遷
動画技術は どこへ向かっている?
Windows Azure Media Services コンセプト(11/35)
見えてきた次世代技術
Copyright © @fullvirtue. All rights reserved. 78
Creation Consumer Cloud
4K / 8K
MPEG-DASH / CSF
HEVC (H.265)
2nd Screen
Big Data
Tablet
Smart Phone
PC
8K UHD 4320p (7680 x 4320)
Windows Azure Media Services コンセプト(12/35)
高解像度が生む巨大なファイル
Copyright © @fullvirtue. All rights reserved. 79
4K UHD 2160p (3840 x 2160)
HD 1080i/1080p (1920 x
1080) SD
480i (720 x 480)
10分
約50MB
約200MB
約800MB
約3.2GB ?
Windows Azure Media Services コンセプト(13/35)
期待の圧縮技術 HEVC ですが…
Copyright © @fullvirtue. All rights reserved. 80
半分 500 – 1,000倍
ファイルサイズ エンコード時間
Windows Azure Media Services コンセプト(14/35)
HTML5
Copyright © @fullvirtue. All rights reserved. 81
<video>
<source src="/foo.mp4" />
<source src="/foo.webm" />
<source src="/foo.ogv" />
</video>
Windows Azure Media Services コンセプト(15/35)
HTML5 に不足しているもの
Copyright © @fullvirtue. All rights reserved. 82
Live 配信システム ネットワーク
ストリーミング
DRM
コンテンツ保護
MPEG-DASH CENC
Windows Azure Media Services コンセプト(16/35)
MPEG-DASH – 標準規格となるか
Copyright © @fullvirtue. All rights reserved. 83
Dynamic Adaptive Streaming over HTTP (DASH)
Also called MPEG-DASH
Smooth Streaming Http Live Streaming Http Dynamic Streaming
Windows Azure Media Services コンセプト(17/35)
動画ファイルの構造
Copyright © @fullvirtue. All rights reserved. 84
Windows Azure Media Services コンセプト(18/35)
Dynamic Packagingによる最適な動画配信
Copyright © @fullvirtue. All rights reserved. 85
Standard
MP4
Origin
Source Multi
Bitrate MP4 Smooth
File
HLS File
Encode
Package
Package Smooth
HLS
Dynamic Packaging
Origin
(R
eserv
ed)
Source Multi
Bitrate MP4
Encode
Smooth
HLS
Windows Azure Media Services コンセプト(19/35)
Dynamic Packagingによる最適な動画配信
サンプルソースコード – http://daiyuhatakeyama.wordpress.com/2013/05/10/dynamic-packaging-
%E3%81%AB%E3%82%88%E3%82%8B%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AA%E3%81%97%E3%81%A7%E3%81%AE%E3%83%9E%E3%83%AB%E3%83%81%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E5%AF%BE/
注意事項
– [スケール]内の[ON DEMAND STREAMING]のユニットを1以上に してください
Copyright © @fullvirtue. All rights reserved. 86
Windows Azure Media Services コンセプト(20/35)
さらにリッチな体験を(日本では閲覧不可)
Copyright © @fullvirtue. All rights reserved. 87
Windows Azure Media Services コンセプト(21/35)
Microsoft MIX 2011 Ustream視聴者数を可視化した結果
Copyright © @fullvirtue. All rights reserved. 88
Windows Azure Media Services コンセプト(22/35)
Microsoft Media Platform: Video Editor
Web ベースのラフカット編集ツール
オープンソース
NBC Olympic など多くの利用実績
リアルタイムのクリップ作成
– マニフェスト/インデックスファイルの作成のみを行う
Copyright © @fullvirtue. All rights reserved. 89
Windows Azure Media Services コンセプト(23/35)
ブラウザーだけでも、ここまで出来る!という事例
Copyright © @fullvirtue. All rights reserved. 90
Windows Azure Media Services コンセプト(24/35)
スマートフォンにおけるネイティブアプリの現状
Copyright © @fullvirtue. All rights reserved. 91
•固定的に設置された広告枠と異なり、ユーザー行動
の主眼であるコンテンツと同様の表示形式を持った
広告であること
ユーザー主体
•編集コンテンツに対し、その品質や表示トーンが一
致する、もしくは近似するコンテンツ性の高い広告
であること
融合
•ソーシャルやモバイルなど、読者のメディア接点の
変化や多様性に最適化した広告形式であること
マルチデザイン
•テクノロジーと人間の編集力が関与する余地のある
広告形式であること
“おもてなし”
• 雑多なノイズが抑制され、お目当
てのコンテンツに没頭できる
読者
• 読者が嫌うものとしての広告から、
コンテンツ同様の精読率で接して
くれる広告が生まれる
広告主
• 読者とのエンゲージメント強化を
第一義に広告を制作できる
メディア運営者の視点から
定義 メリット
Source: http://mediaprobe.co.jp/blog/digitalmedia/2012/12/17/2838/
Windows Azure Media Services コンセプト(25/35)
動画アプリのインフラはとても大変…
Copyright © @fullvirtue. All rights reserved. 92
ネットワーク/ストレージ
コンテンツ管理 サービス インテグレーション 突発的な
高負荷 ジョブ 管理
Windows Azure Media Services コンセプト(26/35)
現状のカバーエリア
Copyright © @fullvirtue. All rights reserved. 93
ネットワーク/ストレージ
コンテンツ管理 サービス インテグレーション 突発的な
高負荷 ジョブ 管理
Windows Azure Media Services コンセプト(27/35)
とある動画配信インフラ…
Copyright © @fullvirtue. All rights reserved. 94
Windows Azure Media Services コンセプト(28/35)
動画配信のワークフロー
Copyright © @fullvirtue. All rights reserved. 95
Windows Azure Media Services (APIだけしかない)
取り込み Encoding/ Transcoding
コンテンツ 保護
ストリーミングサーバー
ライブ中継 分析 広告差し込み
Windows Azure Media Services コンセプト(29/35)
Windows Azure Media Services を取り巻く環境
Copyright © @fullvirtue. All rights reserved. 96
Media Job Scheduling
"Build-In" Partner Media Processors
Content Protection Analytics
Identity Management
Live Encoding
"Build-On" Media Partners and Customers
Secure Media Ingest
Part
ner C
DN
s
Encoding
On-Demand Origin Live Origin
Ad Insertion Live Ingest
Blobs Load Balancer
Windows Azure Media Services コンセプト(30/35)
柔軟なカスタマイズ
Microsoft または Microsoftパートナー企業の アプリケーションを自由に選択
Copyright © @fullvirtue. All rights reserved. 97
Windows Azure Media Services コンセプト(31/35)
パートナーエコシステム
Copyright © @fullvirtue. All rights reserved. 98
Ingest Encoding/
Transcoding Content
Protection Origin &
CDN
ISV
Windows Azure Media Services コンセプト(32/35)
クラウドを活用した最適な動画配信
Copyright © @fullvirtue. All rights reserved. 99
権利所有
読み取り アクセス権付与
読み取り アクセス権付与
コピー時間が”0”
バックアップ 不要
CRMのスタート地点
Windows Azure Media Services コンセプト(33/35)
自前で環境を用意する必要がなくなる
Copyright © @fullvirtue. All rights reserved. 100
圧倒的な コンピューター処理能力が容易に
必要最低限のハードウェア
ワンソース マルチユース
Windows Azure Media Services コンセプト(34/35)
料金プラン
Copyright © @fullvirtue. All rights reserved. 101
Media Job Scheduling
"Build-In" Partner Media Processors
Content Protection
"Build-On" Media Partners and Customers
Secure Media Ingest
Partner C
DNs
On-Demand Origin
パートナー様が決定
Encoding
処理データ量 / 月
料金 (GB)
最初の5TB ¥165.25
5 – 15 TB ¥132.87
15 - 30 TB ¥107.13
30 – 50 TB ¥84.71
100TB 以上 要ご相談
Blobs Load Balancer
量 / 月 Geo Replica (GB)
無し (GB)
最初の1TB ¥7.89 ¥5.82
- 49TB ¥6.65 ¥5.40
-450TB ¥5.82 ¥4.99
-500TB ¥5.40 ¥4.57
– 4,000TB ¥4.99 ¥3.74
- 9,000 TB ¥4.57 ¥3.08
9,000TB超 ご相談 ご相談
量 / 月 (GB)
最初の10TB ¥15.78
-40TB ¥11.63
-100TB ¥9.97
-350TB ¥8.31
-524TB ¥6.65
-4096TB ¥5.82
5,120TB超 お問い合わせ
量 / 月 (GB)
最初の10TB ¥15.78
-40TB ¥12.46
-100TB ¥10.80
-350TB ¥9.97
500TB超 お問い合わせ
料金 (Unit / 月)
¥16,524.87
料金 (Unit / 月)
¥8,220.92
共有ユニット 占有ユニット 占有ユニット (のみ)
Windows Azure Media Services コンセプト(35/35)
“動画配信” だけでサービスは成り立たない
Copyright © @fullvirtue. All rights reserved. 102
仮想マシン (Virtual Machines)
クラウド サービス (Cloud Services)
Web サイト (Web Sites)
SQL データベース (SQL Database)
ストレージ (Storage)
トラフィック管理 (Traffic Manager)
仮想ネットワーク (Virtual Network)
サービス バス (Service Bus)
メディア配信 (Media)
コンテンツ配信 (CDN)
キャッシュ (Caching)
アクセス制御&AD (ACS & Active Directory)
まとめ
Copyright © @fullvirtue. All rights reserved. 103
Copyright © @fullvirtue. All rights reserved.
今日お話したこと(1/1)
Windows Azure 管理ポータルでの配信手順
Windows Azure Media Services 開発環境の準備
Windows Azure Media Services APIを使った配信手順
Windows Azure Media Services コンセプト
まとめ
104
Copyright © @fullvirtue. All rights reserved. 105
ご静聴ありがとうございました。