虚拟数字人项目产品系统

我要开发同款
王老师187360857562026年01月07日
27阅读

技术信息

语言技术
C++C
系统类型
Linux嵌入式硬件
行业分类
音视频多媒体

作品详情

行业场景

数字人与人交互场景,移动客服不想露脸,需要一个会动的表情任务回答客户的问题,用户通过视频通话满对面解决客户问题,感觉更真实。当人这只是人物动作替换,在客服上的应用,像名人的数字人分身,可以在直播行业卖货,比如刘强东分身。

功能介绍

1.HW虚拟数字人项目:主要编写数字人服务音视频业务逻辑。业务场景是电脑通过软电话采集人像及声音,业务启动时UCP调度软电话的rtp音视频流网络传输给数字人服务器(ubuntu);数字人服务业务用c/c++编写,数字人服务进行 rtp音视频流的接收,包长度(大于12Byte等)及协议 version校验和时间戳校验等,rtp数据的缓存(重复序号包丢弃,排序等),rtp数据的组帧 ( FU-A分片:根据首包开始中间保存尾包结束),ringbuffer 进行组帧后的数据缓存,调用 ffmpeg的 api把h264解码为 YUV420P数据,使用 libyuv将 YUV420p颜色编码转换成 RGB24颜色编码,转换后的数据使用unique_ptr智能指针保存,使用 move右值传递,控制权传给使用模块。把 RGB数据写入共享内存传给动作捕获算法模块,动作捕获输出的3D位置坐标,通过 socket发送给渲染模块,渲染后产生连续的 RGB24图片输出,通过共享内存获取到 RGB24 图片,使用libyuv将RGB24颜色编码转换成 YUV420p颜色编码,再将YUV420P转换成 NV12格式,调用 ffmpeg的api进行GPU硬件加速编码(nvenc),编码输出h264视频数据,和缓存的音频做同步,形成一个虚拟的数字人并附电话原声流,音视频数据分包,添加 rtp协议头信息,socket进行rtp流控发送给UCP调度的IP 。协议模块使用 websockets开源库发送私有json消息,用于注册 UCP ,注册注销UCP,当会话开始前接收 begin消息其携带有媒体协商(UCP接收要用的媒体信息IP端口等),进行对应端口的接收,媒体数据的解析,并回复begin消息其携带媒体信息(本地发送用的媒体信息IP端口等),媒体协商之后建立rtp通道媒体传输;接收end消息进行rtp媒体发送

项目实现

我负责业务逻辑ucp协议交互对接,视频格式端口交换,视频流rtp接收,视频组帧,视频流解码,视频帧送算法,算法结果送渲染,接收渲染的图,图编码,分包,匀速透传,rtp协议发送。

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论