什么是“安全伪流”mp4视频(flash,html5,pc,iOS ......)的最佳方式?

时间:2012-11-12 22:31:29

标签: ios html5 streaming mp4 jwplayer

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

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

到目前为止,我正在做以下事情:

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

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

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

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

所以我对所有建议持开放态度!

提前致谢

2 个答案:

答案 0 :(得分:0)

我使用亚马逊的S3对FLV文件进行了整理:

http://evolt.org/s3secure

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

答案 1 :(得分:0)

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

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

我有1个提示: 我正在使用, IF $ start为0 ,令牌仅适用于 3秒(因此无法进行新请求),但 IF $ start是> 0 ,然后它可以工作10分钟,或者更多。

这样,人们就可以寻求视频的其他部分,但不能提出完整的请求。您还可以将此$起始限制设置为大于X字节,而不是> 0,以确保智能人员不会跳过您的验证。

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

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