Hejdaの見る夢

一人前のエンジニアを目指して頑張ったこととかをつらつら書くブログ

Azure Media Services を使って、ストリーミング動画に日本語・英語字幕を付けてみる📹 〜前編〜

何をする記事ですか?

Azure Media Services を使って日本語の動画に日本語・英語の字幕を付けていきます :)

Azure Media Services

azure.microsoft.com

記事が長くなったので、前編と後編に分かれています。

流れ

前回までにやったこと

前回 -> Video Indexer を使って、映像から音声を抽出してみた!! 📹

  1. 動画を用意する
  2. inver でテキストにする
  3. テキストをローカルに落とす(前回はここまで)

今回やること

  1. Azure Media Services に動画をアップロードする
  2. Azure 上で、動画をストリーミング用にエンコードする
  3. Azure の Static Website を利用して、動画を公開する

前回の作業のおさらい

  • Video Indexer を使うことで、映像から簡単に文字起こしが出来ました。
    • また、その文字起こしのデータもダウンロード行っておきます。

azure.microsoft.com

また、今回使用している動画は Serverless Meetup Tokyo #16 の主催者さまから頂いた動画データを用いています。

多謝 (-人-)

serverless.connpass.com

www.youtube.com

参考資料

くらでべ (クラウドデベロッパーちゃんねる)

www.youtube.com

Azure | Azure Media Services 基礎 (前編)

www.youtube.com

Azure | Azure Media Services基礎 (後編)

www.youtube.com

Azure Media Services に動画をアップロードする

上記の参考資料の公式動画を見ながら、Azure Media Services に手もとの動画をアップロードし、Azure 上でエンコードします。

  • Azure のポータルを開きます。

f:id:nari_kyu:20200314182018p:plain

  • 検索から Media Services を探します。

f:id:nari_kyu:20200314182030p:plain

  • 下記のような画面に遷移します。

f:id:nari_kyu:20200314182040p:plain

  • Add から新規作成し、以下のように埋めて作成します。

f:id:nari_kyu:20200314182933p:plain

  • 無事に作成出来ました :)
    • (適当に名前をつけた結果、これじゃない感が…みなさんは適切な名前をつけましょう

f:id:nari_kyu:20200314183204p:plain

  • 早速、Media Services を開きます。

f:id:nari_kyu:20200314183748p:plain

  • まずは動画をアップロードするために Assets を開き、 Upload をクリックします。

f:id:nari_kyu:20200314183835p:plain

f:id:nari_kyu:20200314183957p:plain

  • 下記のような画面になるので、ローカルに保存している動画をアップロードします。
    • 今回は Serverless-Meetup-Tokyo-16.mp4 という名前の動画をアップロードしました。

f:id:nari_kyu:20200314184031p:plain

f:id:nari_kyu:20200314184126p:plain

  • Upload 中

f:id:nari_kyu:20200314184159p:plain

  • Upload が終ると Assets の中に登録されます。

f:id:nari_kyu:20200314184247p:plain

Azure 上で、動画をストリーミング用にエンコードする

  • 引き続き、Assets の中で Encode をクリックします。

f:id:nari_kyu:20200314184939p:plain

  • 下記のような画面に遷移します。
    • ここで、Encoding presetAdaptive Streaming に指定しましょう。

f:id:nari_kyu:20200314185040p:plain

  • そうすると、Encode が始まります。

f:id:nari_kyu:20200314185110p:plain

f:id:nari_kyu:20200314185121p:plain

  • しばらく待ちましょう :)

f:id:nari_kyu:20200314185154p:plain

  • Encode が終わった後に、Assets に戻ると、先程作成したストリーミング用の動画が出来上がっているのでこちらをクリックします。

f:id:nari_kyu:20200314185722p:plain

  • ストリーミング用の動画のページにて Publish をクリックします。

f:id:nari_kyu:20200314234505p:plain

  • 下記の様な公開期間の設定が出来るので、任意に設定しましょう。
    • デフォルトは 100 年間になっています。

f:id:nari_kyu:20200315145027p:plain

  • Publish の設定を行うと、 Play がクリック出来るようになります。

f:id:nari_kyu:20200315145302p:plain

  • 動画の Player が立ち上がるので、 Playback URL をコピーしておきます。

f:id:nari_kyu:20200315145842p:plain

  • ブラウザの別タブにて、Azure Media Player を起動し、先程コピーした Playback URL を入力して、 Updatae Player にて反映させます。
    • この時、 Playback URLhttp なので、 https に変換しましょう。( s を入れるだけです)

ampdemo.azureedge.net

f:id:nari_kyu:20200315150112p:plain

  • Azure Media Player でも再生出来ることが分かりました。

f:id:nari_kyu:20200315150353p:plain

  • Azure Media Player の Code をクリックし、 Get Player code をクリックします。

f:id:nari_kyu:20200315151019p:plain

  • 下記のように、html ファイルに記載すべき情報を掲示してくれるので、ローカルに作成した index.html にそれぞれを記載していきます

f:id:nari_kyu:20200315151222p:plain

  • index.html

gist.github.com

  • 実際の例
<!DOCTYPE HTML>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title> Serverless Meetup #16  </title>

  <link href="//amp.azure.net/libs/amp/2.3.4/skins/amp-default/azuremediaplayer.min.css" rel="stylesheet">
  <script src="//amp.azure.net/libs/amp/2.3.4/azuremediaplayer.min.js"></script>

</head>
<body>
  <video id="azuremediaplayer" class="azuremediaplayer amp-default-skin amp-big-play-centered" tabindex="0"></video>

<script>
  var myOptions = {
    "nativeControlsForTouch": false,
    controls: true,
    autoplay: true,
    width: "640",
    height: "400",
  }
  myPlayer = amp("azuremediaplayer", myOptions);
  myPlayer.src([
          {
                  "src": "https://iganari-jpea.streaming.media.azure.net/eff92941-9aa5-4ad0-9232-35886fa43952/Serverless-Meetup-Tokyo-16.ism/manifest",
                  "type": "application/vnd.ms-sstr+xml"
          }
  ]);
</script>

</body>
</html>

Azure の Static Website を利用する

  • Azure のポータルに戻り、Static website 用の Storage account を新規で作成します。

f:id:nari_kyu:20200315154802p:plain

f:id:nari_kyu:20200315154812p:plain

  • 新規作成した Storage account を開き、Settings の中の Static website を開きます。

f:id:nari_kyu:20200315155114p:plain

  • DisabledEnabled に変更し、設定項目を入れて Save します。
    • ここ表示される、 Primary endpoint をコピーしておきましょう。

f:id:nari_kyu:20200315155231p:plain

f:id:nari_kyu:20200315155240p:plain

f:id:nari_kyu:20200315155250p:plain

  • 次に、 Storage account の中の Blob service 項の Containers をクリックし、$web をクリックします。

f:id:nari_kyu:20200315155930p:plain

f:id:nari_kyu:20200315155951p:plain

  • 遷移先で、先程作成した index.html をアップロードします。

f:id:nari_kyu:20200315155940p:plain

f:id:nari_kyu:20200315160108p:plain

  • 先程コピーした Primary endpoint にアクセスして、動画が再生出来るか確認しましょう。

f:id:nari_kyu:20200315160639p:plain

まとめ

Azure Media Services と、 Azure Static website を用いることで簡単に動画を公開することが出来ました!!

次回は日本語と英語の字幕を付けていきます!!

Have fan! :)