超簡単! Azure Media Services のHTMLタグの作り方

Azure Media Servicesを選択頂くと、Azure Media Playerがもれなく無料で使えます。
ここでは、その簡単な使い方をご説明します。

  1. デモサイトに行きます

http://ampdemo.azureedge.net/azuremediaplayer.html


  1. ご自身の動画のURLを貼り付けます。そして [Update Player] を押します。
    動画が再生されるはずです。

動かなかった際に確認する事:

  1. codeを抽出

先のサイトの画面真ん中付近に、 というタブがあります。こちらには [Get Player Code] があります。これは本番で使えるHTMLタグです。

以下の様に表示されます。

  1. HTMLへ埋め込み

    お手持ちの、HTML

    HEAD

    BODY SCRIPT タグ
に、それぞれのコードをコピーください。

サンプルのHTMLファイル

https://github.com/dahatake/Azure-Media-Services-Samples/blob/master/31.%20AzureMediaPlayer_Simple/index.htm

  1. HTMLをブラウザーで起動

ローカルでも、任意のWeb Serverにでも、作成されたHTMLを置いてください。

勿論、Azure Web Appがお勧めですwww。スマートフォンからもアクセスして動作確認をしてください。

視聴数など取りたいでしょうから、Application Insightのタグを埋め込むと最高です! ログデータがAzure Storageに保存され、後から抽出して二次利用がしやすいですから。

Application Insight:

https://azure.microsoft.com/ja-jp/documentation/articles/app-insights-javascript/

Azure Media Player ドキュメント:

http://amp.azure.net/libs/amp/latest/docs/

Azure Media Player Plugin:

http://amp.azure.net/libs/amp/latest/docs/PLUGINS.html

ご参考: ビデオ プレーヤー アプリケーションの開発

https://azure.microsoft.com/ja-jp/documentation/articles/media-services-develop-video-players/

広告

ビジネスとクラウドについて考える。Azureをテーマにしたビデオ – Cloud への道 –

de:code 2016 に向けた予習ネタとして。それだけでなく今使える情報として。

書籍: Microsoft Azure への招待

2014年夏。エバンジェリストになりたての頃に、企業でITを使おうと考えている全ての人向けのAzureの読み物書籍を執筆しました。電子書籍のみという形式ですから、書店で見ることはありません。
この書籍は、Azureと銘打っていますが、あまりAzureの機能説明をしていません。非常に珍しいと思います。
Impress R&Dのご担当の方には足を向けて寝られません。筆の遅い私に辛抱強くお付き合いいただいたのを覚えています。そして、高添さん、野村さん、佐藤さんら先輩エバンジェリストの皆さんにレビュー頂きました。本当に感謝です。

http://www.impressrd.jp/news/140826/NP

なぜ書籍にしようと思ったのか?

ビジネスをするためのプラットフォーム。それに必要なものは実は変わらないものがあるのではないか?

と考えたからです。

少し遡ってみましょう。

Professional Developer Conference (PDC) 2008

2008年10月のPDCで、Azureの発表があったわけです。PDCは現在 //build として、その魂を受け継いでいます。

衝撃だったKeynote


PDC 2008 Keynote: https://channel9.msdn.com/Events/PDC/PDC08/KYN01

最近、Azure を始めた方は多いと思います。是非このキーノートのビデオをご覧ください
Ray Ozzieの言葉には、Sharing / Utility Computing / Enterprise Computing などが出てきます。そうです、Cloudが何に役に立つのかの説明です。そうです。初めてAzureというものを説明していますので、What’s Azure / Why Azure がきちんと説明されています。
## 高品質ビデオがWMVなのも懐かしいですね…

改めてセッション・スライドを見返しました。あせる事の無い、クラウド技術者の皆さんに知って頂きたいお話は、今も現役です。

個人的なお勧めのセッションです。

良い… ただ良い…

このセッションは史上最強です。

遅延と帯域の関係の話。

障害の考え方。

IT技術者が忘れがちなコストの考え方。ビルの建築・維持費、いわゆるハコものと、意外な電力コスト。

データの分散と整合性と可用性の永遠の関係。

当然出てくる、トランザクション管理において、ACIDがすべてではない、という話。だからRDBMS以外のストアシステムがあるわけで…

そして、データの存在している場所のお話。

アーキテクトの皆さんは常識かもしれません。今一度、クラウドエンジニアの皆さんには、是非アーキテクトの視点も持っていただきたいです。

Azure案件を共にした戦友とのカジュアルトークショー。Cloud への道

書籍Azureへの招待や、PDC 2008で語られたMicrosoftの考えるPlatformとしてのクラウド。そして、日本の案件で得られた知見。Microservices、IoT、Big DataなどMicrosoftが最近目指している世界観。それらの話を誰でもいつでもどこからでも聞けるように、ビデオ収録をしたのが、Cloud への道、というシリーズビデオです。
最初に。すいません、皆さん。1本が40分あるものもあって…長いものもあります。

実はこのビデオは、先の書籍「Azureへの招待」の更新版でもあります。

そして、書籍からビデオに形式を変えたことで、話は長くなったのですが(言い訳)、普段のお客様・パートナー様との会話が長くても楽しい時間がある時と同じ場に近づけるために、トークショー形式にしてみました。戦友として、頼もしい片山智佐子さんに出演いただきました。営業部門でパートナーさんとのお仕事が多いです。特にAzure Media Servicesのパートナーさんをご一緒に…
戦友だけあって、同じ場に何度もいましたので、Azureの良いところ/ダメなところ。同じ目線で話をしていますね。今後、様々な戦友の方とのお話も機会を作ってお届けしたいと思います。

Cloud への道 -Microsoft Azure を題材に:

こちらが実ビデオですね。

https://channel9.msdn.com/Series/road-to-cloud

ビデオとPowerPoint資料はダウンロードも出来ますので、是非ご覧になって、ご感想をお聞かせください。

実は収録してからすでに3カ月。今、同じテーマで皆さんにご紹介するとしたら、少し違った話になります。なぜなら、この間に多くの方と、ビジネスをテーマにして多くの会話を交わす機会を頂きましたから、私も知恵がついたんです。

変わらないもの

技術は単なる道具です。それはクラウドも同じ。ですが、やっぱり変わらないものがあります。
Azureなどクラウドと付き合い始めると、すごい量の更新に挫折しそうになる事もあるでしょう。build 2016が終わった今の私がそうですwww まぁ、多くの更新がありすぎで。

でも、安心してください。コアは変わらないんです。それは、ビジネスのために何が必要か?という点です。

2016年5月のde:code 2016 では、その変わらないビジネスをとらえつつ、技術としても基本は変わらないアーキテクトの方向けのトラックもご用意しています。

Microserviceを見ていると「SOAじゃん、これ」と思わず言いたくなりますよね。もっと言いましょうw。「クラウドってCPU多いホストコンピューターじゃん」。いいんです、その理解でwww。その原則は変わっていないんです。

ビジネスで一番大きく変わったのはスピードが求められる事業があるという事です。それに追従する道具が必要で、それをMicrosoftが提供しています。オンプレミスのAzure Stackもその一員です。

これら皆さんが日々接しているビジネスに必要なものは何かを念頭にいれて、是非セッションに参加ください。ディスカッションしたい内容が興味本位から必要なものに変わってきて、真剣な議論ができます。

さて、今日見つけた大変興味深い機械学習についての記事を最後に記載して、終わりにします。

非技術者が機械学習を評価する時に考えるべき3つのこと: http://jp.techcrunch.com/2016/04/04/20160402how-to-approach-machine-learning-as-a-non-technical-person/

de:code 2016 の準備もしちゃおう! Azure MVPとエバンジェリストが講師の、初心者向けAzureの無料ハンズオンが開催されます!

間が空いてしまいました…

今回は、技術トピックではなく、皆さんの技術力アップのためのセミナー開催のご案内です。
私は最近そちらのセミナー登壇が多くなっております… 私、Azure Media Service 以外もやっておりますのでwww

ご存じの方もいると思いますが、来月5/24-25と恒例のマイクロソフト最大の技術イベントであるde:code 2016 が東京で開催されます。

https://www.microsoft.com/ja-jp/events/decode/2016/default.aspx

技術のキャッチアップ

このイベントの特徴は、技術について実践的な内容に特化してセッションが組まれている事です。つまり初心者向けの「この製品って何?」といった概要セッションがほぼ皆無です。そのため、予備知識無しでセッションに参加すると、場合によっては難易度が高いと感じるかもしれません。

事、Azureに関しては、仮想基盤や開発環境がオンプレミスと同じという事もあって、分かったような気になりがちです。ですが、やっぱり技術は触ってみないと納得感が得られないと思います。そのためにはハンズオンは短期間でその知識を得るために役に立ちます。

そのため、de:code 2016の予習も兼ねて、

  • 初心者向けAzure の無料ハンズオン
  • 複数のサービスをまとめて体験できる、クラウドキャンプ

を開催します。

・初心者向けMicrosoft Azure ハンズオン トレーニング

登録はこちらから: https://technet.microsoft.com/ja-jp/mt651712

こちらですが、何と講師は現場でAzureを使い倒しておられて、社員がほぼ全員
Azure MVP
でもあるというpnopさんなんです! これは贅沢です!

pnop: http://www.pnop.co.jp/

・クラウド/デベロッパー キャンプ

こちらも主に初心者向けに、ハンズオンを中心として、Webアプリケーション開発のための基盤を一通り学ぶ、という形式になっています。Azure 仮想マシン (IaaS)、Azure Web App、SQL DatabaseのAzureでよく使う3兄弟が中心です。
講師はエバンジェリストが担当しています。
4月と5月にも開催を予定しています。2月には、Azure Machine Learningをスペシャルとして加えました。ちなみに、2月のハンズオンテキストは公開しています。

2016/2/29開催: クラウドキャンプ入門編 テキスト:

https://docs.com/cloudcamp/8369/2016-2-29-machine-learningmicrosoft-azure

Azureの経験者の方には、英語版にはなりますが、もう少し実践的なテキストを別にご用意しています。こちらにPower Pointや、サンプルスクリプト、手順書などがあります。

・Azure関連 無料オンライン / オフラインセミナー

実は毎日のように、開催しています。こちらのサイトから申し込みが出来ます。

https://technet.microsoft.com/ja-jp/dn308916

平日が多いので参加が難しい方もいらっしゃるかもしれません。
ですが、是非、時間を有効に活用するためにも、こうした場を積極的に活用ください。直接話せる事のメリットは大きいと思います。

最近のAzure関連オフラインセミナーのテキスト:
https://docs.com/cloudcamp#collection

de:code だけではなく、日頃の皆さんの課題を是非「技術」を中心に解決していければと思います!

Windows Azure Quick Start Extension

Visual Studioの拡張機能として、リリースされています。
Windows Azure SDK for .NETの勉強として素晴らしく良くまとまっています。

インストール後の、プロジェクトテンプレートはこんな感じです。

試しに、[Windows Azure Media Services] でプロジェクトを作成しました。
VODの基本動作のためのメソッドがありますね。Windows Azure Media Services SDK Extensionsは使っていませんが(笑)。

アセンブリ参照が古いのはご愛嬌、という事で・・・

Enjoy!

Expression Encoder 4 SP2 (無償版) から、Windows Media Services 2008 へライブ配信を行う

ニーズが、どれだけあるか別として、IIS Media Servicesでも、Windows Azure Media Servicesでもなく、Windows Media Serviceへのライブ配信環境構築手順を残しておきます。

勿論、Windows Azure上から配信を行います。

ここでは、あくまで最低限動く環境構築だけにします。本番で使う場合には、ネットワーク、冗長性などしっかり考慮ください。

Windows Media Services 2008 Deployment Guide:

http://technet.microsoft.com/en-us/library/cc730848(v=ws.10).aspx

なお、ここでは画面は英語のままで行いますので、ご了承ください・・・

用意するもの

・Microsoft Expression Encoder 4 SP2: 無償版

http://www.microsoft.com/ja-jp/download/details.aspx?id=27870

VC-1のみのサポートですから、実質Windows 環境でしか視聴が出来ません。

念のためですが、Expression Encoder 4 ですが、2020/9/8までサポートされているエンコーダーです。

http://support.microsoft.com/lifecycle/search/default.aspx?sort=PN&qid=&alpha=Expression+Encoder+4&Filter=FilterNO

手順

  1. Windows Azure 仮想マシンを用意する。

Windows Server 2008 R2 SP1のイメージを使います。
詳細な手順は、仮想マシンの自習書をご参考ください。

ポート80番を空けるのをお忘れなく・・・

数分待ちます・・・

  1. Windows Media Servicesの追加モジュールをインストールする

OSそのものには入っておらず、追加モジュールとして提供されています。以下からモジュールをダウンロードして、インストールします。

Windows Server 2008 R2 用 Windows Media サービス 2008:

http://www.microsoft.com/ja-jp/download/details.aspx?id=20424

ここでは、英語版を使います。

インストールし終わりましたら、

Windowsの[ロールの追加]から[ストリーミング メディア サービス] を追加します。

選択して、

ここでは、[Windows Media Server] だけを入れます。
次が大事で、[HTTP] でのデータ転送オプションをチェックします。Expression Encoderでは、RTSPは作成できません。

これで、インストールを行います。

  1. Windows Media Servicesを構成する

Expression Encoder から、HTTP で、Push配信出来るように設定を行います。

[スタート] メニューから、[Windows Media Services] を起動します。

管理コンソールの[Windows Media Services] – [<server name>] を右クリックして、[Add Publishing Point (Advanced)] を選択します。

・Wizardですと、Push型のものが設定できません。Pullは、ファイアーウォールを超えられませんので、Windows Azureを考えますと現実的ではないです。

Add Publishing Point のダイアログが出てきますので、以下を設定します。

Publishing point type Broadcastにします。
Publishing point name 任意の名前にします。
Location of content: Push:*
Content type examples Encoder (push)
  1. Expression Encoder 4 SP2 から映像を送る。

ライブブロードキャストを行います。

[ライブ ブロードキャスト プロジェクト] を選択します。

この画面は「Pro」のものですが、無償版でも手順は同様です。
[プレビュー]にあるリンクを上から設定していきます。

・ライブソース

カメラの追加ですね。

・プリセット

映像の設定です。[スムーズ ストリーミング] はWindows Media Servicesでは利用できませんので、ご注意ください。

・出力

ここで、Windows Media Servicesを指定します。

http://<server name>/<publishing point name>

を入れます。

下記を参考にしてください。

[接続] を押して、接続確認をしてください。

認証ダイアログが表示されますので、Windows Azure仮想マシン作成時に指定した、ユーザー名とパスワードを入れてください。

成功すると、[接続済み]と表示されます。

後は、画面中央の [開始] を押して、配信開始です!

Expression Encoder の中でも映像配信が開始されたのが、確認できます。

Windows Media Servicesの方でも、状態が[Started]になっているのが、確認できます。

  1. Windows Media Playerで確認

Expression Encoder 4 SP2にて、Windows Media Playerに渡すURLを取得できます。

画面下部の[接続]の中から、URLがありますので、それを利用します。

Windows Media Player を起動し、
ファイルメニューから[URLを開く] を選択し、

Expression Encoderの[URL]の文字列を貼り付けます。

これで、Windows Media Playerでも映像が確認できます。

  1. 最後に

Windows Media Servicesは、Windows Server 2008 R2が最後のバージョンとなっています。

是非、皆様の事情に最適なストリーミングソリューションを見つけられればと思います。

Windows Media Services IIS Media Services Windows Azure
メディアサービス
対応OS Windows Server 2008 R2 まで Windows Server 2008 以降
HTTPでのストリーミング
マルチキャスト × ×
RTSP/TCP & RTSP/UDP Streaming × ×
業界標準の動画ファイル ×
HTTPキャッシュの使用 ×
HLS配信 ×
MPEG-DASH対応 × ×
インフラ運用監視 高い 高い 圧倒的に安い
コスト 資産 資産 費用

Windows Azure IaaSに独自CDNを実装する

CDNはサービスとして提供されています。Windows Azureの場合は全世界にCDN拠点もありますので、そのグローバル展開の象徴ともいえます。
ですが、そもそもはスケールアウトするキャッシュですから、負荷分散を主目的とする使い方もあります。例えば、既存のライブ配信システムに同時接続数制限があったり、閲覧範囲が実は狭かったり。国内だけとか。
そういった場合には、無限のスケールアウトの出来る、Windows Azureの良さが活きてきます。

ここでは、ライブ配信の「フロント」として、Azure内部にCDN機能を実装する手順を紹介します。
使うものは、IISのApplication Request Routing (以降ARR)です。リバースプロキシー+ディスクキャッシュとして気軽に使えるものです。

http://www.iis.net/downloads/microsoft/application-request-routing

全体構成は以下になります。Cloud Services部分でインスタンスを足していけば、いくらでもスケールします。
Originは相当な数の相手が出来るでしょう(笑)。1,000インスタンスくらいは楽勝ですかね(笑)。

Origin Serverの構築

特に難しいことはないのですが、

  1. IISを有効にする
  2. IIS Media Serviceをインストールする

をします。

IISを有効にした後で、IIS Managerを起動すると、「Web Platform Installer」を利用するかと尋ねられます。
その中からインストールしますと、関連機能もまとめてインストール・有効化されますので、大変便利です。

http://technet.microsoft.com/ja-jp/library/ee729229(v=ws.10).aspx

ちなみに、Windows Server 2012以降ですと、よく使うアプリケーションは、デスクトップにショートカットを作成するか、タスクバーに「ピン止め」すると便利です。

  1. HTTPのポートを開ける。これは忘れがちなので・・・

CDNの構築

ここでは、最低限の設定だけで構築をします。

  1. IISを有効にする。
  2. Web Platform Installer をインストールする。
  3. [Application Request Routing 3.0 Beta] を選択、[Add]する。

関連モジュールが一緒に選択されますので、[I Accept]からインストール開始。

以下の画面で、インストール完了。

いったん、IIS Managerを閉じて、再度開くと、Application Request Routingが出てきます。

Sites ではなく、サーバーインスタンスを選択していることにご注目ください。

  1. Disk Cacheを有効にする。

ARRでは、HTTP/HTTPSのリクエストの結果を、ローカルのディスクに保存します。そのため、どこに保存をするかを設定します。

Application Poolのアカウントが、その場所に読み書きの権限が必要ですので、適時設定ください。

4-1) [Add Drive] を選択します。

ここでは、「C:\ARRCache」を作成、指定しています。

以上で、Disk Cacheは終わりです。

  1. Server Farmを構成

[Server Farm] というと、Web Serverなどで束ねるものと理解しがちですが、ここでのServer Farmは、フロントと、バック。つまり、CDNとOriginの組み合わせを意味します。つまり、個々のCDN上から、Originへの1:1のマッピングです。

5-1) [Create Server Farm] を選択

5-2) 名前を付けます。これはマッピングの名前という意味なので。

5-3) Farm にサーバーを追加します。自身はホスト名だけでいいのですが別のネットワークやクラウドサービスのものは、”.cloudapp.net”までを付けるのを忘れないでください。名前解決が出来ません。

下図の場合は、以下の意味となります。

  • dahatakeorigin.cloudapp.net : ライブストリーミングサーバー。Windows Azure 管理コンソールの「ダッシュボード」で、DNS で表示されているものです。

  • dahatakecdn01: 自分自身

リバースプロキシー用のURL Rewriteのルールを自動的に作ってくれます。そのまま[Yes]を選択します。

さ、これでServer Farmが出来ました。

  1. Live 配信用のスロットリング設定

Live配信の場合は、キャッシュを作成しないうちに、一度に大量のアクセスをが来る可能性があります。これでは、キャッシュとしてのCDNの意味がありません。
そのため、ユーザーからのリクエストをある程度「貯めておく」機能が有効となります。

http://www.iis.net/learn/extensions/configuring-application-request-routing-(arr)/configure-request-consolidation-feature-in-application-request-routing

6-1) Server Farm で、先ほど作成したものを選択します。その中で、[Caching]を選択します、

6-2) [Enable request consolidation] にチェックを付けて、画面右側の [Apply] を押します。

  1. HTTPのポートを開ける。これは忘れがちなので・・・

動作確認

実際にライブ配信をして、確認をしてみましょう。
Expression Encoder 4 Pro SP2 などからエンコードを。

プレイヤーは、Silverlightのサンプルを。

http://smf.codeplex.com/releases/view/88970

インスタンスの追加

IaaSの場合は、既存のクラウドサービスに「参加」するだけです。最後にポートをあけましょう。

Windows Azure Blob StorageをProgressive Downloadに最適化させる設定

Progressive Downloadは、HTML5 Videoなどでの標準的なビデオのストリーミング手法です。
Streaming Serverが不要でWeb Serverだけで構成できますので、非常に気軽に利用ができます。
ただ、動画の場合は、別の時間にポイントしたときに「シーク」が行われますが、Web Serverが、HTTP Headerにて”Accept Byte-Range”を返さないと、すごく時間がかかります。殆どのIISやApacheでは標準対応しているので、多くは問題になりません。

さて、Windows Azure を考えてみると、「BlobはHTTPだから、Blobにファイルを置いたらHTML5 ビデオで再生できるじゃない!」と思ってしまいます。
ですが、実際には、再生自体は出来るのですが、シーク処理をするとレスポンスがかなり悪い場合があります。

その際には、Blob Storageに、バージョン設定をすると、正しく動作します。

Versioning for the Blob, Queue, and Table services in Windows Azure:

http://msdn.microsoft.com/en-us/library/dd894041.aspx

これを見ると、Windows Azure Storageにはバージョンがあり、「2011-08-18」バージョンで、”Accept-Ranges:bytes” に対応していることがわかります。

The 2011-08-18 version includes these changes:

Get Blob (REST API) returns an Accept-Ranges:bytes header in the response to indicate that the service supports range requests.

以下に、ストレージのバージョンを変更する、簡単なC#のプログラムを以下に示します。

using Microsoft.WindowsAzure.Storage;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace EnableProgressiveDownload4AzureBlob

{

    class Program

    {

        static void Main(string[] args)

        {

            var storageAccount = CloudStorageAccount.Parse(“AccountName=<your name>;AccountKey=<your key>;DefaultEndpointsProtocol=http”);

            var blobClient = storageAccount.CreateCloudBlobClient();

            // service properties 取得

            var serviceProperties = blobClient.GetServiceProperties();

            Console.WriteLine(“Old version: {0}”, serviceProperties.DefaultServiceVersion);

            // refer: http://msdn.microsoft.com/en-us/library/dd894041.aspx


            // 初期設定は null
ったりします・・

            // 2011-08-18 り高いバージョン設定をします。

            serviceProperties.DefaultServiceVersion = “2012-02-12”;

            // service properties 更新します。

            blobClient.SetServiceProperties(serviceProperties);

            Console.WriteLine(“New version: {0}”, serviceProperties.DefaultServiceVersion);

            Console.WriteLine(“Done”);

            Console.ReadLine();

        }

    }

}

設定前のHTTP Response

HTTP/1.1 200 OK

Proxy-Connection: Keep-Alive

Connection: Keep-Alive

Content-Length: 92287224

Date: Thu, 20 Jun 2013 10:30:12 GMT

Content-Type: video/mp4

ETag: 0x8D03BAFC5A2047D

Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0

Last-Modified: Thu, 20 Jun 2013 09:29:18 GMT

x-ms-request-id: 42ae864f-c225-4eea-8f28-9173914b142f

x-ms-version: 2009-09-19

x-ms-meta-CbModifiedTime: Thu, 20 Jun 2013 09:25:56 GMT

x-ms-lease-status: unlocked

x-ms-blob-type: BlockBlob

設定後のHTTP Response

HTTP/1.1 206 Partial Content

Proxy-Connection: Keep-Alive

Connection: Keep-Alive

Content-Length: 46415872

Date: Thu, 20 Jun 2013 10:37:40 GMT

Content-Range: bytes 29261824-75677695/92287224

Content-Type: video/mp4

ETag: “0x8D03BAFC5A2047D”

Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0

Accept-Ranges: bytes

Last-Modified: Thu, 20 Jun 2013 09:29:18 GMT

x-ms-request-id: 36e940ac-e3ed-4bb4-9260-81d19ff815b4

x-ms-version: 2012-02-12

x-ms-meta-CbModifiedTime: Thu, 20 Jun 2013 09:25:56 GMT

x-ms-lease-status: unlocked

x-ms-lease-state: available

x-ms-blob-type: BlockBlob

うまくご活用ください!