【问题标题】:flowplayer, php and javascript: Hide stream nameflowplayer、php 和 javascript:隐藏流名称
【发布时间】:2013-02-03 13:31:24
【问题描述】:

所以我使用 flowplayer 播放 rtmp 流,但当前流的 web 视图显示流“key”或 url。

如果这是真的,其他用户将能够“接管”我们不想要的流。所以我需要能够在网络代码中隐藏“密钥”或 url。我不想要任何身份验证,因为许多常见的 RTMP 流媒体程序在流式传输时不支持。

在你说之前,我已经看过 http://flash.flowplayer.org/demos/plugins/streaming/secure-streaming.html 但我无法让它与 RTMP 流式传输一起工作,只有一个固定的 .flv 流...

这是我的代码:

<a  
style="display:block;width:960px;height:540px;margin:10px auto"
id="stream">
</a>
<script type="text/javascript">
flowplayer("stream", "http://xxx.net/live/files/flowplayer-3.2.15.swf",
{
clip: {
url: 'stream name url key goes here',
live: true,
provider: 'rtmp'
},
plugins: {
rtmp: {
url: 'http://xxx.net/live/files/flowplayer.rtmp-3.2.11.swf',
netConnectionUrl: 'rtmp://xxx.net/live'
}
}
}
);
</script>

【问题讨论】:

    标签: php javascript rtmp flowplayer


    【解决方案1】:

    您需要使用 php 文件(或其他替代文件)动态提供 URL,它必须是服务器端代码,并且看起来像

    <?php
      $hash = $_GET['h'];
      $streamname = $_GET['v'];
      $timestamp = $_GET['t'];
      $current = time();
      $token = 'sn983pjcnhupclavsnda';
      $checkhash = md5($token . '/' . $streamname . $timestamp);
    
      if (($current - $timestamp) <= 2 && ($checkhash == $hash)) {
      $fsize = filesize($streamname);
       header('Content-Disposition: attachment; filename="' . $streamname . '"');
      if (strrchr($streamname, '.') == '.mp4') {
       header('Content-Type: video/mp4');
       } else {
      header('Content-Type: video/x-flv');
      }
      header('Content-Length: ' . $fsize);
      session_cache_limiter('nocache');
      header('Expires: Thu, 19 Nov 1981 08:52:00 GMT');
      header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
      header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre check=0');
      header('Pragma: no-cache');
      $file = fopen($streamname, 'rb');
      print(fread($file, $fsize));
      fclose($file);
      exit;
      } else {
      header('Location: /url/');
      }
    

    ?>

    注意,$streamname 是从 JS 的 url 部分提取的

     <script type="text/javascript">
     // <![CDATA[
     window.onload = function () {
      $f("player", "flowplayer-3.2.16.swf", {
       plugins: {
        secure: {
          url: "flowplayer.securestreaming-3.2.8.swf",
          timestampUrl: "sectimestamp.php"
        }
      },
      clip: {
        url: "trailer.flv",
        urlResolvers: "secure",
        scaling: "fit",
        onStart: function (clip) {
          document.getElementById("info").innerHTML = clip.baseUrl + "/" + clip.url;
            }
           }
         });
         };
         // ]]>
         </script>
    

    如果有人试图从 Flash 播放器中直接提取源代码,而当他们查看源代码时,他们只会看到文件名,但域等通过 php 文件提供。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-01
      • 2016-09-22
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 2015-06-04
      相关资源
      最近更新 更多