• 29366阅读
  • 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) 下载次数:1549
附件: 中间层无日志版.rar (65 K) 下载次数:534
离线kch666

只看该作者 65楼 发表于: 2022-07-16
学习学习
离线瞅你咋地

只看该作者 64楼 发表于: 2019-01-29
看看学习一下
离线zxkke

只看该作者 63楼 发表于: 2018-06-10
有没有易语言的例子啊
离线308407960

只看该作者 62楼 发表于: 2018-04-23
可否提供一个易语言的例子了?
离线lcz410323

只看该作者 61楼 发表于: 2017-10-15
学习了 相当于搭了一座桥
离线peterppl

只看该作者 60楼 发表于: 2017-10-15
小手一抖,资源拿走!!!
离线xiaoyu4649

只看该作者 59楼 发表于: 2017-10-02
下载学习看看
离线轩辕狂饮

只看该作者 58楼 发表于: 2017-07-28
有没有易语言的例子啊
离线aplayer

只看该作者 57楼 发表于: 2017-07-21
回 pengke 的帖子
pengke:http 协议不是播放器已经支持了吗?[表情]  (2017-07-06 15:39) 

只是为了为了说明中间层的写法,况且即使是同一个http协议,中间层还可以做数据解密之类的。
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个