前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >士别三日,当刮目相看

士别三日,当刮目相看

作者头像
用户6983566
发布于 2023-01-14 06:25:24
发布于 2023-01-14 06:25:24
3290
举报
文章被收录于专栏:findyifindyi

阅读本文大概需要4分钟。

昨天看完钉钉7.0的发布会后,脑海里浮现出的第一句话就是:士别三日,当刮目相看。

钉钉从创业开始到现在已进入第8个年头,也正式走向7.0时代。当然我关注的重点并不是大协同,而是过去用的比较多的视频会议。

疫情之前,我很少有机会用到视频会议,印象中的视频会议还是高端会议室或老板办公室才会配备的系统,离普通人还有很大的距离。到今天,视频会议产品在国内已经有了庞大的用户基数,突如其来的疫情让很多人都经历过线上办公、线上上课。

作为视频会议的重度用户,过去最大的感受是会议还不够稳定,而且新功能的上线速度貌似也很慢,相比于最早使用的ZOOM,还有很大的差距。

恰好最近有位音视频行业的读者也在紧急求助我一个技术问题,他在处理网络传输拥塞时遇到了困难,已经连续加班好几天也没攻克,我自己肯定是爱莫能助了,最后帮他找到了钉钉会议的一个技术大拿提供帮助。

1

借助这个机会,我和这位大拿做了一些技术上的沟通,结合最近对音视频技术的研究,才算是理解了做好会议产品背后的技术难度有多大。

首先音视频的技术栈非常的长,从最底层的编解码、3A算法、网络传输、弱网对抗、到对各种非专业会议设备的适配。每个领域都需要有非常专业且深入的研究,以3A算法为例,我的一位师兄毕业后就进入某大厂音视频实验室,已经在这个领域研究了8年,而且仅仅是降噪这一个场景。

弱网对抗大家应该不陌生了,现在的互联网可以理解为建立在一套“并不怎么可靠”的网络之上。信息在传输过程中可能会出现各种损伤,这些损伤在打开一个应用的表现往往是刷新一下就能加载出来,在发送消息的表现往往是转个圈圈也能发得出去,但这些都是非实时场景。如果是在会议场景下,丢个包带来的结果就是你刚才说的话对方听不到,也不能再重发一遍。这就对弱网情况下的处理提出了更高的要求。

日常生活中,我们用手机打电话也经常会碰到信号不好,更何况视频会议是依赖于数据网络,可靠性相比于电话就更差了。这也是为什么当我们在高铁上,或者从办公室走进电梯时,会出现一些机械音甚至压根听不到对方说什么。

也怪不得音视频行业的人经常跟我讲,在现在互联网技术领域,实时音视频技术算是天花板级别的存在了。普通的团队基于一些开源技术做个Demo是很容易的,但真正做成一个可商业化应用的产品要面临的挑战可不小,更何况是像钉钉会议这样在疫情期间服务了上亿用户的产品。

2

过去这几年,我也算是钉钉的资深用户了,没少用钉钉会议开会,现在很多小学生上课用的也是钉钉。但过去给我的感觉是“不怎么好用”。钉钉上的功能真是太多了,从一个不怎么研究产品方法论的技术人视角来看,产品和技术应该是有很多共同之处的,做出一款优雅的产品和写出一段优雅的代码一样,需要遵循一些原则。

钉钉7.0发布会上讲到了一些钉钉会议产品体验升级背后的理念,我是非常认同的。比如持续做减法,比如钉钉会议上提到的“简洁、克制,简单就是美”。

昨天发布会结束我就升级到了最新版本,整个界面看上去的确是比过去简洁了很多,印象中以前呼叫群里的小伙伴开会时,不管有没有进入会议都会齐刷刷的显示在会议的格子里,人员进出还经常弹出一些提示,看起来很烦,如今这些都没有了。

实时字幕的升级,能够支持中英互译,但我很少跟外国人开会,所以这个翻译功能对我来讲应该没什应用场景了。但实时字幕本身让我也想到了新的使用方式,以前跟大家开会时偶尔走神,就不知道前面的人说了什么,有了字幕,我就可以翻看刚才的对话记录,缓解一下偶尔走神接不上话的尴尬。

更让我惊喜的是发布会上提到的“一键合影”功能,这个着实有点脑洞。联想到过去参加线上培训,每次培训结束,老师都让我们发一张照片给他,他会帮我们拼一张“毕业照”。有了一键合影,“毕业照”的生成应该会简单很多,脑洞再大一点,今年过年会不会看到大家在线上举杯相庆的云合影呢。

后边讲的这个会议近场转移功能就比较专业了,可以在走进会议室就把手机上的会议转移到会议室设备上。出于对技术的好奇心,我也去搜索了一些相关资料。大家日常用的比较多的近场识别技术应该是手机的NFC功能了,但这个必须靠手机靠近设备才能识别。从现场的介绍的情况来看,基本可以排除NFC。不知道圈友里有没有了解这项技术呢,可以帮忙科普一下。

不得不说,在互联网产品严重同质化的今天,上面这几个功能,让我看到了一些惊喜。

3

年初的发布会上,钉钉推出过一款高端F2会议设备,我在一次跟客户的会议上有体验到过,印象最深的是摄像头可以自动切换视角和焦距,始终对焦在正在讲话的人,而且切换的效果非常顺滑。这次发布会上钉钉会议又把F2的算法做了深度开放,看起来F2应该是钉钉自研的最后一款会议硬件了。

想起之前经常会去思考的一个问题。如果钉钉仅靠不断自研的产品,如何服务好每一个客户呢,要知道发布会上公开的数据显示钉钉的企业组织数已超过2300万。全面拥抱生态则是最好的解题思路,毕竟任何一款产品、任何一家公司都很难在每一个领域深耕、每一个场景都都打造出最具竞争力的产品,和不同行业的伙伴一起才更有可能各取所长,激发创新的活力。

我看到钉钉会议也和Insta360在视频会议方面有合作,坦白的讲,还是挺出乎我意料的。喜欢户外运动的朋友对Insta360这家公司应该不陌生吧?很多朋友应该也使用过他家的全景运动相机,可以全景拍摄后剪辑出一些非常酷炫的效果。这样一家面向消费端的企业为什么会选择和钉钉合作呢?

仔细想想,其实也不难理解。视频会议很重要的一块技术是解决视频图像处理问题,而Insta360做了这么多年运动相机,在这方面应该是有非常深厚的功底的,更何况Insta360的出货量也决定了其在硬件研发上有足够的实力。钉钉会议官方对F2讲得比较多的是10米拾音和发言人跟随,这两个有技术含量又有特色功能与Insta360的结合,不知道会碰撞出什么火花。不过我更想脑洞一下的是未来会不会推出全景会议一体机?

总体来讲,钉钉会议的开放维度不仅仅是传统意义上的PaaS,而是包含了他们在过去自研硬件上积累的一些硬件和算法技术,这也让我们看到了一些新的合作形态。

4

过去三年时间里,视频会议/云会议越来越成为工作的标配了,疫情加速了视频会议对用户的普及。但随着疫情逐步开放,线上上课的需求大概率会逐步萎缩,而面向企业和普通用户,大家又是否会持续通过视频会议的方式来进行方案的讨论或重要的分享呢?

线上会议相比线下会议最大的问题是缺乏一些临场感,大部分用户都不会打开自己的摄像头,自然就缺少了肢体动作、表情等,仅仅是声音的传递不足以表达出全部的想法,所以很多时候大家开会都是“能线下就不线上”。目前会议产品都在不断迭代,提供了很多有意思的功能,比如各家都提供录制、翻译等功能。我用钉钉会议用得比较多的就是云录制功能了,可以直接以文字的形式查看刚才的会议内容。在这些方面线上开会的效率确实比线下要高,但我想,仅仅这些依然是不够的。

新时代的会议不再是传统意义上单纯的开会场景,用户的需求赋予了它更多的可能性,已经演变成了一种线上的互动方式和生活方式。比如线上做话题的探讨和分享:同步看电影、看球、云聚餐、云年会、线上毕业季等等。这种云会议的互动方式也在让我们的生活和工作变得更有趣、更高效。

近几年各种新技术的涌现,比如虚拟人、元宇宙等等,也都是云会议未来的发展方向。试想一下某一天你从睡梦中醒来,打开软件进入虚拟办公室和各种虚拟同事一起来一场云会议,这里面就突破了时间、空间的限制,云会议还能自动录制开会的所有细节,同时还能最大限度保障信息同步和透传。

这种畅想一旦成为现实,那就是革命性的力量,是对工业社会会议的彻底颠覆。

总体来讲,钉钉7.0里,我用的最多的视频会议也迎来了最大的一次升级,不管是产品体验上的一些升级、创新的功能还是新的生态策略,都为我提供了一些新的观察视角。

过去很多产品为了一味的迎合用户或者打造所谓创新,而不断地叠加一些“叫好不叫座”的功能。功能的堆砌并没有带来更多用户体验上的提升,反而让产品变得更复杂了。钉钉会议在保持克制这一点上是做得不错的,新的版本相比过去确实简洁不少。

而一些有特色的创新功能,看起来也已跳出传统意义上的“开会”场景,逐步往线上互动的方向去演进,这无疑是更有想象力的。相比于过去偶尔带来的一些常规更新,这次无疑是诚意满满,所以才有了开头我说的。

不知道大家最近有没有用过钉钉会议,相信用过的朋友感受应该和我一致。

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

本文分享自 findyi 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
JSONP(JSON with Padding)可以看成是JSON的一种“使用模式”,用以解决“跨域访问”的问题,这篇简单的文章给出一个简单的例子用于模拟如何通过jQuery以JSONP的访问调用一个WCF REST服务。[源代码从这里下载] 在这个例子中,我们将定义一个用于返回所有员工信息的服务,下面是用于表示员工信息的Employee的类型和契约接口。契约接口IEmployees的GetAll操作用以返回所有员工列表,我们指定了Uri模板并将回复消息格式设置为JSON。 1: using Syst
蒋金楠
2018/02/07
8240
一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
[WCF REST] 帮助页面与自动消息格式(JSON/XML)选择
可以说WebHttpBinding和WebHttpBehavior是整个Web HTTP编程模型最为核心的两个类型,前者主要解决消息编码问题,而余下的工作基本上落在了终结点行为WebHttpBehavior上。WebHttpBehavior属性HelpEnabled和AutomaticFormatSelectionEnabled是“帮助页面”与“自动消息格式选择”这两个特性的总开关。[“自动消息格式(JSON/XML)选择”源代码从这里下载] 1: public class WebHttpBehavi
蒋金楠
2018/02/07
7440
[WCF REST] 帮助页面与自动消息格式(JSON/XML)选择
[WCF REST] 提高性能的一个有效的手段:条件资源获取(Conditional Retrieval)
条件获取(Conditional Retrieval)旨在解决这样的问题:客户端获取某个资源并对其进行缓存,当再次获取相同资源时,如果资源数据与之前获取的一致,则不再返回真正的资源数据,而是在回复中设置一个“标识”表明获取的资源并未发生改变。[源代码从这里下载] 一、 HTTP对条件获取的支持 HTTP对条件获取提供了原生的支持。具体的实现是这样的:服务端接收到客户端针对某个资源的第一次获取请求时,除了将资源数据作为HTTP回复主体返回之外,还会设置一个叫做ETag的回复报头。这个ETag与资源本身关联并且
蒋金楠
2018/01/16
6890
[WCF REST] 提高性能的一个有效的手段:条件资源获取(Conditional Retrieval)
快速入门系列--WCF--03RESTFUL服务与示例
之前介绍了基于SOAP的Web服务,接下来将介绍基于REST的轻量级的Web服务。 REST(Representational State Transfer)与技术无关,代表一种软件架构风格,可以成
用户1216676
2018/01/24
7880
快速入门系列--WCF--03RESTFUL服务与示例
[WCF REST] Web消息主体风格(Message Body Style)
对于Web HTTP编程模型来说,服务契约中作为操作的方法无须应用OperationContractAttribute特性,只需要根据需要应用WebGetAttribute与WebInvokeAttribute特性即可。前者针对GET HTTP方法,或者则针对其他HTTP方法。WebGetAttribute与WebInvokeAttribute的属性BodyStyle和IsBodyStyleSetExplicitly涉及到“Web消息主体风格”的话题。 1: [AttributeUsage(Attri
蒋金楠
2018/02/07
8730
[WCF REST] Web消息主体风格(Message Body Style)
[WCF REST] 解决资源并发修改的一个有效的手段:条件更新(Conditional Update)
条件获取(Conditional Update)可以避免相同数据的重复传输,进而提高性能。条件更新(Conditional Update)用于解决资源并发操作问题。如果我们预先获取一个资源进行修改或者删除,条件更新检验帮助我们确认资源被获取出来到针对它的修改/删除操作被提交的这段时间内是否被其他人改动过。[源代码从这里下载] 一、HTTP对条件更新的支持 HTTP为条件更新提供了相应的报头,我们按照分析条件获取的方式来分析条件更新在HTTP请求/回复过程中的实现。客户端第一次向服务端发起针对某个资源的请求,
蒋金楠
2018/01/16
8800
Enterprise Library深入解析与灵活应用(8):WCF与Exception Handling AppBlock集成[下]
在上篇中,我详细介绍了如何通过自定义ClientMessageInspector和ErrorHandler,实现WCF与微软企业库中的Exception Handling Application Block(EHAB)之间的集成。这个方案的基本思路就是:当异常从服务端抛出,利用EHAB针对某个配置好的异常处理策略进行处理;然后将处理有的异常通过ServiceExceptionDetail对象进行封装,最后序列化置于Fault消息,最终被返回给客户端;客户端接收到该Fault消息后,提取并创建ServiceE
蒋金楠
2018/01/16
5180
[WCF-Discovery] 实例演示:如何利用服务发现机制实现服务的“动态”调用?
前面两篇(《服务如何能被”发现”》和《客户端如何能够“探测”到可用的服务?》)我们分别介绍了可被发现服务如何被发布,以及客户端如果探测可用的服务。接下来我们通过一个简单的例子来演示如果创建和发布一个可被发现的服务,客户端如何在不知道服务终结点地址的情况下动态探测可用的服务并调用之。该实例的解决方案采用如右图所示的结构,即包含项目Service.Interface(类库)、Client(控制台应用)和Service(控制台应用)分别定义服务契约、服务(包括服务寄宿)和客户端程序。[源代码从这里下载,Dyn
蒋金楠
2018/02/07
6780
[WCF-Discovery] 实例演示:如何利用服务发现机制实现服务的“动态”调用?
WCF的安全审核——记录谁在敲打你的门
WCF所谓的安全审核就是针对认证和授权所做的针对EventLog的日志记录。我们不但可以设置进行审核的事件(认证成功/失败,授权成功或失败),还可以选择记录信息被写入的EventLog类型,即应用程序日志(Application)还是安全日志(Security)。WCF的安全审核是通过ServiceSecurityAuditBehavior服务行为实现的。 一、ServiceSecurityAuditBehavior服务行为 针对WCF安全审核的编程只涉及ServiceSecurityAuditBehavi
蒋金楠
2018/02/07
8330
WCF的安全审核——记录谁在敲打你的门
WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]
我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码和配置;通过ChannelFactory<TChannel>创建服务代理对象。在这篇文章中,我们采用一种独特的方式进行服务的调用。从本质上讲,我们只要能够创建于服务端相匹配的终结点,就能够实现正常的服务调用。在WCF客户端元数据架构体系中,利用MetadataExchangeClient可以获取服务的元数据,而利用MetadataImporter将获取的元数据导入成ServiceEndp
蒋金楠
2018/01/16
7970
[WCF REST] UriTemplate、UriTemplateTable与WebHttpDispatchOperationSelector
REST服务采用面向资源的架构,而资源通过URI进行标识和定位,所以URI在REST中具有重要的地位。对于WCF来说,服务调用请求的URI映射为某个具体的操作,所以服务端需要解决的是如何根据请求URI选择出对应的操作。如果采用SOAP,操作的选择是根据消息的<Action>报头来实现的,那么REST服务又采用怎样的操作选择机制呢? 目录 一、URI模板 二、UriTemplate 三、UriTemplateTable 四、WebHttpDispatchOper
蒋金楠
2018/02/07
1.1K0
WCF 4.0一个鲜为人知的改变
本篇文章介绍可以算是WCF 4.0基于限流(Throttling)的新特性,是在修订《WCF技术剖析(卷1)》的时候编写演示实例的时候发现的。这个特性没有出现在官方文档上面,至少在MSDN上的相关介绍依然是错误的。 一、流量限制简介 WCF是一个基于多线程的消息监听、接收和处理框架体系,能够同时应付来自相同或者不同客户端的服务调用请求,并提供完善的同步机制确保状态的一致性。一方面,我们期望WCF服务端能够处理尽可能多的并发请求,但是资源的有限性决定了并发量有一个最大值。如果WCF不控制进入消息处理系统的并发
蒋金楠
2018/01/15
8840
[WCF REST] WebServiceHost有何特别之处?
WCF为REST服务的寄宿提供了一个新的ServiceHost,即WebServiceHost。WebServiceHost是ServiceHost的子类,而WebServiceHostFactory是对应的ServiceHostFactory,在基于IIS/WAS寄宿中被使用。由于对REST服务绝大部分功能的支持都是通过WebHttpBehavior这么一个终结点行为实现的,所以WebServiceHost的核心功能就是将该终结点行为应用到寄宿服务的所有终结点。除此之外,WebServiceHost还具有
蒋金楠
2018/02/07
5830
EndpointAddress——不只是一个Uri[下篇]
《上篇》对AddressHeader在服务端和客户端的作用,以及如何通过配置和编成的方式设置AddressHeader进行了详细介绍。现在我们通过一个实例来演示终结点的地址报头如何影响实现终结点选择的消息筛选机制。这个实例通过为服务端终结点指定地址报头实现针对客户端的授权,让经过许可的客户端才能访问这个服务。具体来说,我们将一个代码序列号的GUID作为终结点的地址报头。对于客户端发送的消息,只有具有相应的报头才能访问服务。[三个实例源代码下载地址:实例1、实例2和实例3] 一、无地址报头下服务调用(实例
蒋金楠
2018/02/08
5610
EndpointAddress——不只是一个Uri[下篇]
快速入门系列--WCF--08扩展与新特性
最后一章将进行WCF扩展和新特性的学习,这部分内容有一定深度,有一个基本的了解即可,当需要自定义一个完整的SOA框架时,可以再进行细致的学习和实践。 服务端架构体系的构建主要包含接下来的几个要素:服
用户1216676
2018/01/24
6630
快速入门系列--WCF--08扩展与新特性
[WCF 4.0新特性] 路由服务[实例篇]
在本篇文章中,我们将通过一个具体的实例来演示如何通过路由服务。在这个例子中,我们会创建连个简单的服务HelloServie和GoodbyeService。假设客户端不能直接调用这两个服务,需要使用到路由服务作为两者之间的中介。整个消息路由的场景如下图所示,中间的GreetingService.svc就是代表路由服务,而两个目标服务则通过HelloServie.svc和GoodbyeService.svc表示。路由服务使用的消息筛选器EndpointAddressMessageFilter,即根据包含在消息中
蒋金楠
2018/02/07
6460
[WCF 4.0新特性] 路由服务[实例篇]
通过“四大行为”对WCF的扩展[实例篇]
为了让读者对如何利用相应的行为对WCF进行扩展有个深刻的认识,在这里我提供一个简单的实例演示。本实例模拟的场景是这样的:我们创建一个支持多语言的资源服务,该服务旨在为调用者提供基于某种语言的文本型资源。但是,我们不希望客户端在每次调用服务的时候都显式地制定具体的语言,而是根据客户端服务调用线程表示语言文化的上下文来自动识别所需的语言。[源代码从这里下载] 要让资源服务具有识别语言文化的能够,我们必须将客户端服务调用线程当前的语言文化信息(具体来说就是Thread的两个属性:CurrentUICulture和
蒋金楠
2018/02/07
6170
通过“四大行为”对WCF的扩展[实例篇]
[WCF REST] 通过ASP.NET Output Caching实现声明式缓存
ASP.NET的输出缓存(Output Caching)机制允许我们针对整个Web页面或者页面的某个部分(主要针对用户控件)最终呈现的HTML进行缓存。对于后续针对相同资源的请求,只需要直接将缓存的HTML予以回复而无须按照页面处理生命周期对每次请求进行重复处理。WCF通过操作行为AspNetCacheProfileAttribute利用ASP.NET的输出缓存提供一种针对于某个操作的声明式缓存机制。[源代码从这里下载] 一、AspNetCacheProfileAttribute WCF对ASP.NET缓存
蒋金楠
2018/01/16
8050
WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[下篇]
在[第2篇]中,我们深入剖析了单调(PerCall)模式下WCF对服务实例生命周期的控制,现在我们来讨轮另一种极端的服务实例上下文模式:单例(Single)模式。在单例模式下,WCF通过创建一个唯一的服务实例来处理所有的客户端服务调用请求。这是一个极端的服务实例激活方式,由于服务实例的唯一性,所有客户端每次调用的状态能够被保存下来,但是当前的状态是所有客户端作用于服务实例的结果,而不能反映出具体某个客户端多次调用后的状态。WCF是一个典型的多线程的通信框架,对并发的服务调用请求是最基本的能力和要求,但是服务
蒋金楠
2018/01/16
1.3K0
[WCF-Discovery]如何利用”发现代理”实现可用服务的实时维护?
上面的内容大部分是围绕着Ad-Hoc模式展开介绍的。Managed模式和Ad-Hoc不同之处在于可用服务的终结点通过发现代理来统一管理。客户端在进行可用目标服务探测和解析的时候不再需要发送广播请求,而是直接向发现代理进行探测和解析请求就可以了。[源代码从这里下载] 目录 一、发现代理与Managed发现模式 二、通过继承DiscoveryProxy创建发现代理 三、实例演示:自定义发现代理服务     步骤一、创建自定义发现代理服务     步骤二
蒋金楠
2018/02/07
7400
推荐阅读
相关推荐
一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档