Date

Microsoft のクラウドサービス Windows Azure に Windows Azure Media Servicesが追加された。この機能を使うと、オーディオ・ビデオのトランスコードやストリーミング配信を行うことができる。

本記事では Media Services のセットアップをし、トランスコードを行う手順を紹介する。環境は以下の通り。

  • Windows 8 Release Preview (x64)
  • Visual Studio 2012 RC

※ 執筆時点では Preview 版ではあるため、正式リリース版とは手順が異なる可能性がある。

Windows Azure SDK 1.6 のインストール

Windows Azure SDK は Windows 8 に対応している 1.7 (June 2012) が最新である。 しかし現時点においては、後述する Media Services SDK が 1.6 にしか対応していない。 そこで 過去バージョンのページから November 2011 (Version 1.6) を単体でインストールする。手元の環境では 1.7 を WebPI でインストールした後でも問題なかった。

Azure SDK のインストール

Windows Azure Media Services SDK for .NET のインストール

Windows Azure SDK には Media Services を使うためのコンポーネントが含まれていないので、追加でインストールする。

Media Services SDK のインストール

Windows Azure Storage アカウントを作成する

管理ポータルに移動し Media Services で使用する Storage アカウントを作成する。このとき Media Services に対応するリージョンを選択すること。対応リージョンは以下の通り。

  • West Europe
  • Southeast Asia
  • East Asia
  • North Europe
  • West US
  • East US

West US に Storage アカウントを作成した

作成したら Blobs の endpoint と Primary access key をコピーしておくこと。

Media Services のアカウントを作成する

Power Shell を管理者で実行し、以下のコマンドを入力する。

1
2
 cd "C:\Program Files (x86)\Microsoft SDKs\Windows Azure Media Services\Services\v1.0"
# .\GetMediaServicesEnv.ps1

.\GetMediaServicesEnv.ps1 を実行するとブラウザが起動し .publishsettings ファイルのダウンロードが始まる。適当なフォルダーに保存しておくこと。続いて、以下のコマンドを実行し .publishsettings を読み込ませる。Management service endpoint, Management certificate thumbprint, Subscription Id が表示されるので、コピーしておくこと。

1
2
3
4
5
6
7
8
 .\SetMediaServicesEnv.ps1 -path 'Windows Azure MSDN - Visual Studio Ultimate-X-XX-XXXX-credentials.publishsettings'

Certificate imported into CurrentUser\My\Windows Azure MSDN - Visual Studio Ultimate-X-XX-XXXX-credentials
Publish settings imported

Management service endpoint: https://management.core.windows.net/
Management certificate thumbprint: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Subscription Id: YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY

これらをもとに $context を設定する。

1
 $context = Get-MediaServicesManagementContext -managementserviceendpoint https://management.core.windows.net/ -managementcertthumbprint (Management certificate thumbprint) -subscriptionid (Subscription Id)

Get-MediaServicesAvailableRegions コマンドで対応リージョンを返す。 Azure storage account はこれらのリージョンで設定したはず。このコマンドがエラーになるときは $context を見直してみること。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 Get-MediaServicesAvailableRegions -managementcontext $context

RegionName
----------
East_Asia
North_Europe
SouthEast_Asia
US_East
US_West
West_Europe

Media Services のアカウントを作成する。Get-MediaServicesAccountAvailability でアカウント名が空いているか確認する。

1
2
 Get-MediaServicesAccountAvailability -managementcontext $context -AccountName (account name)
True

True が返ってきたら、そのアカウント名で作成する。ここで storage account の名前, Primary access key, リージョン, end point が必要となる。不明な場合は管理ポータルから storage のページを開いて確認すること。

1
2
3
4
5
6
7
 Add-MediaServicesAccount -ManagementContext $context -AccountName (MediaServicesAccountName) -StorageAccountName (StorageAccountName) -StorageAccountKey (storage account key value) -Region (MediaServicesRegionName) -BlobStorageEndpoint (https://your storage account blob URL)

AccountId    : XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
AccountName  : XXXXXXXXXXXXXXXXXXXXXXX
Subscription : XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
StatusCode   : Created
Reason       :

以下のコマンドを入力し Media Services の account key を取得する。 account name と account key の組み合わせで Media Services の API にアクセスする。

1
2
 $accountdetails = Get-Mediaservicesaccountdetails $context AccountName (account name)
# $accountdetails.accountkey

セットアップは以上となる。

プロジェクトを設定する

アカウントが作成されたので、試しに wmv から mp4 形式への動画のトランスコードを実施してみる。

MSDN のサンプルコードのサイトから Windows Azure Media Services Getting Started Samples をダウンロードする。ダウンロードしたファイルを展開し MediaServices-GettingStarted.sln を Visual Studio 2012 RC で開く。

Program.cs の _singleInputFilePath に入力ファイル名を、 _outputFilesFolder に出力先フォルダー名を書く。サンプルには interview.wmv というファイルが同梱されているので、それを使ってもよい。

1
2
3
4
5
6
// Set a local path to an input .wmv media file. You can use
// the sample file provided with the project.
private static readonly string _singleInputFilePath = Path.GetFullPath(@".\interview.wmv");

// Set a path to an existing local folder to use for output files
private static readonly string _outputFilesFolder = Path.GetFullPath(@".\");

App.config に Media Services の account name と account key を入力する。

1
2
3
4
5
6
7
8
9
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
  <appSettings>
    <add key="accountName" value="mediaserviceaccountXXXXX" />
    <add key="accountKey" value="accountkeyXXXXXXXXXXX" />
  </appSettings>
</configuration>

[PROJECT] - [Add References] を開き [Browse] ボタンをクリックする。C:\Program Files (x86)\Microsoft SDKs\Windows Azure Media Services\Services\v1.0\Microsoft.WindowsAzure.MediaServices.Client.dll と C:\Program Files\Windows Azure SDK\v1.6\bin\Microsoft.WindowsAzure.StorageClient.dll を追加する。

Reference Manager で参照を追加する

実行する

実行中

実行すると、 Azure Storage に interview.wmv がアップロードされる。そのあと mp4 にトランスコードされ、手元にダウンロードされる。

Azure Storage Explorer を使うと .wmv と .mp4 ファイルが存在していることが確認できる。


Comments

comments powered by Disqus