关于net:轻松在-MAUI-应用中播放音视频MediaElement-现已发布

最受期待的 .NET MAUI 控件之一:MediaElement 现已公布。有了 MediaElement,您能够轻松地在 .NET MAUI 应用程序中播放音频和视频,在这篇文章中,您将理解到无关 MediaElement 第一个版本的所有信息以及咱们对将来的打算!MediaElement 是 .NET MAUI Community Toolkit 的一部分,这是一个社区创立的库,受到来自寰球社区和 Microsoft 的优良开发人员的反对。 什么是 MediaElement?有了 MediaElement,您就有了弱小的控件,从而能够在 .NET MAUI 应用程序中播放多媒体。 得益于社区成员 Peter Foot 的杰出工作,您可能曾经从 Xamarin 社区工具包中理解到了 MediaElement。尽管那个版本曾经很不错了,但它还有改良的空间,尤其是在 Android 上。 这就是为什么在将 MediaElement 移植到 .NET MAUI 时,咱们从基层重建了所有内容。这样咱们就能够在保留所有曾经很好的局部的同时做一些改良。 ▌底层逻辑针对 Android,咱们抉择 ExoPlayer 用作平台对应物,替换咱们用于 Xamarin 的 Android MediaPlayer。通过这种形式,咱们主动取得了即用的额定性能,例如播放 HTTP 实时流式传输 (HLS) 视频、好看的平台传输控件以及许多其余性能。 针对 iOS 和 macOS,咱们应用 AVPlayer 平台,就像咱们在 Xamarin 的 MediaElement 上所做的那样。此外,Tizen 依然应用 .Tizen.Multimedia.Player。 当初 .NET MAUI 构建在 WinUI 的根底之上,而不是 UWP,咱们这里应用了全新的 WinUI MediaPlayerElement。尽管这个控件对于 WinUI 来说也很年老,但它曾经十分残缺并且很有前途。 ...

February 16, 2023 · 2 min · jiezi

关于net:Microsoft-Azure-动手实验营实现-NET-应用现代化火热报名中

February 16, 2023 · 0 min · jiezi

关于net:netstat-的详解

1、概述最近在调试一个网络方面的程序,用到了netstat命令,感觉十分有用,就把netstat的信息整顿一下,以备不时之需。网上信息又乱又杂,本人又不是很熟、只能凭本人的应用教训来进行整顿,有谬误心愿发现的网友告知一下。 2、netstat简介Netstat是在内核中拜访网络连接状态及其相干信息的程序,它能提供TCP连贯,TCP和UDP监听,过程内存治理的相干报告。 Netstat是控制台命令,是一个监控TCP/IP网络的十分有用的工具,它能够显示路由表、理论的网络连接以及每一个网络接口设施的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协定相干的统计数据,个别用于测验本机各端口的网络连接状况。 如果你的计算机有时候接管到的数据包导致出错数据或故障,你不用感到奇怪,TCP/IP能够答应这些类型的谬误,并可能主动重发数据包。但如果累计的出错状况数目占到所接管的IP数据报相当大的百分比,或者它的数目正迅速减少,那么你就应该应用Netstat查一查为什么会呈现这些状况了。 3、netstat的命令参数应用 netstat -help(netstat -h) 或者netstat -? 可查看netstat 的命令信息 我的零碎是windows 10,命令信息如下: NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval] -a 显示所有连贯和侦听端口。-b 显示在创立每个连贯或侦听端口时波及的可执行程序。在某些状况下,已知可执行程序承载多个独立的组件,这些状况下,显示创立连贯或侦听端口时波及的组件序列。在此状况下,可执行程序的名称位于底部 [] 中,它调用的组件位于顶部,直至达到 TCP/IP。留神,此选项可能很耗时,并且在你没有足够权限时可能失败。-e 显示以太网统计信息。此选项能够与 -s 选项联合应用。-f 显示内部地址的齐全限定域名(FQDN)。-n 以数字模式显示地址和端口号。-o 显示领有的与每个连贯关联的过程 ID。-p proto 显示 proto 指定的协定的连贯;proto能够是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s选项一起用来显示每个协定的统计信息,proto 能够是下列任何一个:IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。-q 显示所有连贯、侦听端口和绑定的非侦听 TCP 端口。绑定的非侦听端口不肯定与流动连贯相关联。-r 显示路由表。-s 显示每个协定的统计信息。默认状况下,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;-p 选项可用于指定默认的子网。-t 显示以后连贯卸载状态。-x 显示 NetworkDirect 连贯、侦听器和共享终结点。-y 显示所有连贯的 TCP 连贯模板。无奈与其余选项联合应用。interval 从新显示选定的统计信息,各个显示间暂停的距离秒数。按 CTRL+C 进行从新显示统计信息。如果省略,则 netstat 将打印以后的配置信息一次。 ...

July 19, 2022 · 1 min · jiezi

关于net:NET-20周年学习挑战赛-在线导学-ASPNET-Core-开发

流动背景往年是 .NET 公布20周年。值此 .NET 20周年之际,咱们面向所有对 .NET 技术感兴趣的开发者和初学者,筹备了一场 .NET 学习挑战赛。咱们将 .NET 入门到利用的学习过程拆分为了三个内容模块,通过 C# 语言学习、ASP.NET Core 开发、.NET 挪动利用三个局部的学习,疏导大家从零开始上手这一收费、开源、跨平台的开发平台。同时,为帮忙大家更好地学习和把握 .NET 技术,咱们特地搭配本次 .NET 20周年挑战赛,设置了在线导学环节。咱们邀请了杨中科、刘腾飞、周豪三位 .NET 大咖,针对本次挑战赛及 .NET 学习中的几大重点模块内容,为大家在线解说,助力你的 .NET 进阶之路! 流动介绍在学习了 C# 编程语言之后,咱们将正式进入 .NET 的学习。 本次挑战赛中,咱们将学习 ASP.NET Core 这一开发框架。它是一个跨平台、高性能、开源的开发框架,用于构建如 Web 利用、物联网(IoT)利用和挪动后端利用等连贯到互联网的基于云的古代应用程序。 ASP.NET Core 是对 ASP.NET 4.x 的从新设计,它整合了原来 ASP.NET 中的 MVC 和 Web API 框架,架构变得更加精简与模块化;它开源、跨平台,咱们能够在 Windows、macOS 和 Linux 上跨平台地开发和运行咱们的应用程序;它简略易学、功能强大,是当下云原生畛域最合适的 Web 开发框架。 是什么让 ASP.NET Core 成为当下云原生畛域最合适的 Web 开发框架?如何更好地把握 ASP.NET Core 开发?4月6日,咱们邀请上海奥谱创科技创始人刘腾飞,为咱们介绍 ASP.NET Core 这一弱小的开发框架。 流动工夫:2022年4月6日19:30-20:30参加形式:报名后,在“上课形式”中获取报名形式:点击立刻报名 ...

March 31, 2022 · 1 min · jiezi

关于net:LRnet用户友好型自定义表单设计

表单作为数据采集的工具,在日常职场中使用非常宽泛。在传统的线下管理模式中,常应用纸质单据来开展业务,但随着时间推移,纸质单据保存艰难、不利于对业务数据的汇总统计分析的毛病就逐步裸露进去了。因而,为了让业务人员更好地跟进业务停顿、治理业务信息,通过定制化的业务管理系统,能够针对性地解决业务现存的各种问题。而表单,在业务管理系统存在的目标,就是为了收集业务信息、为管理系统提供标准化的数据,将业务信息电子化、线上化,也便于数据传输。 表单内容个别由惯例信息、逻辑主体,也就是流程的次要局部,相当于流程的详细描述,波及逻辑交互、数据交互等,以及逻辑主体没有表白分明的补充阐明三局部形成。其出现则由标签、提示信息、操作按钮、输出域四类元素形成。标签文本次要是解释输出项的含意;操作按钮是表单信息录入实现后,持续或勾销工作的触发器;提示信息是为了帮忙用户了解以及反馈,如用户未填写、格局谬误等;输出域则是表单的外围,是录入信息的外围交互局部,为了不同信息更易录入会采纳不同交互组件,比方:单行文本框、数字输入框、日期区间等。 在传统的线上报表设计过程中,人们不得不把大部分工夫破费在开发报表款式上,并且,当市场倒退或企业需要有变更时,表单还要改代码或齐全从新开发。而应用低代码开发平台,就能够轻松实现多个异构零碎数据的整合,将数据批量导入到低代码平台上,通过对各个数据对象建设关联关系,突破数据间的零碎壁垒,由业务人员通过简略的利落拽模式,实现表单的开发和可视化的应用。 例如在LeaRun.Net低代码开发平台内就预置了多种表单模板,用户可通过利落拽疾速实现表单设计,款式随需批改,全程可视化编辑,帮忙企业灵便开发出适应本身的个性化表单。 其设计流程非常简略便捷。用户进入LeaRun.Net主界面后,抉择表单设计性能。能够看到其下共含有11个大类,根本涵盖了罕用表单模式,同时用户也能够依据本身需要增加相干类别。 点击[新增],用户即可创立一个新表单。用户依照提醒填好表单标签[名称]及[分类],并勾选好该表单所需的数据库和数据库表,便能够点击[下一步]进入表单内容设计界面。 用户通过对左侧性能栏进行简略的利落拽即可对表单页面进行布局,在右侧性能栏可对组件属性和表单属性进行设置,实现表单开发。 表单界面设计实现后进入表单公布界面,点击[新增]。 抉择表单,输出编号和名称。 依据向导顺次实现布局设置、列表设置、查问设置、按钮设置。 点击[实现],用户即可在左侧性能栏内应用该表单。 以上就是在LeaRun.Net低代码开发平台上表单从设计到公布应用的全过程,如仅需根底表单,整个流程都无需用户编写代码,依据向导逐渐开发的模式能够帮忙精通业务流程却不擅编程的业务人员疾速实现灵便、麻利、高效的表单开发。更多表单设计模板和个性化开发可返回www.learun.cn/Home/VerificationForm进行体验。

December 14, 2021 · 1 min · jiezi

关于net:Net-Core专业报表工具

大数据时代,数据价值愈发彰显,数据分析正在成为影响业务决策的关键因素。其中,数据分析的后果以报表的模式出现给用户。而报表,就是通过表格、图表等模式来动态显示数据,并为使用者提供浏览、打印、导出和剖析性能,能够用公式示意为:报表 = 多样的布局 + 动静的数据 + 丰盛的输入。 企业信息化零碎最外围的就是数据处理,大抵可分为三个环节,原始输出、业务加工、数据输入。而报表是数据输入环节最为罕用的一种形式,它能够提供任意简单格局的数据输入,并能疾速实现数据的汇总统计操作,进而为使用者提供最直观的输入后果,以及任意模式的交互式报表剖析能力,为企业指定倒退策略提供最无力的数据撑持。 传统应用程序常以窗体/页面为数据输入的根本模式,在应答简略的表格或图表数据输入时比拟容易实现,然而,在应答简单表格、多区域混合布局、层叠布局等简单需要时开发和保护难度相当大。而优良的报表是以拖拽形式设计界面,并通过多源分片、报表分层等技术来简化简单界面的开发难度,就算后续有界面批改的须要,也只是对报表文件进行调整,不需进行二次编译和公布,最无效的升高零碎开发和保护老本。 在不采纳报表的状况下,为了实现但条件分类共计的操作,往往会写成千盈百行代码,更不用说简单的多维度汇总。而个别的报表工具都能满足分类统计这类根底的汇总操作,更弱小的工具还具备相似Excel中数据透视表的穿插汇总能力。不必写一行代码,便可解决中国式简单报表的绝大部分数据汇总须要。 同时报表的数据输入也更为全面。数据输入不仅为了在零碎中查看,通常还会进行打印操作,或者导出为其它格局的文件进行共享,个别的单个表格或者图表往往不具备打印和导出性能,只有报表则才是真正的将数据查看、打印和导出给予一身的全方位解决方案。 通过报表,业务人员能够实现自助查问或者通过每天定时的报表即可实现数据查看,不须要每次须要看数据都找开发人员提需要,由开发手动写SQL查问,极大的进步数据查问的效率以及升高开发人员的人工成本。 其次报表最大的价值,就是体现数据。通过对原始数据进行分组、穿插等形式的汇总统计,以便于梳理共享数据的总体状况。企业领导通过对数据的交互式剖析,可能深度开掘企业经营现状,进而制订相应的决策。 在当初的报表市场上,充斥着各类低质量、反复的报表模板,没有成体系的财务、销售、项目管理等行业报表,难以无效利用。并且不提供交互式数据分析性能,无奈进行二次开发,也无奈导出、编辑报表,间隔理论应用还有很大间隔。 LeaRun .Net Core疾速开发平台内置的业余报表工具,列举了多种可交互剖析的行业报表模板,具备多样化的数据交互剖析能力,用户不仅可能分明地查看业务发展趋势,还能间接操作报表数据,进行更深刻、更透彻的数据分析,如数据钻取、深入、排序,图表表格联动、动静表格,创立文档目录等。 通过LeaRun .Net Core的业余报表工具,用户不仅能够查看各行业的经典报表布局及款式,还可疾速体验报表高级利用中的联动、跳转、自定义过滤以及打印等性能,并下载工程文件利用到理论我的项目中。同时LeaRun自带的根底报表设计器针对罕用性能也可实现疾速配置,过程中可随时查看报表实现形式和数据结构,以“所见即所得”的形式批改,查看成果。 更多具体性能可参阅www.learun.cn/Home/VerificationForm

December 8, 2021 · 1 min · jiezi

【Go】获取用户真实的ip地址

原文链接:https://blog.thinkeridea.com/…用户请求到达提供服务的服务器中间有很多的环节,导致服务获取用户真实的 ip 非常困难,大多数的框架及工具库都会封装各种获取用户真实 ip 的方法,在 exnet 包中也封装了各种 ip 相关的操作,其中就包含获取客户端 ip 的方法,比较实用的方法如下:func ClientIP(r *http.Request) string ClientIP 尽最大努力实现获取客户端 IP 的算法。 解析 X-Real-IP 和 X-Forwarded-For 以便于反向代理(nginx 或 haproxy)可以正常工作。func ClientPublicIP(r *http.Request) string ClientPublicIP 尽最大努力实现获取客户端公网 IP 的算法。 解析 X-Real-IP 和 X-Forwarded-For 以便于反向代理(nginx 或 haproxy)可以正常工作。func HasLocalIP(ip net.IP) bool HasLocalIP 检测 IP 地址是否是内网地址func HasLocalIPddr(ip string) bool HasLocalIPddr 检测 IP 地址字符串是否是内网地址func RemoteIP(r *http.Request) string RemoteIP 通过 RemoteAddr 获取 IP 地址, 只是一个快速解析方法。获取用户真实ip地址ClientIP 方法 与 ClientPublicIP 方法的实现类似,只是一个按照 http 协议约定获取客户端 ip, 一个按照约定格式查找到公网 ip。在网络与服务架构、业务逻辑复杂的环境中,按照 http 协议约定的方式,并非总能获取到真实的 ip,在我们的业务中用户流量经由三方多层级转发(都是三方自己实现的http client) ,难免会出现一些纰漏,这时越往后的服务获取用户真实 ip 越加困难,你甚至不知道自己获取的 ip 是否是真实的。但是我们的客户经由三方转发而来的流量,那么客户极大多数甚至排除测试之外都是公网用户,结合使用 ClientPublicIP 和 ClientIP 方法总能更好的获取用户的真实 ip。// var r *http.Requestip := exnet.ClientPublicIP(r)if ip == “”{ ip = exnet.ClientIP(r)}用上面的方法总能有效的获取用户真实的 ip 地址,下面分析下两个方法的具体实现。// ClientIP 尽最大努力实现获取客户端 IP 的算法。// 解析 X-Real-IP 和 X-Forwarded-For 以便于反向代理(nginx 或 haproxy)可以正常工作。func ClientIP(r *http.Request) string { xForwardedFor := r.Header.Get(“X-Forwarded-For”) ip := strings.TrimSpace(strings.Split(xForwardedFor, “,”)[0]) if ip != "" { return ip } ip = strings.TrimSpace(r.Header.Get(“X-Real-Ip”)) if ip != "" { return ip } if ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr)); err == nil { return ip } return “"}ClientIP 首先读取 X-Forwarded-For header 中用 , 分隔的第一个ip地址,如果这个地址不存在,就会从 X-Real-Ip header 中获取,如果还是不存在,说明流量并非是由反向代理转发而来,而是客户端直接请求服务,这时通过 http.Request.RemoteAddr 字段截取除去端口号的 ip 地址。这个方法很简单,就是按照 http 约定的格式获取,其中 X-Forwarded-For 和 X-Real-Ip header 由反向代理填充,例如 nginx 或 haproxy。// ClientPublicIP 尽最大努力实现获取客户端公网 IP 的算法。// 解析 X-Real-IP 和 X-Forwarded-For 以便于反向代理(nginx 或 haproxy)可以正常工作。func ClientPublicIP(r *http.Request) string { var ip string for _, ip = range strings.Split(r.Header.Get(“X-Forwarded-For”), “,”) { ip = strings.TrimSpace(ip) if ip != "” && !HasLocalIPddr(ip) { return ip } } ip = strings.TrimSpace(r.Header.Get(“X-Real-Ip”)) if ip != "" && !HasLocalIPddr(ip) { return ip } if ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr)); err == nil { if !HasLocalIPddr(ip) { return ip } } return “"}ClientPublicIP 很简单,和 ClientIP 方法的读取顺序一样,只是试图中 X-Forwarded-For 列表中找到一个公网ip,如果没有检查 X-Real-Ip 是否是一个公网 ip,其次检查 http.Request.RemoteAddr 是否是公网ip,如果没有找到公网 ip 这返回一个空字符串。这个方法可以让我们有机会优先获取到用户的公网 ip,往往公网 ip 对我们来说更有价值。检查ip对否是内网地址exnet 中还提供了检查 ip 地址是否是内网地址,这在有些情况下非常有用,比如:服务中有些接口只能内网访问,也就是只允许管理员访问(例如动态设定日志级别、查看服务 pprof 信息);我们想隐藏后端服务,只暴露给用户负载均衡(反向代理),用户无法直接访问我们的服务,这些方法及其有用,下面看看具体实现。我的服务提供了动态设置日志级别,以便服务出现问题,可以第一时间查看调试日志分析具体原因,但是这个接口很危险,不应该暴露给公网,所以会用路由中间件检查请求是否来自公网,来自公网则返回 404。该方法认为如下地址段都是内网地址:10.0.0.0/8169.254.0.0/16172.16.0.0/12172.17.0.0/12172.18.0.0/12172.19.0.0/12172.20.0.0/12172.21.0.0/12172.22.0.0/12172.23.0.0/12172.24.0.0/12172.25.0.0/12172.26.0.0/12172.27.0.0/12172.28.0.0/12172.29.0.0/12172.30.0.0/12172.31.0.0/12192.168.0.0/16// HasLocalIPddr 检测 IP 地址字符串是否是内网地址func HasLocalIPddr(ip string) bool { return HasLocalIP(net.ParseIP(ip))}// HasLocalIP 检测 IP 地址是否是内网地址func HasLocalIP(ip net.IP) bool { for _, network := range localNetworks { if network.Contains(ip) { return true } } return ip.IsLoopback()}两个检查方法实现差异仅接受参数类型不一致,检查过程都是逐个对比内网 ip 段是否包含该ip地址,如果不包含则判断该地址是否是回环地址。获取反向代理ip如何判断改地址来自反向代理服务器呢,不同的反向代理实现都有些差异,4 层反向代理甚至可以提供用户的真实 ip(http.Request.RemoteAddr 是用户的ip,而不是反向代理的), 而隐藏自己的ip,这里说一下常见的方法。往往 http.Request.RemoteAddr 保存最后一个连接服务的客户端 ip,我们获取反向代理的ip地址,最简单有效的方法就是通过 http.Request.RemoteAddr 获取, exnet 中提供了 RemoteIP 的快捷方法,实现如下:// RemoteIP 通过 RemoteAddr 获取 IP 地址, 只是一个快速解析方法。func RemoteIP(r *http.Request) string { if ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr)); err == nil { return ip } return “"}这是一个非常方便的脚手架,它仅仅切分 http.Request.RemoteAddr 的 ip 和端口,并返回有效的ip地址,但却可以简化我们的编写业务代码。转载:本文作者: 戚银(thinkeridea)本文链接: https://blog.thinkeridea.com/201903/go/get_client_ip.html版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处! ...

March 28, 2019 · 2 min · jiezi

杨攀:融云专注极致技术 不忘初心打造极简体验

编者按:本文是融云联合创始人、CTO杨攀接受 LiveVideoStack 邮件采访整理而成,杨攀聊到了个人成长经历,作为创业公司技术负责人的责任,以及对企业通信市场的格局和未来的机遇与挑战。杨攀:融云专注极致技术 不忘初心打造极简体验LiveVideoStack:杨攀你好,简单介绍下自己的工作经历,以及在融云负责的工作内容和专注的领域。杨攀:大家好,我叫杨攀,融云的联合创始人、CTO。我早期主要从事 SP 行业的工作,经历了中国互联网的第一波热潮。我也是中国最早的一批 .NET 开发者,因为这两个经验背景,后来有幸参与了 MSN Mobile China Hub 的开发工作,把 MSN Messenger 通信能力和中国电信运营商的短信能力打通。后来,我来到了中国移动飞信的团队,在这段经历里主要从事和即时通讯、开放平台、社交平台相关的工作。我在融云主要负责公司所有的产品和研发工作,随着团队的逐步发展壮大,今年开始主要专注于公司核心技术的研发和管理。LiveVideoStack:从参与 MSN Messenger 开发,到负责飞信重要的技术模块,再到联合创立融云并担任 CTO,带领整个技术团队。相信并非一帆风顺、一蹴而就,每次转变背后有哪些刻骨铭心的故事?又是什么引领你始终向前?杨攀:这些年来我一直对社交和通信技术有着极大的热情,我的工作经历从来没离开过这个领域。而且通过 MSN 和飞信的经历,让我有幸能够接触到海量数据高并发的业务,让我在应对大规模高并发系统的研发上积累了非常多的经验。这里还有一个非常大的梦想存在:因为这些年来一直在做即时通讯领域的工作,但也知道在中国做 To C 的即时通讯业务是一个多么困难的事情。当时融云团队的想法是,国内其实有极少的几个团队掌握着大规模、高并发的即时通讯技术,但是这个技术并没有被普世化。所以我们当时的选择就是把它做成云服务开放给所有开发者,只要简单的在客户端集成 SDK,服务端接入 Server API 即可。熟练的开发者最快可以在一天之内就把即时通讯能力集成到自己的业务里,这个绝对是一种莫大的成就感。LiveVideoStack:对于技术人创业你有哪些切身体会?有哪些经验或教训分享?杨攀:去年有一个非常流行的词叫“不忘初心”,其实创业的初心就是把你选择要解决的问题做穿,做透。如果说要谈起经验教训,我觉得专注是最大的经验也是最大的教训。回顾融云的创业历程,越是在专注的时期,我们发展的就越快,而在不够专注的时期,往往就会遇到困难。所谓专注,其实就是在那个你笃定的方向,解决得比所有其他人都更加透彻。把各个指标和服务水平都做到极致,好的产品会说话,这也是最好的营销。LiveVideoStack:带团队是所有CXO必须面对的挑战,对此你有哪些方法和经验?杨攀:团队管理是个非常大的话题,其实我只想说一点,最简单最核心的一点,那就是要在管理过程中带着团队的所有成员一起成长。在这个核心目标指引下,要做很多很多事情:要为团队构建专业的研发环境、流程制度,建立系统的培训和成长体系,给团队更多的机会去试错,同时给大家更多的挑战和指导。团队成员成长了,团队整体就会成长,就能承担更大的责任,能创造更优秀的产品。LiveVideoStack:从消息,到音频与视频,融云一直在努力帮助用户更简单的获得通信能力。在你看来,企业通讯市场还有哪些远未满足的需求?同时,您认为哪些技术有可能满足这一市场?为此,您和您的团队正在做哪些技术储备?杨攀:融云的使命就是提供平台和工具让通信变得更简单和可靠。仅仅就在这个方向上,作为服务厂商就有非常多的工作要做,包括更加清爽的服务界面,更加简单的开发、集成和调试过程、更加透明的质量数据和质量工具,甚至是能够让开发者自己去查看质量指标和排查解决问题。一直以来,我都认为最好的服务就是让客户感觉不到它的存在。为了能做到这一点,就要把质量做到极致。但是另一方面,作为一个能力服务厂商。满足客户多样的需求,是一个非常复杂的事情。大多数客户对最基础的需求是一致的,但同时,客户也存在丰富多样的场景,所以,产品功能的场景化,其实是未来产业发展的重点。说到技术储备,我们一直都在致力于提供更好的全国乃至全球范围的通信云网络,在网络质量的持续提升方面,无论是研发力量还是基础设施,我们今年仍会继续做非常大的投入。LiveVideoStack:作为互联网通信云公司,融云为什么要大力发展实时音视频业务?实时音视频对于融云整体业务线中的价值是什么?融云现有客户是否也会受益?杨攀:其实融云开始发展音视频业务主要是源自融云客户的诉求。融云把自己定位为互联网通信云服务公司,客户在这个领域所有需要的产品、技术形态都是我们应该提供的。为了满足客户在通信云领域各种各样的复杂需求,从 IM 消息服务到实时音视频服务,我们应该,也必须走到这条路上来。未来,面对 5G 的来临,有更多的、更丰富的场景应用都要基于音频和视频业务,所以未来音视频在融云业务中的比重也会越来越大。融云提供了全球范围的全媒体通讯服务,可以让现在融云的开发者,只通过简单的一个账号、一套后台的管理界面、一套开发体系,就能简单的把所有通讯能力都全部集成在自己的产品里,这个对开发者来说也极大的便利。LiveVideoStack:你怎么看企业通讯的市场空间?这是一片红海,还是蓝海?杨攀:目前无论是客户的采用率还是使用的场景多样性方面,仍处在初期竞争的阶段。我们也看到,无论是在 IM 市场,还是在音视频市场,都存在着非常大的上升和拓展空间。所以我认为大家其实不是在彼此竞争,而是应该一起去把市场做大,在这个更大的市场里获得更快的增长。LiveVideoStack:有没有一些技术已经或开始改变企业通信市场?(比如AI)杨攀:我觉得应该分两个层面来看这个问题,首先是上层应用,其次是底层技术。上层应用比如说一些 AI 的聊天机器人,一些 TTS 语音合成技术这些年都有了一些很好的落地场景,但我认为这些基本上都是一种技术和场景的嫁接与落地,本身对这个行业的核心技术并没有本质上的改变。在底层技术上,目前,通讯质量的稳定提升仍然还是一个非常核心的工作层面。我们能看到,这些年无论是在 IM 领域还是在音视频通信领域,技术都没有停止迭代和进步,尤其是面对复杂网络情况下的质量保障方案、全球网络低延迟和链路优化方案都还在不断迭代,有非常大的提升空间。其实 AI 在很多场景下也是在优化算力问题。总的来说,我本人更关注的是,能带来更大的质量提升或成本下降,能够对产业成本结构带来巨大变化的技术引入和设计。LiveVideoStack:最后,剧透下你在LiveVideoStack2019上海的分享吧?杨攀:为了提升音视频的通讯服务质量,除了必要的抗网损优化外,最有效的办法就是在更多的区域部署媒体服务,并使之离用户距离更近。更多的媒体服务会使网络结构变得更复杂,管理更困难,因此我们设计了一种去中心化的 RTC 网络。包含如下特点:1、无中心管理节点;2、无需关心其他媒体服务状态;3、快速增加地域媒体服务节点部署;4、与信令服务无耦合。非常期待在LiveVideoStack2019上海和大家进一步分享我们的设计和实现。

March 27, 2019 · 1 min · jiezi