• 32936阅读
  • 65回复

APlayer 中间层例子源码 [复制链接]

上一主题 下一主题
离线matrix
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2014-07-28
— 本帖被 aplayer 执行加亮操作(2014-07-28) —
一、该例子实现的功能:
        APlayer 目前网络播放只支持 P2S 的 HTTP/FTP/RTMP/RTSP/MMS 等,如果要利用 APlayer 支持播放 P2P 以及BT/电驴/磁力链等更多的协议的播放,需要利用一个中间层来实现下载功能,
        下载后的数据通过一个本地 HTTP 流媒体服务向 APlayer 提供;
        本例实现了从远程服务器下载媒体数据并且缓存,然后APlayer再向中间层获取数据播放,
        例子的目的只在于通过 HTTP 来讲解中间层的实现逻辑,介绍中间层的写法框架而已,要支持其他协议还需要开发者自行添加代码,扩展实现

二、接口说明:
       本例的唯一接口:GetUrl,接口参数为视频文件的Url,格式形如http://f1.flv.kankan.xunlei.com/data/cdn_transfer/demo.hflv
       该接口返回一个本地地址Url2,接下来调用APlayer的Open方法并且以Url2作为参数即可;

三、例子实现思路说明:
       1) 首先接收到Url后立即向服务器获取视频文件信息,主要是视频文件大小信息,接着将用于监听的ListenSokcet加入到工作队列以等待APlayer的连接;
       2) 当收到APlayer的连接后,新建一个ServerSocket用于与APlayer之间进行通信,APlayer通过HTTP协议发送GET请求,ServerSocket解析GET请求后,
            如果请求数据段在缓存文件中,那么则从缓存文件读取;
            如果请求数据段没有在缓存文件中,那么新建一个ClientSocket从服务器获取数据,ClientSocket获取数据后缓存到本地文件

四、缓存机制说明:
       本例的缓存机制对文件的写入是采用成块写入,即每次只能写入一个完整的BLOCK,或者是视频文件结尾部分,每次从服务器端读入的数据根据字节位置计算出相应的块写入文件,
       对读取的数据则可以是任意位置。另外本例中的缓存文件最大大小为65536*64K=4G.

五、其他说明:
        本例只是作为一个例子,各方面的实现都相对简单,比如缓存文件名称,位置,http协议的处理,缓存文件大小修改等需要根据自己的需求进行修改。


附件: 中间层例子源码.rar (761 K) 下载次数:1620
附件: 中间层无日志版.rar (65 K) 下载次数:539
离线w182291185

只看该作者 沙发  发表于: 2014-08-02
不知道可否提供一个易语言的例子了?
离线w182291185

只看该作者 板凳  发表于: 2014-08-02
很感谢提供这么好的例子,但是由于对C++语言的理解能力有限,不知可否提供一个易语言的例子参考?
离线373012089

只看该作者 地板  发表于: 2014-11-26
很好的东东 感谢ADMIN,希望论坛人气顶起来 不枉一番苦心
离线asd7946

只看该作者 4楼 发表于: 2014-11-27
不错哦
离线guduyouxi

只看该作者 5楼 发表于: 2014-12-11
可否提供一个易语言的例子了
ssdsdcsdfs
离线w1021172562

只看该作者 6楼 发表于: 2014-12-24
有没有易语言的例子啊
1+1=? 大神?
离线luyinhu

只看该作者 7楼 发表于: 2015-02-07
              
离线maiju

只看该作者 8楼 发表于: 2015-03-09
中间层不支持重定向后的地址
离线834125268

只看该作者 9楼 发表于: 2015-05-20
小手一抖,资源拿走
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个