您当前位于: 首页 » 咸吃萝卜, 我爱PHP, 系统架构设计 » 基于php托管的视频点播业务分级系统

基于php托管的视频点播业务分级系统07/20/2010

这实在不是一篇很新的技术文章,只是想起几年前参与的一个项目,当时通过php托管这项技术解决了购买昂贵的视频(VOD)点播系统的资金不足,并且还算自主研发,跟外界如此的吹牛说!这个。。。:-(,其实,写这篇文章我还是很有压力的,从谈到的技术来看,一定有人认为我是江郎才尽吃老本了,翻些陈辞滥调出来充数,可见我是顶着很大的舆论压力来写这篇文字的。不过,我还真的觉得这个php托管技术应用场景应该还是可以拓展的,姑且分享下这个“烂”技术吧。

当时的需求是这样的,只有我们的收费会员才可以看到我们精心制作的外语教程,这个教程是花费了很大成本的原创教程,因此很珍贵。我们打算按照观看时长来消费,而视频的格式居然是flv,当时我们找寻了很多的视频点播解决方案,要么就是昂贵的服务器、播放器+独有加密格式的全套解决方案,要么就是不靠谱的VIP在线电影播放系统。

经过很长时间的纠结和不断尝试以后,我们决定将视频教程切为5分钟一段,分段存储。然后使用php来托管组织这些零散的文件,播放器是网路上到处都是flv player,只是进行了一些优化和改进,好的,到了不得不解释下php托管是啥概念的时候了。哈!简单的说就是flv player不是直接播放我们提供的flv文件的地址,而是去请求一个php文件地址,这样我们就能在php中对访问进行分级限制和统计。为了防止用户从缓存中轻易的得到完整的教程文件,我们将其切为5分钟一段是很好的。代码大致是这样子的

<?php
//权限验证部分
//……
//逻辑处理,回写数据等操作
header("Content-Type: flv-application/octet-stream\n");
readfile('flv-file-path.flv');
?>

是的,你不会大呼上当了吧?嘿嘿!核心代码着实就是这样子的,分级不是大家惯性的认为的R级、PG级、G级这样子分的哈!而是指的不同等级的VIP会员,例如白金级、黄金级的,php托管实际上就是用php作一个proxy,以便控制用户不能直接得到原始地址,这个和下载权限控制是一个道理的。

本文不止是将Php托管技术,也不是单单的讲视频点播系统,而是讲一种综合解决方案,很低成本的基于php托管的视频点播业务分级系统。OK!这就是全部。

| 9条评论 标签:  

9条评论
  1. ayanamist说道:

    现在看来其实有很多很好的解决方案。不知道当年有没有red5这个东西?nginx也有防盗链的模块~

  2. 大雨说道:

    现在也就是流媒体不太好下载,这样的非流媒体还是比较容易下载下来的,用firebug或者maxthon就能找到真实地址。不过对于一般用户来说,估计就没人有那个精力去折腾了。不过话说回来:这样采用php的做法和磁盘文件直接读取速度能差多少,不知博主你进行过比较没有。我本人对这个问题觉得比较好奇。

    • hemon说道:

      几乎没区别,
      下载主要消耗的是带宽
      php消耗的是cpu

      比如100M的带宽,并发支持100个在线同时观看,
      php仅仅是readfile,几乎不消耗cpu,100个连接可能只消耗10%的cpu资源

  3. 大雨说道:

    另外请教下:类似Red5这样的流媒体有没有好办法下载?谢谢。

  4. Dull说道:

    readfile速度一流 基本可以认为等同于硬盘

  5. LZF说道:

    我现在做音乐站就是用ASX。

  6. sibad说道:

    请教下,如若这个文件比较大,20-30M,是否会有影响呢?
    除了您说的这个方案,还有其他的吗,有没可以对比一下的?
    感谢你了!

  7. sibad说道:

    博主:感觉这是先下载缓存然后再播放?希望我理解错了。。。。

发表评论