Nginx rtmp module secure link PHP videoJS

さて、前回まででsecure linkを利用して一時的なURLを作成して映像配信ができるようになりました。これをvideoJSを利用してハッシュキーはPHPで動的に作成しながら再生できるようにします。

セキュアリンクで映像配信できるようにするためにはこちら

Streaming with nginx-rtmp-module Secure links

最後はこのハッシュキーをPHPで作成して、配信できるようにします。

<html>
   <head>
      <link href="http://vjs.zencdn.net/5.11.6/video-js.css" rel="stylesheet">
      <script src="http://vjs.zencdn.net/5.11.6/video.js"></script>
   </head>
   <body>
      <video id="rtmp_test" class="video-js vjs-default-skin" autoplay="autoplay" controls="controls" width="800" height="450" data-setup="{}">
      <?php
         // 秘密鍵 になります。なんでもOKですので、ここでは日本語(UTF-8)で設定してみます。
         $secret = 'mysecretkey';
         // セキュアなリンク からでないとアクセスできないURIを設定します。
         $path   = 'live/test';
         // 公開鍵として、有効期限を time() + 秒 で設定します。
         // -- この有効期限の設定の仕方は、Nginxではこの方法でしか認識できません。
         $timestamp = time() + 3600; // 60(秒) x 60(分) = 3600(秒) = 1(時)

         // "秘密鍵 + パス + 公開鍵" を Nginxで扱うことができる md5 で暗号化します。
         $hash = base64_encode(md5($secret . $path . $timestamp, true));
         // +,/,= は、URLパラメータとして扱えないので、置換します。
         $hash = strtr($hash, '+/', '-_');
         $hash = str_replace('=', '', $hash);

         //  セキュアなリンクを出力します。
         $url = "{$path}?e={$timestamp}&st={$hash}";
         echo '<source src="rtmp://video.hanako.or.jp/'.$url.'" type="rtmp/mp4" />'
      ?>

      </video>
   </body>
</html>