P2P BT 高手请进 视频加速 原理 算法讨论

hufei036 2007-12-27 01:48:55
要求:任何安装视频加速软件的用户,点击任何视频(不做任何特殊设置)能够起到视频加速的作用
目前 有几个视频加速软件,有飞速土豆 VideoSpeedy 软件
我谈谈我的思路,当在网页上点击视频时,通讯方式是HTTP,下载速度太慢,对于IE浏览器,我们用BHO跟
VideoSpeedy 通讯,叫VideoSpeedy(p2p)以p2p方式获得下载内容,然后回传到IE,达到网络加速的目标。

问题:
1.IE如何 VideoSpeedy传输数据,如果是遨游和火狐浏览器了
2.VideoSpeedy p2p通讯,目前一般都是无序下载,怎么样做到有序(顺序)下载,因为视频的阅读需要顺序下载


请各位达人给出好的见解
...全文
1190 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
开门芝麻网 2009-02-23
  • 打赏
  • 举报
回复
关注 视频加速问题 和 企业视频网站架设 QQ532094194
hufei036 2008-01-24
  • 打赏
  • 举报
回复


功能要求:
为提供视频的网站提供商节省带宽,提供视频加速。
初稿:只考虑最简单 能够达到加速效果。

基本原理:
从下面图示很容易看出 视频服务器 的流量和带宽,VS服务器
传统模式:流量带宽=PC1=PC2+PC3+PC4的综合,观看的人一多,受带宽限制,无法观看。
加速模式:带宽= PC1+PC2,观看的人越多加速效果越好。

传统模式:


加速模式:


开发功能划分:
1. P2PTrack:主要功能是 负责客户端的连接,根据客户端的请求返回相应的信息,下文中简称(PT)
2. P2PClient:主要功能:负责各个客户端之间传输数据。需要实现按顺序下载,查找最近的离当前资源最近的。客户端简称 PC1,PC2,PC3,PC4.
3. P2PProxy:客户端代理:主要功能,设置IE代理,对于某些视频网站利用代理访问。获取HTTP下载的数据。
基本流程描述:
假设一个视频分为 N个 Piece,依次为Piece1,Piece2,每个Piece有分为M个Slience
1. PC1,PC2连接到视频服务器 (VS),建立HTTP连接,从VS下载资源,同事连接到PT,请求获取 PerrList。
2. PT向PC1,PC2发回可用的下载地址列表 PeerList;
3. PC3,PC4连接到VS,连接到PT,请求下载列表 PeerList.
4. PC3分析 PerrList,找到 PC1,PC2信息,主动通过 PT连接。
5. PC3进行分析,可能初步确定从 VS下载 Piece1,从PC1下载Piece2,从Piece2。
6. PC1下载完毕后,同PC1,PC2之间互相确认新的下载Piece。
7. 假设PC2在下载过程中突然退出,导致PC3,和PC2之间的连接中断,则PC3需要重新寻找新的下载源。

P2P 对等传输协议设计:
假设每256K为一个Piece
以PC1和PC2建立连接传输为例。
1. PC1登录连接PT,报告自己的 perr_t给PT,并从PT获取Peers列表。
2. PC1从PT获取PeerList列表。
3. PC1向PT发送请求连接PC2。(标准P2P传输,省略连接协议)
4. PC1和PC2建立了TCP 连接。
5. PC1查看RemoteInterested,断掉PC2的连接。
6. PC1 本地LocalChoked,断掉同PC2的连接。
7. 发送 想要的片段,例如 Piece3.如果无Piece3则断掉连接。
8. 开始传输Piece3的数据。(传输数据时,考虑缓存中保存,并存到文件供其他客户端下载)
9. Piece3传输完毕,继续问 对方有没有Piece4,如果有继续传输,没有则断掉。
10. 如果传输过程中,PC2突然断掉,PC1没有获取响应。
11. PC1重新从获取的Peers中寻找自己所需要的Piece。
如果查找不到,或者到了一定的时间,PC1主动向 PT报告自己的情况 传输 peer_t
12. PT接受到 PC1的 perr_t自动更新 peers列表。

Peers列表原则是,获取 strInfoHash相同的列表,不要获取一些无关的Peers列表,而且Peers列表是有数量限制的。
fengge8ylf 2008-01-11
  • 打赏
  • 举报
回复
hufei036 等着你发呢
hufei036 2008-01-08
  • 打赏
  • 举报
回复
怎么这么多天多没有人回复啊,有感兴趣的大家一起讨论讨论!
过两天我准备把自己想好的 协议发布上来,跟大家一起讨论,请大家支持一下
Torch009 2008-01-03
  • 打赏
  • 举报
回复
关注
fengge8ylf 2008-01-02
  • 打赏
  • 举报
回复
关注
hufei036 2008-01-01
  • 打赏
  • 举报
回复
看样子从事这方面的开发的人非常少啊!
最近看了一下 peercast 源码分析
peercast的缺点是,不能从多点获取数据
而且没有考虑到视频的 压缩传输
不知道还有没有其他比较完善的 p2p视频传输源码
hufei036 2007-12-28
  • 打赏
  • 举报
回复
PPlive,ppstream 这两个软件我都使用过!
PPlive,ppstream 实现原理 大概应该是

假设有p1,p2,p3,p4 两个客户端,SV视频服务器,PT,p2p服务器。
p1,p2,p3,p4启动后连接 PT服务器,告诉我们上线了。
p1连接SV服务器,观看某个视频,告诉PT服务器,
p2连接SV服务器,观看某个视频,告诉PT服务器,
PT服务器开始帮助p1,p2之间建立链接,互相发送数据
这样达到加速效果

不知道大家有没有用过 VideoSpeedy这个软件,我就是想知道他们的实现原理是什么样子的?
我估计通讯原理差不多,但是他的浏览器怎么跟 p2p软件通讯了
xy_dream 2007-12-28
  • 打赏
  • 举报
回复
PPlive,ppstream是多个点对点的,客户端可以从客户端获取数据,所以人越多,种子越多,速度也就越快
xy_dream 2007-12-28
  • 打赏
  • 举报
回复
视频丢点包没关系的,不影响什么画面的,乱几个序也不用去管的,我现在做的IM就没有处理乱序,丢包问题,很清晰的,因为视频数据量很大,丢几帧人眼区分不出来的,再说现在的网络已经很好了,丢包,和乱序率很小的,可以忽略
captain_x 2007-12-27
  • 打赏
  • 举报
回复
很想知道pplive、ppstream是怎么实现的
captain_x 2007-12-27
  • 打赏
  • 举报
回复
mark

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧