Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信C2C渐进式图片流式传输系统简介

微信C2C渐进式图片流式传输系统简介

作者头像
腾讯技术工程官方号
发布于 2018-01-30 06:39:19
发布于 2018-01-30 06:39:19
1.7K0
举报

在微信C2C图片服务中,用户体验一直是第一位的,由架构平台部研发的微信C2C后台系统,也一直在用户体验上深入研究,经过多次技术数据的验证,采用渐进式格式,和产品体验的巧妙结合,可以大大的降低用户的体验时延,接下来会详细介绍我们的应用过程。

一、渐进式图片

JPG图片支持两种编码方式:基线式(baseline)和渐进式(progressive)。业界应用最广泛的是基线式,因为它编解码计算开销小,实现比较容易。渐进式在编码的时候,要多次扫描图片,计算开销大约是基线式的3-5倍(但比起Google的WebP编码8-10倍开销还是小很多)。两者编码出来的文件大小基本相同,渐进式往往会更小一些。基线式的编码方式是图片从上到下,从左到右地进行处理和编码,如图1。渐进式编码方式是先全局后局部,先轮廓再细节的编码方法,如图2。

图1 基线式图片展示过程
图1 基线式图片展示过程
图2 渐进式图片展示过程
图2 渐进式图片展示过程

渐进式图片编码特性,可以被用来有选择性地控制传输的数据量,提高传输的成功率。在条件较差情况下,宁可丢弃了图片的部分不重要细节,换取传图功能的可用性。图3是收取到原图片一定比例数据的图片效果(局部对比)。

图2 渐进式图片展示过程
图2 渐进式图片展示过程

从图中可知,接收到图片的数据越多,图片展示越清晰。在20%的时候,还看不清楚图片中的文字,到了60%的时候,文字已清晰可见,再到80%以及100%,图片细节更清楚,但如果没有多张图片仔细比较,已看不出图片差异。

除了JPG支持渐进式编码格式,其他比如webP、HEVC在设计上也都支持渐进式的。要使用其他格式,只需要替换一下图片的编解码库即可,下文涉及的业务交互流程是不变的。

二、流式传输

这是类似流水线的传输过程,边传输边处理,在视频播放中普遍使用。通俗地说,就是数据像流水一样在网络中传输,通信双方在数据传输进行的过程中就即时处理,而不是等全部数据接收完毕再处理。

有别于流式传输的是普通“文件传输”,将整个图片文件当成一个整体,接收方在收到完整的数据后,再进行处理。或者将图片分成几个有限的小分片,每个分片是一个整体,单独进行传输,最后把分片拼接起来组成原图片。图片分片,往往配合并发传输,建立多个通道,同时传输多个分片,这在传统高速可靠的有线网络中效果很好,但在带宽有限、信号不稳定的无线网络中,效果往往不比单通道好。

三、图片最小传输长度

在实际应用中,传输一个完全看不清楚的图片是没有意义的,因此对渐进式图片传输的数据有一个最低要求,保证收到的图片基本可用。我们称这个长度为图片最小传输长度(MinimalTransport Size),MTS与原图片总大小(TS,Total Size)的比值,称为传输因子Q。公式如下:

Q=MTS/TS

或者写成:

MTS = TS×Q

传输因子Q可根据多种因素来调节,包括终端所在网络类型、信号强度、传输目标图片的尺寸和质量等。

在这个传输系统中,发送方只要发送图片的最小传输长度,即可向用户展示发送成功,然后转到后台尽量把完整数据发送完毕。在条件不允许(网络中断、没电、用户切换APP等)情况下,可以不用发送更多数据。

四、系统结构

为了便于讲述系统工作原理,架构和流程作了一定简化。

图片传输过程的步骤如下:

1) 发送方图片预处理,将其他图片格式转换成渐进式JPEG格式。

2) 发送方组织发送的数据流,将发送方UIN、接收方UIN,图片总长度,MTS长度等元信息组织在数据流的最前面,渐进式图片数据组织在数据流的后面。

3) 发送方发送数据,中转服务器接收数据,并且不断向发送方确认已接收到的数据长度,同时解析数据流前半部分的元信息,得到收发双方的UIN,图片总长度,以及MTS长度。

4) 当中转服务器收到MTS长度时,认为图片接收成功,将已收到的数据落地,并立刻向发送方返回图片唯一标识fileid。发送方收到fileid之后,认为图片发送成功,立刻向用户展示发送成功,然后转到后台继续发送图片剩余数据。发送方用户会体验到发图时间缩小了,发图过程变快了。

5) 如果发送方此时网络正常,图片数据将被全部发送完毕。如果发送方此时网络不稳定导致无法发送更多数据,发送过程结束,并不用记录任何状态,后续也不再重发这张图片。

6) 中转服务器在返回fileid的同时,立刻通过信令通道通知接收方收到一张新图片。

7) 接收方在收到新图片通知后,如果用户立刻查看新图片,将看到MTS长度对应的图片;如果用户没有立刻查看,而是过一段时间后查看图片,服务器可能已收到更多甚至完整的图片数据,用户将看到比MTS更清晰的图片。

8) 接收方在展示图片时,无需等到接收到完整图片才展示给用户,收到多少就展示多少,用户无需等待,直接看到一个从模糊到清晰变化的图片,大大缩小收图等待时间。

五、其他说明

1、 实际系统中,MTS能够根据网络传输情况动态调整,智能选择一个图片质量和传输耗时都合理的值。

2、 对未完整传输的图片,下载服务器会自动填充必要的信息,使其成为一个完成的图片,使得不支持渐进式图片格式的终端或者浏览器可以展示这张图片。

在图片用渐进式编码格式的基础上,配合流式传输的控制方式,再加上动态可调整的文件最小传输长度,是该图片传输系统的“两把刷子”,缺少任何一个因素,效果都大大减弱。

本文转载至 腾讯架构师 微信公众号

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯技术工程官方号 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iOS 图片渐进式下载
为了省去制作图片的麻烦,我就直接拿YYWebImage里面的图片了,我个人也是建议使用这个图片框架来做渐进式下载。 先看下YYKit中做的效果图。 渐进式图片 图片加载很美观,用户体验性非常棒。
Raindew
2018/06/14
1.5K0
实战:使用 React 实现渐进式加载图片
图片对网站有很大的影响。它们的存在改善了用户体验,提高了用户粘性。然而,加载高质量的图片需要时间,而且会让这种体验更令人沮丧,尤其是在网速较慢的情况下。
前端修罗场
2022/07/29
3.9K0
实战:使用 React 实现渐进式加载图片
原创分布式即时通讯(IM)系统理论架构方案
无论是IM消息通信系统还是客户消息系统,其本质都是一套消息发送与投递系统,或者说是一套网络通信系统,其本质两个词:存储与转发。
烂猪皮
2020/09/01
1.7K0
原创分布式即时通讯(IM)系统理论架构方案
web渐进式应用PWA
渐进式 Web 应用首先是一种应用,它根据设备的支持情况来提供更多功能,提供离线能力,推送通知,甚至原生应用的外观和速度,以及对资源进行本地缓存。
chuchur
2022/10/25
1.3K0
web渐进式应用PWA
Web 现代应用程序架构下的性能优化,渐进式的极致艺术。
本文是 Rendering on the Web: Performance Implications of Application Architecture (Google I/O ’19) 这篇谷歌工程师带来的现代应用架构体系下的优化相关演讲的总结,演讲介绍了以下优化手段:
ssh_晨曦时梦见兮
2022/03/09
9520
Web 现代应用程序架构下的性能优化,渐进式的极致艺术。
JPEG/Exif/TIFF格式解读(1):JEPG图片压缩与存储原理分析
JPEG的全称是JointPhotographicExpertsGroup(联合图像专家小组),它是一种常用的图像存储格式, jpg/jpeg是24位的图像文件格式,也是一种高效率的压缩格式,文件格式是JPEG(联合图像专家组)标准的产物,该图像压缩标准是国际电信联盟(International Telecommunication Union,ITU)、国际标准化组织(International Organization for Standardization,ISO)和国际电工委员会(International Electrotechnical Commission,IEC)共同制定。JPEG标准正式地称为ISO/IEC IS(国际标准)10918-1:连续色调静态图像数字压缩和编码(Digital Compression and Coding of Continuous-tone Still Images)和ITU-T建议T.81。
周陆军
2020/07/24
3.7K0
系统性能调优必知必会(1)note
HTTP/2 协议虽然大幅提升了 HTTP/1.1 的性能,然而,基于 TCP 实现的 HTTP/2 遗留下 3 个问题:
早起的鸟儿有虫吃
2023/03/21
5220
系统性能调优必知必会(1)note
传输层协议TCP与UDP
主机是用IP地址来标识的,而要标识主机中的进程,就需要使用端口号。TCP/IP协议族中,端口号占16 bit,用0~65535之间的整数标识。TCP和UDP是两个独立的软件模块,因此各自的端口号也相互独立。·端口号只具有本地意义,不同计算机的相同端口号是没有联系的。
十二惊惶
2024/02/28
6370
传输层协议TCP与UDP
面向消息的持久通信与面向流的通信
消息队列系统为持久异步通信提供多种支持,本质是提供消息的中介存储能力,这样就不需要消息发送方和接收方在消息传输过程中都保持激活状态。
用户3003813
2018/09/06
9360
面向消息的持久通信与面向流的通信
基础知识_网络
1.超时重传 顾名思义,如果检测到某一个数据包的定时器超出时间RTO(Retransmission Timeout超时重传时间)了,就需要重新发送该数据包了,RTO是由RTT计算出来的。RTT(Round-Trip Time 往返时延)这是从发送一个消息直到收到确认的时间。下面是RTO的计算方式:
yifei_
2022/11/14
4530
基础知识_网络
华为、华三、思科高级网络工程师必经之路(3)我们的爱如同TCP连接,始终可靠,永不掉线——TCP可靠性排序机制、确认机制和重传机制以及流控--流量控制机制保姆级别详解
TCP保证数据按顺序到达接收端。由于数据在网络中可能会通过不同的路径传输,因此不同的数据包可能会到达接收端的顺序不一致。排序机制的作用是确保数据按发送的顺序被正确接收。
盛透侧视攻城狮
2024/12/25
650
华为、华三、思科高级网络工程师必经之路(3)我们的爱如同TCP连接,始终可靠,永不掉线——TCP可靠性排序机制、确认机制和重传机制以及流控--流量控制机制保姆级别详解
AVB简介--第三篇:AVTP简介
本文是AVB系列文章的第三篇,主要介绍AVB协议族中的音视频传输协议AVTP(IEEE Std 1722-2016)。
coderhuo
2020/04/21
9.1K6
AVB简介--第三篇:AVTP简介
TCP中的数据是怎么传输的?
以Rlogin为例,它每次传到服务器的是一个字节的按键,并且要求服务器回显客户端输入的字符。理论上完整的交互包括4个报文段:
爬蜥
2019/07/09
1.2K0
IJCV 2025 | 基于对比特征重构的渐进式视觉提示学习
提示学习作为一种有吸引力的替代传统微调范式的方法,可使预训练的视觉语言(V-L)模型适应下游任务。受自然语言处理中提示学习成功的启发,早期研究主要集中在基于文本的提示策略上。相比之下,V-L模型中的视觉提示尚未得到充分利用。将现有的为视觉变换器(ViT)设计的视觉提示方法直接应用到V-L模型中,往往会导致性能不佳或训练不稳定。为了应对这些挑战,本文提出了一种名为渐进式视觉提示(ProVP)的新结构。该设计旨在加强相邻层提示之间的交互,从而以一种类似实例特定的方式,更有效地将图像嵌入传播到更深的层。此外,为了解决可学习提示在训练期间泛化能力下降的常见问题,作者进一步引入了一种用于视觉提示学习的对比特征重构技术。该方法可防止提示后的视觉特征与固定的CLIP视觉特征分布出现显著偏差,确保其具有更好的泛化能力。结合ProVP和对比特征重构技术,作者提出的方法ProVP-Ref显著稳定了训练过程,并增强了V-L模型中视觉提示学习的适应性和泛化能力。为了证明该方法的有效性,作者在11个图像数据集上对ProVP-Ref进行了评估,在少样本学习和基类到新类泛化设置下,在其中7个数据集上取得了最先进的结果。据作者所知,这是第一项展示视觉提示在V-L模型中比该领域以前的文本提示方法性能更优的研究。
小白学视觉
2025/03/31
1120
IJCV 2025 | 基于对比特征重构的渐进式视觉提示学习
计算机网络OSI传输层
cheese
2023/10/25
2890
计算机网络OSI传输层
八股文!!
在发送数据包时,首先确认IP包中的目的IP地址,再从路由控制表中找到与该地址具有相同网络地址的记录,将包转发给该记录对应的路由器。如果路由控制表中有多条相同网络地址的记录,利用贪心法选择最优匹配项,如果没有匹配项,转发到默认路由后再进行选路。例如:目标地址172.20.100.52
千羽
2021/12/29
1.1K0
八股文!!
渐进式图像重构网络:像画画一样重构图像
图像重构(IR)对物理与生命科学领域的图像应用软件来说至关重要,其目的在于根据 ground truth 图像抽取出的的各类信息对图像进行重构。
机器之心
2019/04/29
9960
渐进式图像重构网络:像画画一样重构图像
如何使用点播视频转码
阴天,在不开灯的房间,所有思绪都一点一点沉淀~~在这个没有“精神鸦片”的周末,不如到视频网站找点儿短片消遣一下;正当我兴致勃勃的将视频下载完成之后,准备捧着爆米花开启愉快的周末之旅时,却发现视频无法正常播放,这心情当时就不美丽了,
孟祥玉 -pqqmeng
2020/12/18
5.1K0
如何使用点播视频转码
IP分片报文:你需要知道的
在互联网协议(IP)中,分片报文是一个重要的概念。当数据包过大时,为了确保其在网络中能够顺利地从发送端传输到接收端,IP协议允许程序将数据包拆分成更小的片段。这些片段称为IP分片报文。
程序熵
2023/10/06
8510
新一代直播传输协议SRT
SRT协议是基于UDT的传输协议,保留了UDT的核心思想和机制,抗丢包能力强,适用于复杂的网络。在LiveVideoStack线上分享中,新浪音视频架构师 施维对SRT协议的原理、优缺点特性以及在
LiveVideoStack
2020/03/06
3.1K0
新一代直播传输协议SRT
相关推荐
iOS 图片渐进式下载
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档