首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >搜狐视频P2P技术揭秘 – 分享率控制篇

搜狐视频P2P技术揭秘 – 分享率控制篇

作者头像
全栈程序员站长
发布于 2022-09-06 02:26:27
发布于 2022-09-06 02:26:27
80600
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

搜狐视频P2P技术揭秘 – 分享率控制篇

《搜狐视频P2P技术揭秘 – 架构篇》中指出播放器P2P客户端的一个重要任务就是寻找一个兼顾流畅率和分享率的平衡点,本文将介绍搜狐视频P2P客户端使用的方法。

1 业务决定控制逻辑

一个完整的播放器APP至少有以下两个基本功能:

  • 播放;
  • 下载。

实际上这两个业务功能定义还不够细,播放可以分为在线播放和离线播放,下载根据播放器逻辑又可以分为普通下载和预加载。

  • 播放:
    • 在线播放:直接播放来自网络的媒体文件;
    • 离线播放:播放已经下载到本地的媒体文件;
  • 下载
    • 普通下载:用户直接发起的下载请求;
    • 预加载:预先加载当前播放分段的后续若干分段。

对不同的业务来说,流畅率和分享率的优先级有所不同。

业务

分享率

流畅率

下载速度

在线播放

普通下载

预加载

流畅率又体现为上报给播放器的有序数据的速度稳定性,流畅率和分享率的冲突,往往就是使用P2P和CDN两个通道的冲突。主要体现在:

  • P2P的Peer质量参差不齐,使用UDP协议,有比较高的几率出现丢包、抖动、乱序,导致上报播放器的有序数据的速度不稳定,也就是流畅率不足;
  • P2P的Peer数量可能不足,导致下载速度不够,需要CDN的弥补,两个通道的切换、同时使用的逻辑需要比较好的控制,否则可能导致流畅率不足。

在在线播放业务中,首开时间、流畅度直接影响用户体验,因此分享率的重要性降低,但是并不会太低,当缓冲的数据足够后,应尽可能使用P2P。至于缓冲的数据来自CDN还是P2P,根据不同的前提有不同的策略,假设CDN的部署足够好,那么CDN下载是最优选择,首开的前几秒数据应该优先从CDN下载。但是也有例外,CDN的带宽往往是比较昂贵的,一些小运营商可能会提供免费的CDN,但质量就无法保证,这个时候就需要权衡。移动P2P的一个可选策略是同时从CDN和P2P两个通道下载前几秒的数据,一旦数据缓冲完成,则根据CDN和P2P的当前质量对比,切换到合适的通道。

在普通下载业务中,下载速度和分享率优先级比较高,数据的有序性并不重要。但是既然是下载速度优先,那么最终主要使用P2P还是使用CDN决定于Peer的数量和质量,如果Peer不足,质量不佳,那么速度不足的时候仍然要切换到CDN。

预加载业务对用户来说是不可见的,可以在播放到当前分段末尾若干时间的时候开始,这个时候应该以P2P为主,速度和流畅率优先级降低。

2 搜狐影音/搜狐视频

搜狐影音(Windows)和搜狐视频(移动端)都实现了基于P2P的在线播放和离线下载业务,但是搜狐影音P2P的分享率比搜狐视频高,主要原因是:

  • 搜狐影音在PC端,机器性能、网络环境整体更好;
  • 搜狐影音开启了P2P的预加载,预加载的分段基本都使用P2P下载;
  • 搜狐影音开启了P2P的本地缓存,已经播放过的视频被缓存到本地,再次播放时将直接加载本地缓存,而本次播放的数据被统计到P2P通道中。

除了以上差异,两者的P2P实现没有本质的区别,尤其是在分享率控制的算法实现。

算法思想:用有限状态机来描述一次业务调用中P2P、CDN状态的切换。一个状态的输入是当前P2P、CDN的各种参数,包括P2P下载速度、CDN下载速度、P2P Peer数、当前上报连续数据的速度、已经上报的数据量、文件的码率等,通过一定的逻辑来计算下一个状态是P2P还是CDN。在任务开始时,针对不同的业务创建不同的状态机,例如,为在线播放业务创建紧急状态机,为下载业务创建下载状态机,为预加载业务创建预加载状态机,根据状态机的当前状态来判断下载任务应该分发给P2P Peer还是CDN。

2.1 状态定义

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
typedef enum state {
0:初始状态;
1P2P状态;
2CDN状态;
3P2P+CDN组合状态;
} state;

2.2 输入事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
typedef struct event {
0:当前P2P速度;
1:当前CDN速度;
2:连续上报播放器的速度;
3:已经上报播放器的数据量;
4:已经上报播放器的数据比例;
5:已经上报播放器的时间;
6:视频文件的码率;
7:活跃种子数; 
8:播放器已经缓存的视频时长;
9:播放准备时间(广告时间)10:本状态已经维持的时间;
……
} event;

2.3 状态转换

由于有4个状态,因此有以下几个状态转换动作:

  • on_state_init(in event),在初始状态下执行;
  • on_state_p2p(in event),在P2P状态下执行;
  • on_state_cdn(in event),在CDN状态下执行;
  • on_state_p2p_cdn(in event),在P2P+CDN混合状态下执行;

在这些状态转换动作中,根据状态机类型、输入事件参数、当前状态来决定下一个状态:

  • 从初始状态可能进入P2P状态、CDN状态或P2P+CDN 状态;
  • 从P2P状态可能进入CDN或P2P+CDN状态;
  • 从CDN状态可能进入P2P状态或P2P+CDN状态;
  • 从P2P+CDN状态可能进入P2P状态或者CDN状态。

2.4 转换逻辑

不同状态机的区别主要体现在初始状态以及状态转换逻辑。

举个例子,在线播放业务的紧急状态机下,初始状态可能是CDN,如果上报的数据量已经超过了播放器的缓冲若干秒,并且P2P打通的活跃Peer数超过一定的阈值,那么会切换到P2P+CDN混合状态,在混合状态下,如果P2P的速度超过一定的阈值,就会切到纯P2P状态,否则如果P2P的速度不足,Peer质量也不佳,那么会切换到纯CDN状态……

这些用到的所有阈值都是从Navigation服务获取的,从数据层面得到了一定的灵活性。后来,我们发现转换逻辑也可能需要动态调整,因此把状态机的实现放到lua脚本中,脚本部署在服务端,这样转换逻辑的实现就更灵活。

状态机脚本的更新依赖于统计数据,P2P的每次请求都会上报一次请求中的各种数据,主要包括状态切换的输入、输出,后台分析脚本将分析状态切换的详细数据并进行统计,根据统计的数据,可以分析出目前的状态转换逻辑的问题,形成一个反馈闭环。

3 Flash 播放器/H5 播放器

页面的播放器主要负责在线播放业务,并没有下载业务,因此P2P、CDN的切换逻辑比较简单。

首开的几秒数据从CDN下载,然后设置一个缓冲,播放过程中,当缓冲中的数据不足时主要由CDN来快速填充,缓冲时间外的数据则主要由P2P来下载。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/150735.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
搜狐视频P2P技术揭秘 – 架构篇[通俗易懂]
搜狐视频P2P客户端并非单纯的只走P2P的客户端,由于需要向播放器提供数据,并且P2P通道质量的不确定性,需要使用CDN来弥补数据,因此产生了节约比这个指标。节约比,又叫分享率,从微观上来讲就是在一次播放中,通过P2P下载的媒体数据占据总数据量(P2P+CDN)的比例,宏观上指在一段时间内P2P系统提供的带宽占据视频网站总可用带宽(P2P+CDN)的比例。对播放器来说,比较重要的指标是流畅率,流畅率往往和节约比是相互制约的关系,播放器P2P客户端的一个重要任务就是寻找一个兼顾流畅率和节约比的平衡点。
全栈程序员站长
2022/09/06
1.3K0
搜狐视频P2P技术揭秘 – 架构篇[通俗易懂]
搜狐视频P2P技术揭秘 – 流程篇
无论哪种Peer,使用的P2P协议都是UDP,因为对NAT打洞来说,UDP的打洞成功率比TCP高。据闻有不信邪的尝试过TCP,最后还是回归UDP。也有说使用UPnP的,这个主要依赖于路由设备,可控性不够。
全栈程序员站长
2022/09/06
8100
搜狐视频P2P技术揭秘 – 流程篇
陌陌移动端直播P2P技术
直播业务的主要成本就表现在于带宽上,尤其是在用户要求日益提高的未来,带宽带来的成本问题会越来越大。本文来自陌陌流媒体高级研发工程师白松灵在LiveVideoStack线上分享的演讲,详细剖析如何仅仅借
LiveVideoStack
2020/04/21
2K0
陌陌移动端直播P2P技术
企鹅电竞直播关键技术大揭秘
16年壮观的直播百团大战相信大家历历在目,至19年初所剩无几的直播寡头,来去如风的直播战场,离不开背后强大的直播技术支撑,本文通过直播基础技术介绍、剖析企鹅电竞直播构架、关键技术、常见问题排查、带领大家了解直播技术细节。 直播基础技术扫盲 分辨率 分辨率是度量位图图像内数据量多少的一个参数。通常表示成每英寸像素(Pixel per inch, ppi)和每英寸点(Dot per inch, dpi),包含的数据越多,图形文件的长度就越大,也能表现更丰富的细节。但更大的文件需要耗用更多的计算机资源,更多的内
腾讯移动品质中心TMQ
2019/05/31
5.5K0
企鹅电竞直播关键技术大揭秘
腾讯视频P2P带宽节省率持续提升之路
P2P实际上是利用用户之间互相分享视频的数据,来减少从CDN下载数据的量,从而达到带宽节省的效果。
LiveVideoStack
2020/03/27
3K0
腾讯视频P2P带宽节省率持续提升之路
IOS下P2P播放器开发如何实现?
目前可以利用p2p技术,实现支持磁力链接、普通链接甚至是种子链接播放的软件,基本上还是集中在PC端。比如市场占有比较多的西瓜影音、吉吉影音、先锋影音,还有迅雷等。但是在手机端除了迅雷似乎没太有比较出名的P2P播放器。那么P2P技术在移动端的应用,从技术上来说是否可实现?包括安卓和iOS系统
点量小芹DolitQin520
2019/01/31
3K1
十亿级视频播放技术优化揭密
QQ空间开发团队
2017/11/03
4.2K0
十亿级视频播放技术优化揭密
播放量突破 10 亿,Qzone 视频下载如何做到多快好省?
QQ空间开发团队
2017/08/10
1.9K0
播放量突破 10 亿,Qzone 视频下载如何做到多快好省?
视频直播基础知识
视频云,是以Paas服务模式,向开发者提供音视频编解码SDK和开放API,助力移动APP接入音视频功能,用户不需要后台开发和运维人员,就可以开发自己的视频网站或者移动APP应用。视频云主要使用的是流媒体技术,下面就来给大家介绍一下视频云相关的技术。
视频云直播helper
2019/02/22
8.8K0
视频直播基础知识
移动端视频缓存保障与CDN调度优化
我是来自网易云信的张根宁,今天我将会站在用户的角度来跟大家探讨播放器的相关优化,也会详细阐述网易云信团队在播放器方面都做了哪些努力。
LiveVideoStack
2019/08/16
3.1K0
干货分享之如何设计实现跨平台超低延迟RTSP播放器
在安防、教育、单兵指挥、工业 IoT 等场景中,IP 摄像机与网关设备长期采用 RTSP作为事实标准:它与硬件生态结合紧、延迟低、互通性好、对专网/局域网友好。相比 HLS/HTTP-FLV 的“强分发、弱实时”,以及 WebRTC 的“强实时、强端到端但运维复杂”,RTSP 播放器在 低延迟 + 可控网络环境 下,依然是成本与体验的最佳平衡点。
音视频牛哥
2025/09/11
1810
最佳实践 | 腾讯云X-P2P团队 Web HLS P2P实践
每当大型活动和赛事来临, 对于视频平台来说, 高涨的不仅仅是人气, 还有大流量视频分发上的挑战,虽然有CDN平台,但流量突发,很可能会遇到意想不到的问题。这是因为突发流量,骨干网就会有瓶颈,若是预估不准、CDN资源准备不足,还会伴有更严重的视频分发质量问题。 P2P则是解决这个问题的良方,自古至今还没有那个系统可以宣称能很好地抗突发,除了P2P是一个例外,它宣称:看的人越多,效果越好。 众所周知,欲想P2P,必须得经过三步: 按照固定格式分割数据切片,这将是点对点对等网络相互分享的最小数据单元; 连接
腾讯云音视频
2021/09/22
3.3K0
视频加密技术大全,拿走,不谢!
点量FLV视频加密系统还同时可以提供Android​‌‌、IOS下的加密视频播放方案(可提供播放器引擎,能在授权后播放点量FLV系统加密过的视频),是目前行业内为数不多的,可以支持移动端进行加密视频播放的解决方案。视频一次加密后,可以在网站端、移动端均能播放(移动端需要使用我们的播放器引擎开发一个APP软件,我们也可以提供定制开发功能)。
点量小崔
2018/08/02
4.1K0
CDN+P2P在大规模直播&实时直播的技术实践
大家好,我是爱奇艺的周志伟,今天会跟大家分享爱奇艺的HCDN直播,可能大家对爱奇艺比较了解,但是HCDN可能不是太清楚。HCDN在我们内部是一个部门的名称,也是一种技术方式,它是通过庞大的CDN网络和P2P网络为公司所有的产品提供视频服务,主要包括点播和直播两大部分,今天主要跟大家分享直播这一部分。我的分享大概由四大部分组成,首先是直播背景,接着会介绍大规模直播,也就是我们现在主要的直播方式,以及实时直播,最后做一些展望。
LiveVideoStack
2021/09/02
3.4K0
CDN+P2P在大规模直播&实时直播的技术实践
播放器秒开优化丨音视频工业实战
视频播放时的画面打开速度是播放体验中一个非常重要的指标,如果视频画面打开速度太慢,用户失去耐心可能就直接划走不看了。如果视频速度打开够快,甚至可以带来业务上的收益,字节跳动就曾给出过一份数据:对一部分型号的 Android 手机,播放首帧时长从平均 170ms 优化到 100ms,带来了 0.6% 左右的用户播放时长提升。
关键帧
2023/02/14
3.9K0
播放器秒开优化丨音视频工业实战
基于端智能的播放QoE优化
 点击上方“LiveVideoStack”关注我们 ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息   //   编者按:伴随着B站业务形式的不断扩展,不同场景对视频播放体验的稳定性、流畅性提出了更高的要求,为保障提供给用户更好的播放体验B站做出了哪些努力?LiveVideoStackCon2022上海站大会我们邀请到了哔哩哔哩 , 资深开发工程师陆元亘老师为我们详细介绍B站在点播QoE优化上的经验与成果。 文/陆元亘 整理/LiveVideoStack 非常荣幸能够参加LiveVideoS
LiveVideoStack
2023/04/04
7460
基于端智能的播放QoE优化
从蓝光到4K,腾讯视频高码率下载背后的技术
本文讲述架构平台部 TVideo平台从资源,链路、缓存、接入进行调优,有效解决4k高码率视频的二次缓冲问题。
腾讯技术工程官方号
2018/01/17
7.2K0
从蓝光到4K,腾讯视频高码率下载背后的技术
(超)低延迟视频流传输的未来
 点击上方“LiveVideoStack”关注我们 作者:Anthony Dantard 翻译:Alex 技术审校:袁荣喜 ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息 ---- 低延迟协议 影音探索 #013# 用户对服务的期望在不断攀升,并逐渐出现了不满情绪。由于有了YouTube和Netflix这样的视频服务,我们都希望在观看点播视频时获得超快的下载时间和流畅的播放体验。可能不太明显的是,无论我们是否意识到,这种期望都正在慢慢地向实时音频通信和直播应用转移。 在api.vid
LiveVideoStack
2022/06/20
1.5K0
(超)低延迟视频流传输的未来
区块链:P2P技术是什么
摘要:包括比特币、以太坊等在内的去中心化的区块链平台,其底层网络都是采用的P2P技术实现,每个节点都是对等的。而本文,则先通过介绍P2P技术的特点和发展历史,让大家对P2P这个技术的来龙去脉有一个初步的认识和了解。然后在下一篇文章中,我会详细介绍第三代P2P技术(DHT)—Kademlia算法的实现原理。
全栈程序员站长
2022/09/06
4K0
区块链:P2P技术是什么
播放器卡顿优化丨音视频工业实战
播放卡顿是播放体验中另一个非常重要的指标,字节跳动曾经提供过一份数据:降低 7.7% 的卡顿率和 9.8% 的卡顿时长,带来了 0.22% 的用户观看时长提升。
关键帧
2023/02/14
2.7K0
播放器卡顿优化丨音视频工业实战
相关推荐
搜狐视频P2P技术揭秘 – 架构篇[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验