【问题标题】:How to serve .flv files using PHP?如何使用 PHP 提供 .flv 文件?
【发布时间】:2009-03-01 08:48:41
【问题描述】:

我正在建立一个流媒体视频网站。这个想法是客户应该支付会员费,登录系统,并能够观看视频。我将与 FlowPlayer 一起展示实际视频。

现在的问题是,视频需要公开存储在某个地方,并且需要将 .flv 文件的 url 传递给 flowplayer 才能显示它们。这会产生一个问题,因为任何人都可以查看源代码、下载视频并在整个互联网上分发。

我知道有些人使用 php 来提供图像,方法是制作图像 header(),然后他们可以执行以下操作:

<img src="image.php?userId=1828&img=test.gif" />

php 脚本验证用户 ID 并提供 .gif 文件,而 gif 文件的实际 url 永远不会泄露。

是否也可以使用 .flv 或任何其他视频格式来执行此操作?例如,传递给 PHP 脚本的文件和用户 ID,它会验证它们并返回视频?

【问题讨论】:

  • 无关紧要:HTML转义:应该是“src="image.php?userId=1828&img=test.gif"”。

标签: php security video streaming http-headers


【解决方案1】:

您可以在您的网络服务器上设置一个包含 FLV 文件的目录,该目录只能由 PHP 访问,然后在您的 PHP 脚本中,您可以像往常一样对用户进行身份验证,只需向浏览器发送一个标头,告诉它期待 FLV ,然后回显原始 FLV 数据:

<?php
// here is where
// you want your
// user authentication

if ($isAuthenticated)
{
  header("Content-type: video/flv");
  echo file_get_contents($pathToFLV);
}
?>

正如 Chad Birch 所讨论的,这只会阻止人们直接链接到视频 - 您无法以这种方式阻止盗版。

【讨论】:

  • 当然,这不会阻止人们在流播放器渲染视频后抓取视频。但我想它会以父母想要的方式混淆它。
  • 我打算使用票务系统,所以每次他们点击我网站上的视频时,它都会生成一个一次性票务 ID,并将其传递给 flv 服务脚本。跨度>
  • 每个票号只能使用一次。一旦它被 flv 服务脚本接收并验证,它就会将其删除,因此不能再使用它。他们将如何使用这个系统盗版它?
  • 他们只是请求门票而不是你的玩家这样做,你真的无法阻止它。
  • 这将在文件被 PHP 完全读取后立即提供所有文件,因此这违背了视频流的目的。你应该用 fread 读取文件,比如说 8k 的块,输出块,然后调用 flush() 以确保 PHP 服务器将其输出缓存刷新到客户端,即视频播放器。
【解决方案2】:

简短的回答是,不,如果人们愿意,您永远无法阻止人们下载您的视频。有多种方法可以让他们更棘手,但没有万无一失的方法。您遇到了基本上是 DRM 的全部问题 - 您无法向他人展示您的内容,而不会将其提供给他们在某些时候未加密,如果他们可以查看它,他们就可以撕掉它。

【讨论】:

  • 我的想法是,下次他们尝试下载时,用于下载它的 url 将无法使用。即每个网址只能使用一次。在这种情况下他们将如何下载它?
  • 仅一次 - 在播放器中播放文件,同时捕获您发送的数据包,并将数据保存到磁盘。
  • 你能做的最好的事情就是阻止新手直接下载视频,但让黑客或拥有正确工具的人无论如何都可以下载视频。 Youtube 做到了,你也是。毕竟,如果视频显示在用户的屏幕上,他们已经以某种方式下载了它。
【解决方案3】:

由于您的 flv 播放器是一个 Flash 应用程序,因此始终可以下载和反编译它。反编译后,flv 的实际 url 将可见。因此,如果您使用直接 url 到 flv 电影或您在问题中描述的类似内容,它不会有任何区别

<img src="image.php?userId=1828&img=test.gif" />

【讨论】:

    【解决方案4】:

    请谷歌Pseudostreaming这个词你会得到答案 有一些像 lighttpd 这样的服务器具有对 flv 流的固有支持....

    希望你能得到答案…………

    【讨论】:

      【解决方案5】:

      带有 mod_flvx 模块的 Apache 也有类似 lighttpd 的效果。

      【讨论】:

        猜你喜欢
        • 2011-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多