我正在寻找一种方法让我的客户(登录)在我的网站上观看 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 文件。它似乎也不是针对此类需求的应用程序。
所以我愿意接受每一个建议!
提前致谢