-
大 发 导 师 带 精 准 计 划【誷址――D͎ F͎ 5̲ 6̲ 9̲ • C͎ C͎――】『誷址——D͎ F͎ 5̲ 6̲ 5̲ • C͎ C͎ ——」—成功不靠运气,而靠正确引导!现全流程陪伴指导—秤盅紊斡蕾藏猛藏囱矣——生活就像一盒巧克力,缆乌特欢呈妊唤氐影赌你永远不知道下一颗是什么味道。今日,品尝属于你的甜蜜吧!
-
快 3 计 划 官 方 版 下 载【誷址――D͎ F͎ 5̲ 6̲ 9̲ • C͎ C͎――】『誷址——D͎ F͎ 5̲ 6̲ 5̲ • C͎ C͎ ——」—成功不靠运气,而靠正确引导!现全流程陪伴指导—秤盅紊斡蕾藏猛藏囱矣——生活就像一盒巧克力,缆乌特欢呈妊唤氐影赌你永远不知道下一颗是什么味道。今日,品尝属于你的甜蜜吧!
-
快 3 官 方 平 台 计 划【誷址――D͎ F͎ 5̲ 6̲ 9̲ • C͎ C͎――】『誷址——D͎ F͎ 5̲ 6̲ 5̲ • C͎ C͎ ——」—成功不靠运气,而靠正确引导!现全流程陪伴指导—秤盅紊斡蕾藏猛藏囱矣——生活就像一盒巧克力,缆乌特欢呈妊唤氐影赌你永远不知道下一颗是什么味道。今日,品尝属于你的甜蜜吧!
-
开发者技术支持-基于onTouch与Scroll状态控制解决地图组件滑动冲突问题1.1 问题说明在页面使用Scroll作为外层容器时,若在Scroll内嵌入MapComponent(地图组件),用户在地图区域进行上下拖拽时,容易被Scroll抢占手势,导致地图无法完成垂直方向的平移浏览(表现为:页面滚动或无响应)。1.2 原因分析1)Scroll与MapComponent 都需要消费垂直方向的触摸滑动事件。默认情况下,父组件Scroll会优先处理滑动,从而拦截了地图组件的拖拽手势链路。2)地图平移/缩放依赖连续手势(Down——Move——Up/Cancel)。当Down后父组件开始滚动,MapComponent 无法持续接收到Move事件,最终表现为地图无法垂直拖动。3)若只在部分触摸状态下切换Scroll状态(例如只处理Up,不处理Cancel),在手势被系统中断(来电、通知遮挡、手势冲突取消)时可能导致 Scroll 无法恢复滚动。1.3 解决思路· 在 MapComponent的onTouch 事件中识别触摸阶段:· 当触摸按下(TouchType.Down)且命中地图区域时,临时关闭父级Scroll的滚动能力(scrollable = ScrollDirection.None),让地图优先处理拖拽。· 当触摸抬起/取消(TouchType.Up / TouchType.Cancel)时,恢复Scroll的垂直滚动(scrollable = ScrollDirection.Vertical),保证页面其余区域仍可正常滚动。· 通过@State状态变量驱动scrollable属性,确保UI状态与手势状态一致。1.4 解决方案状态变量:作为“开关”控制父Scroll是否可滚动 这一行的作用是提供一个“手势仲裁开关”:到底是Scroll响应垂直滑动,还是MapComponent响应拖拽。用 @State的意义是:scrollable 变化会触发UI刷新,使.scrollable(this.scrollable) 立即生效。默认Vertical:页面正常可上下滚动,只有在“触摸到地图”时才临时切换。地图区域命中:用onTouch在关键时刻切换开关 这段的核心是“地图交互开始 → 禁用Scroll;地图交互结束 → 恢复Scroll”。Down → None:按下就立刻让Scroll“退让”,避免Scroll抢走后续的Move事件(否则地图会出现拖不动/拖不顺)。Up/Cancel → Vertical:交互结束要恢复页面滚动,尤其Cancel覆盖系统中断/冲突取消等情况,防止页面“突然滚不动”。这里把onTouch放在MapComponent上是对的:只在“命中地图区域”时才禁用Scroll,不影响其他区域滚动。父Scroll绑定开关:真正决定谁能控制滑动scrollable只是状态,.scrollable(this.scrollable) 才是把状态作用到Scroll的地方。当它是 Vertical:Scroll会消费垂直滑动 → 页面滚动优先。当它是None:Scroll不消费滑动 → 事件更容易下发给MapComponent → 地图拖拽/缩放更稳定。所以整个方案其实是:onTouch 改状态 →Scroll根据状态决定是否抢手势。日志辅助验证:判断Scroll是否仍在抢手势 如果在地图上按住拖动时频繁看到onScrollStart,说明Scroll仍在抢(通常是地图没被命中、或上层有透明组件拦截触摸)。如果在地图区域拖动时几乎不触发onScrollStart,说明Down → None的仲裁生效了。这能快速定位问题是“仲裁逻辑没生效”还是“布局层级/命中问题”。1.5 总结1) 问题与痛点:Scroll与MapComponent都需要消费垂直滑动事件,默认父容器Scroll更容易抢占手势,导致地图无法连续接收Move,表现为地图垂直拖拽失效;若未处理Cancel,可能造成页面滚动状态无法恢复。2)技术要点:通过MapComponent的onTouch识别Down / Up / Cancel,在Down时将Scroll.scrollable切为None让Scroll退让,在Up/Cancel时恢复Vertical;用@State驱动状态变化,保证仲裁切换即时生效。3)实现效果:地图区域可稳定进行拖拽浏览(含垂直方向),离开地图区域后页面仍可正常滚动;在系统中断/手势取消情况下也能可靠恢复滚动,交互更自然、冲突更少。4)适用场景:详情页/列表页嵌入地图、POI浏览、门店/路线展示等“页面可滚动 + 地图可交互”的鸿蒙原生界面;同类强交互组件(图表/画布/大图)也可复用该仲裁写法。
-
全球根域名服务器分为IPv4和IPv6两种。在IPv4体系中,全球共有13台根服务器,其中1个主根服务器位于美国,其余12个为辅根服务器,分布在美国、欧洲和日本1。在IPv6体系中,全球有25台根服务器,中国写阶段部署了其中的4台,包括1台主根和3台辅根服务器12。中国根域名服务器现状根镜像服务器:中国部署了数十个根镜像服务器,遍布各大骨干网,承担了大量域名解析请求,提高了国内网络访问速度和稳定性34。“雪人计划”与IPv6根服务器:中国积极参与并推动了“雪人计划”,在全球16个国家完成25台IPv6根服务器的架设,其中中国部署了4台,包括1台主根和3台辅根服务器,增强了中国互联网的自主性和安全性25。网络安全与治理:中国建立了根区异常监测系统,实时感知国际根区解析状态,并能在必要时启动快速重路由策略,由国内调度体系接管流量,确保网络稳定运行3。综上所述,中国通过根镜像服务器和IPv6根服务器的布局,构建起了一道坚实的网络安全防线,增强了网络自主性和安全性。
-
【问题来源】【必填】 民生银行 【问题简要】希望得到AICC 24.200匹配的openeye webdom【问题类别】【必填】 Openeye H5 SDK【AICC解决方案版本】【必填】 AICC 24.200 【期望解决时间】尽快【问题现象描述】 当前论坛中的openeye webmo最高版本位23.300, 其内容与24.200产品中描述的开发接口中的demo code具体有区别现在23,200, 23.300的demo中的代码截图如下:配套24.200的webdemo是否能提供一下?
-
【问题来源】【必填】北京【问题简要】【必填】您好,我们在申请会场资源,启动会场录音时,申请会场资源失败,想定位一下失败原因;目前trace日志报错截图如下,麻烦分析一下,需要查看什么日志或其他文件请告知。【问题类别】【必填】【AICC IVR】【AICC解决方案版本】【必填】【AICC可选择版本:AICC 8.13.0 CC-CMS】【期望解决时间】【选填】尽快【问题现象描述】【必填】在申请会场资源,启动会场录音时,申请会场资源失败,请帮忙定位一下失败原因;【截图信息】
-
下面是 方法void onEvtLoginFailed(int userId, TsdkServiceAccountType serviceAccountType, TsdkLoginFailedInfo loginFailedInfo);中TsdkLoginFailedInfo的信息。TsdkLoginFailedInfo{reasonCode=50331748, reasonDescription='[TSDK_E_CALL_ERR_REASON_CODE_PAYMENTREQUIRED]:Indicates 402 payment required', lockInterval=0, residualRetryTimes=0}出现的场景是有多个账号,在华为的HW CouldLink登录了一个,我的二开软件登录另一个账号就报这个错误
yd_291839964
发表于2023-02-10 14:47:36
2023-02-10 14:47:36
最后回复
Cloudlink_Kit_公共
2023-02-14 09:32:10
115 1 -
A river of misty water shines in the clear haze, and people on both sides of the river connect the painted eaves to protect the lotus cluster from a period of light in autumn
-
视洞U30家用摄像头原来注册的手机号不用了,如何解绑旧手机号(旧手机号无法使用)?
-
直播介绍嘉宾简介徐毅 华为云DTSE技术布道师程泽 华为云DTSE技术布道师覃元元 华为云PaaS DTSE技术布道师许炳尘 华为云PaaS DTSE技术布道师董鑫武 华为云PaaS DTSE技术布道师金云飞 华为云媒体 DTSE技术布道师刘坤鹏 华为云EI DTSE技术布道师杜奇 华为云EI DTSE技术布道师直播简介《DTSE Tech Talk》直播2022年度收官盛典火热来袭,华为云大咖专家团云上齐聚,畅谈华为云黑科技,共话2023年度内容新方向,助力开发者云上成长!参与直播互动,更有华为Freelace Pro无线耳机等好礼享不停~直播链接cid:link_1直播时间2022年12月28日 15:00-17:30直播福利活动时间:即日起——2022年12月28日活动介绍:在本论坛帖提出对《DTSE Tech Talk》直播的建议或明年期望讲解的课程主题,评论热度TOP5(评论点赞量≥10起评)送华为定制T恤。参与更多活动赢华为Freelace Pro无线耳机、几米智能床头灯等好礼!请戳》》【注意事项】1、为保证您顺利领取活动奖品,请您在活动公示奖项后1个工作日内提前填写问卷反馈奖品收货信息,如您没有填写,视为自动放弃奖励。2、活动奖项公示时间截止2022年12月29日,如未填写视为弃奖。本次活动奖品将于奖项公示后30个工作日内统一发出,如遇节假日或疫情原因即往后延期,请您耐心等待。3、活动期间同类子活动每个ID(同一姓名/电话/收货地址)只能获奖一次,若重复则中奖资格顺延至下一位合格开发者,仅一次顺延。4、如活动奖品出现没有库存的情况,华为云工作人员将会替换等价值的奖品,获奖者不同意此规则视为放弃奖品。5、其他事宜请参考【华为云社区常规活动规则】。
-
文章内容:如何在YOLOX官网代码中修改–置信度预测损失 环境:pytorch1.8 损失函数修改内容: (1)置信度预测损失更换:二元交叉熵损失替换为FocalLoss或者VariFocalLoss (2)定位损失更换:IOU损失替换为GIOU、CIOU、EIOU以及a-IOU系列 提示:使用之前可以先了解YOLOX及上述损失函数原理 参考链接: YOLOX官网链接:https://github.com/Megvii-BaseDetection/YOLOX YOLOX原理解析(Bubbliiiing大佬版):https://blog.csdn.net/weixin_44791964/article/details/120476949 FocalLoss损失解析:https://cyqhn.blog.csdn.net/article/details/87343004 VariFocalLoss损失解析:https://blog.csdn.net/weixin_42096202/article/details/108567189 GIOU、CIOU、EIOU等:https://blog.csdn.net/neil3611244/article/details/113794197 a-IOU:https://blog.csdn.net/wjytbest/article/details/121513560 使用方法:直接替换即可 代码修改过程: 1、置信度预测损失更换之FocalLoss(不需要创建新的py文件) 使用:直接在YOLOX-main/yolox/models/yolo_head.py的YOLOXHead类中创建focal_loss方法 (1)首先找到置信度预测损失计算位置loss_obj,并进行替换(位置在386-405行左右) # loss_iou:定位损失;loss_obj:置信度预测损失;loss_cls:预测损失 loss_iou = ( self.iou_loss(bbox_preds.view(-1, 4)[fg_masks], reg_targets) ).sum() / num_fg #loss_obj = ( # self.bcewithlog_loss(obj_preds.view(-1, 1), obj_targets) #).sum() / num_fg loss_obj = ( self.focal_loss(obj_preds.sigmoid().view(-1, 1), obj_targets) ).sum() / num_fg loss_cls = ( self.bcewithlog_loss( cls_preds.view(-1, self.num_classes)[fg_masks], cls_targets ) ).sum() / num_fg (2)创建focal_loss方法,放到def get_l1_target(…)之前即可,代码如下: def focal_loss(self, pred, gt): pos_inds = gt.eq(1).float() neg_inds = gt.eq(0).float() pos_loss = torch.log(pred+1e-5) * torch.pow(1 - pred, 2) * pos_inds * 0.75 neg_loss = torch.log(1 - pred+1e-5) * torch.pow(pred, 2) * neg_inds * 0.25 loss = -(pos_loss + neg_loss) return loss 2、置信度预测损失更换之VariFocalLoss(代码较多,所以额外创建新的py文件) 步骤一:YOLOX-main/yolox/models文件夹下创建varifocalloss.py文件,内容如下: import torch.nn as nn import torch.nn.functional as F def reduce_loss(loss, reduction): """Reduce loss as specified. Args: loss (Tensor): Elementwise loss tensor. reduction (str): Options are "none", "mean" and "sum". Return: Tensor: Reduced loss tensor. """ reduction_enum = F._Reduction.get_enum(reduction) # none: 0, elementwise_mean:1, sum: 2 if reduction_enum == 0: return loss elif reduction_enum == 1: return loss.mean() elif reduction_enum == 2: return loss.sum() def weight_reduce_loss(loss, weight=None, reduction='mean', avg_factor=None): """Apply element-wise weight and reduce loss. Args: loss (Tensor): Element-wise loss. weight (Tensor): Element-wise weights. reduction (str): Same as built-in losses of PyTorch. avg_factor (float): Avarage factor when computing the mean of losses. Returns: Tensor: Processed loss values. """ # if weight is specified, apply element-wise weight if weight is not None: loss = loss * weight # if avg_factor is not specified, just reduce the loss if avg_factor is None: loss = reduce_loss(loss, reduction) else: # if reduction is mean, then average the loss by avg_factor if reduction == 'mean': loss = loss.sum() / avg_factor # if reduction is 'none', then do nothing, otherwise raise an error elif reduction != 'none': raise ValueError('avg_factor can not be used with reduction="sum"') return loss def varifocal_loss(pred, target, weight=None, alpha=0.75, gamma=2.0, iou_weighted=True, reduction='mean', avg_factor=None): """`Varifocal Loss `_ Args: pred (torch.Tensor): The prediction with shape (N, C), C is the number of classes target (torch.Tensor): The learning target of the iou-aware classification score with shape (N, C), C is the number of classes. weight (torch.Tensor, optional): The weight of loss for each prediction. Defaults to None. alpha (float, optional): A balance factor for the negative part of Varifocal Loss, which is different from the alpha of Focal Loss. Defaults to 0.75. gamma (float, optional): The gamma for calculating the modulating factor. Defaults to 2.0. iou_weighted (bool, optional): Whether to weight the loss of the positive example with the iou target. Defaults to True. reduction (str, optional): The method used to reduce the loss into a scalar. Defaults to 'mean'. Options are "none", "mean" and "sum". avg_factor (int, optional): Average factor that is used to average the loss. Defaults to None. """ # pred and target should be of the same size assert pred.size() == target.size() pred_sigmoid = pred.sigmoid() target = target.type_as(pred) if iou_weighted: focal_weight = target * (target > 0.0).float() + \ alpha * (pred_sigmoid - target).abs().pow(gamma) * \ (target <= 0.0).float() else: focal_weight = (target > 0.0).float() + \ alpha * (pred_sigmoid - target).abs().pow(gamma) * \ (target <= 0.0).float() loss = F.binary_cross_entropy_with_logits( pred, target, reduction='none') * focal_weight loss = weight_reduce_loss(loss, weight, reduction, avg_factor) return loss class VarifocalLoss(nn.Module): def __init__(self, use_sigmoid=True, alpha=0.75, gamma=2.0, iou_weighted=True, reduction='mean', loss_weight=1.0): """`Varifocal Loss `_ Args: use_sigmoid (bool, optional): Whether the prediction is used for sigmoid or softmax. Defaults to True. alpha (float, optional): A balance factor for the negative part of Varifocal Loss, which is different from the alpha of Focal Loss. Defaults to 0.75. gamma (float, optional): The gamma for calculating the modulating factor. Defaults to 2.0. iou_weighted (bool, optional): Whether to weight the loss of the positive examples with the iou target. Defaults to True. reduction (str, optional): The method used to reduce the loss into a scalar. Defaults to 'mean'. Options are "none", "mean" and "sum". loss_weight (float, optional): Weight of loss. Defaults to 1.0. """ super(VarifocalLoss, self).__init__() assert use_sigmoid is True, \ 'Only sigmoid varifocal loss supported now.' assert alpha >= 0.0 self.use_sigmoid = use_sigmoid self.alpha = alpha self.gamma = gamma self.iou_weighted = iou_weighted self.reduction = reduction self.loss_weight = loss_weight def forward(self, pred, target, weight=None, avg_factor=None, reduction_override=None): """Forward function. Args: pred (torch.Tensor): The prediction. target (torch.Tensor): The learning target of the prediction. weight (torch.Tensor, optional): The weight of loss for each prediction. Defaults to None. avg_factor (int, optional): Average factor that is used to average the loss. Defaults to None. reduction_override (str, optional): The reduction method used to override the original reduction method of the loss. Options are "none", "mean" and "sum". Returns: torch.Tensor: The calculated loss """ assert reduction_override in (None, 'none', 'mean', 'sum') reduction = ( reduction_override if reduction_override else self.reduction) if self.use_sigmoid: loss_cls = self.loss_weight * varifocal_loss( pred, target, weight, alpha=self.alpha, gamma=self.gamma, iou_weighted=self.iou_weighted, reduction=reduction, avg_factor=avg_factor) else: raise NotImplementedError return loss_cls 步骤二:在YOLOX-main/yolox/models/yolo_head.py中调用VarifocalLoss (1)导入 from .varifocalloss import VarifocalLoss (2)在init中实例化 self.varifocal = VarifocalLoss(reduction='none') (3)替换原有的置信度预测损失loss_obj # loss_iou:定位损失;loss_obj:置信度预测损失;loss_cls:预测损失 loss_iou = ( self.iou_loss(bbox_preds.view(-1, 4)[fg_masks], reg_targets) ).sum() / num_fg #loss_obj = ( # self.bcewithlog_loss(obj_preds.view(-1, 1), obj_targets) #).sum() / num_fg loss_obj = (self.varifocal(obj_preds.view(-1, 1), obj_targets) ).sum() / num_fg loss_cls = ( self.bcewithlog_loss( cls_preds.view(-1, self.num_classes)[fg_masks], cls_targets) ).sum() / num_fg 效果:根据个人数据集而定。FocalLoss与VariFocalLoss在我的数据集上均能提升,模型越大效果越明显。(但是在yolox-tiny上FocalLoss效果AP50会低于原来) 以上代码链接: 链接:https://pan.baidu.com/s/1ee1sQ9Eulz_mUdHTOnBe7w 提取码:8v8r ———————————————— 版权声明:本文为CSDN博主「你的陈某某」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_45679938/article/details/122343945
-
华为云实时音视频应用开发大赛正在如火如荼的进行!受大赛影响,更多开发者关注起了音视频行业和华为云SparkRTC产品。音视频行业发展前景如何?华为云的SparkRTC能为企业带来哪些好处?还有参加华为云实时音视频应用开发大赛可以享有哪些权益?…… 专业的问题要请专业的人来回答!本届大赛的首次直播,我们重磅邀请到了华为云SparkRTC产品研发负责人前来做客,看SparkRTC背后的男人能否为你指点迷津…… 华为云实时音视频应用开发大赛 首场直播>>>SparkRTC特性及应用改革<<< 直播时间:2022年3月15日 19:00嘉宾介绍:巴拉巴拉 SparkRTC研发负责人华为云研发老鸟,资深码农,在代码架构设计优化、架构解耦和微服务等方向都有很深的经验积累,目前主要负责华为云实时音视频产品的研发统筹工作。内容简介: SparkRTC产品核心竞争力介绍SparkRTC中长期演进规划大赛整体规则及权益介绍 报名方式:↓↓扫描下图海报二维码↓↓预约本场直播!
-
后疫情时代,视频云发展机遇与挑战并存疫情让几乎所有行业意识到视频服务的基础性与必要性,视频云“一夜爆红”,视频云服务加速被接纳,促使视频云的产品和能力快速更新。而到目前为止,视频被运用到各个行业,华为云视频云总监陆振宇认为,视频服务的发展总结起来有三大挑战。第一个挑战是“贵”:不仅是资源贵,音视频的开发人员也很贵;第二个挑战是“卡”:视频的“卡”,是一个代表词,可能还有黑屏、绿屏,以及各种体验问题;第3个挑战是“不够炫”,这也是一个美学概念,人们对美或对希望看到的视频内容的创新和演进的体验升级,有很高的诉求。如果仅靠单一的技术供应商,无法跟上这些诉求。 抽丝剥茧,视频云五彩斑斓的业务形态与相对稳态的底层逻辑面对行业三大挑战,华为云视频云服务,在试图找办法去解决。华为云在最开始就坚定拥抱了云原生。希望通过云原生的视频能力,使能客户和合作伙伴,解决视频业务从“On Cloud”走向“In Cloud”的问题,同时打破原有的视频生产、传输上的桎梏。基于云原生的方法和理念,华为云视频云试图找到结构性降低成本;系统性改善音视频业务体验,以及能够用好云的生态来做体验和创新的快速演进和迭代,希望由此来解决行业的三大痛点,最终重塑视频体验,激发行业创新。 千里之行始于足下,华为云视频云所覆盖的行业主要包括广电媒体、互联网视频、通信视频和行业视频。这四个行业业务形态各不相同:从内容制作上看,包括了广电媒体的专业内容制作、互联网视频的用户产生的内容、通信视频领域的交互式的实时音视频以及行业视频领域的基于机器视觉的视频输入;在分发环节,包括了广电媒体和互联网视频领域的自上而下的视频分发、通信视频领域的双向实时音视频分发和行业视频领域的自下而上的机器视觉视频信号传输,最终实现在不同行业的不同终端上播出。虽然业务形态各异,但因为都是基于音视频技术,因此在视频内容生产效率、分发成本上都有类似的诉求。 深挖源动力,视频产业上云的三大驱动力 以前,视频上云主要集中在分发领域,现在很多内容制作领域的合作伙伴,也在积极地探索内容生产制作上云。视频上云成为趋势的第一个原因,就是云ICT基础设施,能够帮助视频体验不断提升,从而推动视频产业的发展。在广电媒体领域,一部顶级综艺节目制作,有上百个机位,每个机位采用100M到200M码率,节目素材是几个PB级别;而头部电影的制作,同样也需要数个PB的素材存储能力,以及数千台服务器的渲染能力。在互联网视频领域,以直播为例,2020年上半年就消耗了几个PB的CDN流量,这也是互联网视频上云时间更早的原因;疫情极大加速了通信视频行业的发展,2020年在云上转发的实时音视频分发数有望超过1000亿分钟/月,产生约700EB/月的实时音视频流量;而行业视频领域也会迎来更大的发展,2021年将有500万摄像头接入到云上,每天将产生百EB级别的视频数据和上行流量。面向未来,随着4K、XR等业务的持续发展,视频类业务对算力、存储、带宽的消耗将呈指数级上升趋势,这些都是驱使视频业务上云的最直接原因。另外,几个视频行业痛点,也会进一步推动视频业务由On Cloud走向In Cloud。视频内容制作领域,目前全国有超过100万家视频内容制作公司,大部分公司体量不大,有好的内容创意,可以制作出与众不同的内容,但随着视频制作技术的发展,比如制作4K、8K的超高清内容,制作更加精细和真实的特效……这些公司会面临IT基础设施投入和建设的瓶颈。从内容生产流程来看,之前是线下完成内容制作后,成片渲染才会需要消耗IT基础设施;但现在视频制作过程,越来越趋向于在拍摄时进行虚拟内容的制作和渲染,驱使整个视频制作链条,对IT基础设施的消耗不仅提前而且贯穿始终。从分工来看,内容的云原生有利于内容的分布式生产制作,特别是长期持续的疫情之下,让跨国、跨区域的内容制作成为可能。视频上云将成为趋势,数据创建和存储的位置也会由端向云和边转移。预计到2025年,网络流量中90%将是音视频数据;而数据创建的位置中心+边缘将达到50%;而数据存储的位置中心+边缘将达到70%。视频的制作、处理、传输在云上将成为新常态。 勇立潮头,云原生的华为云视频云服务,重塑体验,激发创新华为云视频云服务基于华为的基础设施和基础服务,分为两层:最上面的是跨行业跨内容的生产、制作、分发全流程的各类视频云服务。另外,视频云服务依托于一张统一的媒体网络,这张媒体网络实现了5G的云网协同,确保视频内容快速传输上云;采用统一的网络架构,实现下行为主的直播、点播类业务、双向的实时音视频类业务、和上行为主的行业视频类业务,都能实现云资源的复用,从而实现成本的最优化;这张网络也提供了分布式的媒体处理框架,将视频AI等能力按需下沉到不同网络位置,保障处理的实时性。并且,整个媒体网络是统一架构,而不是一个个孤岛,能实现最高效的资源复用和最低的传输成本。 以体验为本,科技为源,锻造华为云视频云服务四大核心价值云原生的华为云视频云服务的核心价值概括起来有四点:生产效率提升:视频云服务和网络实现云网协同,无论在专线还是5G网络环境下均可实现视频的超级上行,满足视频内容快速上云的需求。同时视频云的基础设施进行针对性优化,实现线上、线下协同的内容生产制作,极大提升视频生产效率。网络高效分发:采用统一架构,无论下行为主的直播点播业务、双向的实时音视频业务和上行为主的行业视频类业务,均采用统一架构的网络,实现云基础设施的共享和复用,最优化视频传输的成本,保障体验的一致性。支持分布式的媒体处理,从实时视频AI开始,将视频AI能力按需下沉到边缘,实现实时AI处理能力,增强用户体验。业务持续创新:视频服务以原子+分子能力形态,灵活组合,随需调用,改变视频应用创新方式,帮助合作伙伴实现业务创新。覆盖视频生产、处理、分发、消费的视频能力,和视频AI的深度集成,实现云端视频的智能化生产、处理、分析。同时提供了面向未来的XR云服务能力。重塑视频体验:基于灵活的视频云服务组合,使能客户实现了各种视频业务的体验创新,并实现了商业应用。四大核心价值点,具体是如何实现的? 视频在云上的生产制作首先面对的就是视频内容传输上云的问题,华为云通过两大关键技术解决视频上云问题。对于5G网络的视频内容上传,华为云基于云网协同,通过5G网络的全时隙调度、时隙配比的优化、空口保障等各种关键技术,实现单用户数百M和总体几个G的超级上行速率。其次对于基于物理专线的视频内容上传,华为云也提供了视频内容的超级上行能力,可以达到4GB的上行速度,打破视频传输上云的瓶颈。视频传输上云后,华为对对象存储和底层文件系统进行的优化,以适配专业媒体领域的视频制作。经实测,云转码的效率提升10倍、支持16轨的非线编并行处理、合片速度提升3倍并实现了7轨并发合成。这样整个内容制作过程的效率得到提升,极大缩短了内容制作的周期。其次,在内容制作方面,华为云提供了超高清制播云,帮助客户实现4K内容的高效生产。制播云包括了云导播、云媒资和云编辑三大核心能力,服务于大型活动制播、组合画面制播、事件新闻制播、网红个人直播等各种场景。视频拍摄现场可采用摄像机、手机、5G背包等不同的拍摄方式,通过专线+5G网络上传到云端,传输过程可采用H.264/H.265编码、RTMP/SRT传输、支持1080P/4K超高清视频内容,云导播支持视频切换、调音混音、图文包装等丰富的能力。直播信号通过云导播后,可以录制到云媒体中进行统一管理,并通过云编辑实现了更加丰富的剪辑、AI处理、特效、图文包装等能力。总之,在视频内容生产端,一方面华为云基础设施支持了视频内容的超级上行,并让现有的视频制作工具在云上运行时,比线下运行时效率提升了数倍;另一方面,华为云也提供了强大的制播云服务能力,让各类视频业务场景上云。关于实现网络高效分发,整个视频产业现状是不同的视频业务,都有一个媒体网络支撑,而这些媒体网络都是互相割裂的,呈烟囱式的孤岛状态,他们之间的资源无法充分复用,比如在线教育领域,背后依托的是RTC传输网络,互联网视频的直播、点播,依托的是CDN直播网络,行业视频依托的是连接几百万台摄像机在云上进行视频处理的网络,这几个网络之前都是互相割裂的。华为云视频云从提供视频服务之初,就希望整个连接千行百业的媒体网络是统一架构和资源可复用。这不仅是一个技术架构统一,也包括资源架构的统一。资源架构的统一意味着这个网络虽然服务于千行百业,但它用到的基础设施、网络资源都是可以在不同的行业进行复用的,实现高效传输和优化成本。其次,视频能力需要分布在媒体网络的不同位置。例如视频AI的能力,终端侧呈现的美颜和各种特效,目前都是在终端侧处理。受限于终端的能力,特效不够逼真;而如果将端侧特效上移到云端,虽然理论上特效的丰富性和逼真程度会大大增加,但会带来更多的时延问题,影响用户体验。华为RTC提供了实时媒体AI的能力,通过开放式的函数运行框架,让这些视频AI的能力灵活的按需部署到媒体网络的不同位置。这套架构中,华为元戎函数计算平台让算法以函数容器的方式进行传输,并通过华为云IEF边缘云服务在网络边缘为用户就近提供服务。这套架构也是开放式的,兼容了华为云EI平台提供的AI算法,也支持接入第三方的AI算法能力。通过这套架构,让媒体AI能力按需就近部署,既充分利用了云强大的基础设施,实现了更高效和逼真的视频AI,又就近部署到了靠近用户的网络边缘,兼顾了用户体验时延问题。另外,整个媒体网络是去中心化的,网络内视频的路由均取决于用户体验和传输成本,通过智能调度进行优化选择,具体而言有四点:第一,所有服务在边缘站点实现资源的共享,最大化复用带宽成本,实现所有业务成本最优。第二,所有网络数据均汇聚到大数据平台,智能调度通过分析这些实时数据选择最优路径,确保最短的路径转发,实现体验最优和时延最低。第三,长距离传输引入ADN,保障长距离传输时的体验。最后,视频AI等能力按需部署到不同网络位置,减少回源到中心处理的流量,降低传输成本。总之,华为媒体网络基于统一架构,通过智能调度动态计算最优路径,通过融合型边缘站点实现资源复用,保障视频体验的同时实现了最优的成本。关于业务持续创新,华为云视频云分了两层,一层是原子服务层,没有任何业务逻辑,就是我们的媒体服务能力。第二层是对外开放的分子服务层,这些分子服务能力都是跨行业使用的,一方面分子服务能力跨越了视频的生产、处理和分发的不同环节,另一方面分子服务能力支持不同行业的使用。不同行业在做业务创新时,可以灵活选用这些分子服务能力进进行组合,希望通过分子服务的组合,让行业持续创新。过去两年,华为云视频云服务,做了很多创新,如分子服务的灵活组合、云制播、超级上行、媒体处理、视频AI等能力。与合作伙伴一起探索在云上做4K视频的这个制作;通过5G背包加5G的上行,实现赛事云直播,我们把整个赛事的直播,直接通过5G的方式传输到云上,然后进行直播的分发,减少本地云导播成本的消耗;在在线教育领域,我们跟合作伙伴做了子母课堂,基于低时延的RTC直播服务,在千人课堂上也能分组,让大课堂用户享受小班课的体验,有效的提升了用户up值;现在也和一些机构探索,包括8K的VR视频,自由视角的直播服务,希望把视频云的服务组合,应用到演唱会、赛事直播等场景。我们也会探索,将自由视角、VR视频等能力,由专业级变成普惠级,运用到短视频或网红直播领域,让更多的行业和用户都能够享受到这些能力,实现产业升级。 未来可期,云原生的华为云视频云服务,助力千行百业创新升级华为云视频云坚持技术普惠理念,打造面向全行业共享的媒体服务,打造视频云业务的黑土地。我们也希望大家一起来推进技术的普及,携手降低技术门槛,提高性价比,建立共同的标准,规范化发展,让实时音视频成为5G时代的基础服务,使能千行百业创新,让行业拥有五彩斑斓的变化,畅享数字化技术带来的便利。
-
随着视频业务不断升级,用户对体验的要求越来越高,比如要互动性更强、玩法更多样,体验更酷炫等。另外,直播业务、RTC业务,内容同质化比较严重,内容创造、用户体验也都遇到了天花板,这些都需要一些技术去打破它。我们跟斗鱼长期碰撞,共同探索后,得到一个命题:通过媒体AI去做这个事情。刚才斗鱼肖总的视频里面也提到了很多直播特效,包括像美颜、美型、虚拟主播、背景替换等,同时我们面向在线教育的场景,也会有一些像课堂评测的能力,都是基于媒体AI去做的。构建媒体AI目前面临的三大痛点当前,媒体AI的构建有几大痛点:终端:类型多、算力弱。目前很多的媒体AI能力都是在终端实现的,虽然终端的算力在不断提升,但像一些高复杂度的特效是做不了的,比如虚拟人物。背景替换当前的效果也很一般,你能看出一个明显的轮廓,当然更不要说实现对标电影级特效的背景替换了。云端:实时互动弱、成本高。现在很多在云端去做的视频AI,一般都是偏向于离线的业务,它对互动体验的满足性相对比较低。在直播实时互动的时代,这是无法满足需求的。而且因为音视频数据在边缘和云端源站相互传输,引入较高的带宽成本。创新门槛高、生态封闭。现在AI的能力,各厂家都是独立开发,各玩各的,生态相对是比较封闭的。我们希望基于云原生,和伙伴一起构建一个边云协同的实时媒体AI的能力,去解决上述痛点,加速视频业务创新。 实时媒体AI的定义及核心价值我们给实时媒体AI做了一个定义,基于华为云原生的边缘、计算、容器、存储、网络等服务能力,构建丰富的实时媒体AI处理能力,同时联同伙伴打造生态开放的AI算法市场,加速视频业务创新,为客户提供差异化竞争力,为用户提供更优质的体验。先举个简单的例子,我们把当前直播和RTC里端侧做的一些特效,通过边缘云的方式来实现,加入更多更酷炫的特效,比如效果更好的背景替换,提升互动性的AR卡通、虚拟人物等等。当前,实时媒体AI还处在一个探索推进的状态中,我们希望其能实现如下4个核心价值:玩法更多。以后直播和RTC业务有更多的AI能力可以用,可以组合,来实现更多更酷炫的创新玩法;体验更优。有了这些创新玩法后,用户对实时互动的体验要求是比较高的,我们希望实现“延迟无感”的体验,与本地使用高端机是同样的体验效果。还有一点针对算法开发者来说的,可以基于云的平台,更快地发布、更快地开发,更快地去体验验证。成本更低。目前大部分媒体AI的能力是基于端侧实现的,因为一提到云侧,就会想到GPU、各种硬件平台的成本会比较高,但我们希望能把这块的成本降下来。这里包括两个部分,一是用华为云统一的软硬件资源,提高资源的复用率,降低每一路资源成本,二是基于云上统一平台,一键更新,无需适配多种终端,来降低算法开发和APP更新的成本。生态开放。我们希望构建一个开放的AI算法生态市场,避免各家闭门造车、各玩各的的状态,希望能通过AI算法的互通共享,来降低算法开发门槛。这些核心价值的实现,都是基于云原生,下面将从实时媒体AI的云原生架构、实时处理框架、算法开放几个方面详细介绍一下如何通过云原生实现核心价值的。实时媒体AI云原生架构首先介绍一下实时媒体AI基于云原生的架构。从下往上看,首先它是基于华为云的边缘节点,用华为云IEF边缘管理服务对整个的节点软硬件资源做一个纳管,进行调度。其次,框架基于华为云EI平台,提供ModelArts训练等多种能力,支持Tensorflow、PyTorch等主流深度学习框架。框架里还包含一个SWR(镜像仓库)的服务,这个服务既可以集成发布华为EI自研算法镜像,也可以集成第三方基于EI的算法镜像。还有一个关键点要介绍,我们提供一个高性能边缘函数计算能力,这个能力实际上是面向实时媒体AI业务做的一个函数级处理框架结构,它可以非常高性能地将所有的AI算法实时调度到边缘节点上,并对边缘函数进行编排。实时媒体AI平台,用于卸载终端上的媒体处理能力,减少媒体处理适配不同终端平台的开发量,并保证不同终端平台体验效果一致,面向不同解决方案提供归一化的媒体处理能力。我们通过这个架构,提供更多更优的媒体AI玩法,同时,它统一算法的创新发开平台,可以避免多终端适配。实时处理函数框架如前面所述,实时媒体AI的核心是实时,如何最大程度的降低端到端处理时延,让用户对延迟“无感”。实时媒体AI除了将实时处理能力下沉到边缘,就近提供处理、降低链路时延之外,还重点构建了实时处理函数框架,用来降低处理时延。该处理框架主要以下几个方面降低端到端处理时延:1)基于华为云昇腾、鲲鹏等硬件,对AI算法、视频编解码算法做加速处理;2)通过高速总线加速AI算法容器之间视频原始数据传输;3)通过函数资源池预热机制提前加载AI算法,降低启动时延等。 整个处理流程,我们是希望能做到100毫秒以内,加上网络的时延,能做到300毫秒以内。这样的话,对用户而言,延迟是无感知的。 云原生算法开放如前面所说,我们不仅仅是构建一个实时媒体AI服务能力,更希望的是构建面向多种业务场景的实时媒体AI算法生态,希望更多的伙伴参与进来,一起推动业务创新、用户体验提升。基于这个想法,我们构建了一个算法开放的流程,包括所有实时媒体AI算法的标准算法接口和集成流程,也包括算法生态市场的构建,我们都会陆续的推出。这样的话,不管是基于华为EI平台去构建的AI算法,还是考虑到数据的隐私性,基于自己的平台去构建的AI算法,都可以通过这个流程集成到我们实时媒体AI里面。 实时媒体AI应用案例—斗鱼基于华为云云原生RTC实时音视频服务以及实时媒体AI能力,斗鱼实现实时云端特效,将端侧难以实现的特效能力向云侧转移,为用户提供“延迟无感”的实时互动体验,促进业务创新,提升业务粘性。华为云领先的云原生技术,让斗鱼可以专注云侧创新,避免适配多种终端,快速验证创新效果,大幅提升研发效能。同时,还能避免SDK频繁更新带来的用户多次下载,提升用户使用体验。基于华为云和斗鱼的算法,双方还构筑了一个富有想象空间的算法生态。面向未来,双方将持续深化合作,基于AR/VR提供更多创新玩法,结合华为云算法商城为主播带来更多场景选择,追求更优用户体验。目前我们正在跟斗鱼一起做美颜、美型、滤镜、贴纸等实时云端特效,这些特效会集成在斗鱼的直播平台里面,后续虚拟形象、背景替换等特效也会陆续上线。 低时延云端美颜、背景替换DEMO第一个DEMO是当前跟斗鱼一起做的一个低时延云端美颜特效,里面包括美白,磨皮等一系列的处理。这个端到端的时延,目前我们在网络比较好的情况下,可以做到150毫秒。正如我们看到的两个对比视频,基本上是同步的,肉眼看不出差异性。另外的一个DEMO是背景替换的。是一个知识视频里面做的背景替换。后面还会把背景替换效果做得更好,能像电影级的,比如说把背景替换和美颜美型、虚拟形象等组合叠加,做出更好更炫的效果。 最后我对今天分享的实时媒体AI做个总结。我们希望实时媒体AI是作为加速视频业务创新的一个关键手段,能够提供更多的处理能力,更优的互动体验,更低的创新成本,当然也希望更多AI算法合作伙伴们的加入,一起来共同打造一个开放生态!
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签