2

我正在寻找一种方法让我的客户(登录)在我的网站上观看 mp4 视频。

  • 我不希望他们能够下载视频,或者至少让它变得非常困难。
  • 服务器是 linux / 应用程序是 PHP
  • 我希望我的客户能够在计算机网络浏览器或 iOS/Safari 设备上观看视频(这意味着没有闪存)。
  • 我需要它是免费的或非常便宜的(例如,不要在云基础提供商上以每月数千美元的价格托管视频)。

到目前为止,我正在执行以下操作:

  • flv 文件的 php 伪流(称为 xmoov)。使用 php,我能够在返回流的内容(会话变量、令牌……)之前执行安全验证,但它不适用于 iOS,因为 flv 视频需要播放 flash。它也不是很安全,因为像 Video Download Helper 这样的简单 Firefox 扩展程序可以下载它们。
  • 所以我在 mp4 中编码了我的视频,这在 html5/iOS 上运行良好,但使得该过程的“安全”方面变得更加困难:制作 php 伪流似乎非常困难。我还没有找到任何可行的解决方案,似乎每个人都远离它,因为它需要太多的资源(在整个文件内容的流式传输期间,每个视频都有 1 个 php 进程)。

所以我找到的最好的解决方案是 2 个经典的 Apache 插件:“H264 Streaming Module”和“Mod Auth Token”。好的,这更好,但它似乎是一个死胡同,因为要有效,身份验证令牌的超时需要非常短(少于 5 秒,很难在 html 源代码中找到混淆的 url 并将其复制/粘贴到下载应用程序或启动脚本或...),但这意味着客户必须在此时间范围内启动视频(在 iOS 上无法自动启动视频)。这也意味着客户无法在视频的“尚未下载”部分中搜索,因为播放器(我使用 JWplayer)对 url 进行了新的 http 调用,这显然不再起作用,因为暂停。

我在考虑一个视频 Flash 播放器,它可以自己生成混淆的 url(而不是 php 在 html 源中输出它),但它不能在 iOS 上工作,因为它是基于 Flash 的。如果我在计算机上使用它并在 iOS 上使用 html5/auth_token(基于用户代理),则很容易欺骗用户代理并下载视频。

另一种解决方案似乎使用“真正的”视频流服务器,例如 Red5,但我发现的几乎所有教程都是关于直播、电视、网络摄像头,而不是放在硬盘上的简单 mp4 文件。它似乎也不是针对此类需求的应用程序。

所以我愿意接受每一个建议!

提前致谢

4

2 回答 2

0

我发现自己处于同样的境地。

我正在使用 flowplayer,并且我使用类似于 xmoov 的服务器端 (PHP) 脚本将 FLV 转换为伪流,并带有您提到的所有验证。

我有 1 个提示: 我正在使用,如果 $start 是 0,令牌只能工作3 秒(所以不能发出新请求),但如果 $start 是 > 0,那么它工作 10 分钟,或更多。

这样,人们将能够搜索到视频的其他部分,但不能提出完整的请求。您还可以使此 $start 限制大于 X 字节,而不是 >0,以确保聪明人不会跳过您的验证。

现在,关于使用相同脚本的 MP4 伪流,我仍然有麻烦。由于 $start 值以秒的形式发送(即:?start=32.125),而不是字节位置,我似乎无法制作视频伪流。

如果您找到了解决方案(不超过 mod_h264_streaming),我会很高兴听到它。

于 2013-04-15T03:28:08.777 回答
0

我使用 Amazon 的 S3 对 FLV 文件进行了整理:

http://evolt.org/s3secure

我正在为 MP4 做这件事,但我的专长是网络的东西,而不是视频的东西。

于 2012-12-15T21:41:26.303 回答