vault backup: 2023-11-08 18:16:49

This commit is contained in:
2023-11-08 18:16:50 +08:00
parent 7641b9750f
commit df1082fbf3
4 changed files with 24 additions and 5 deletions

View File

@@ -15,9 +15,18 @@
1. 文字 => 声音 => 表情(口型)
2. 文字 => 动作
# 设计思路
1. 服务器发送的数据都使用一个基于玩家发送对话生成的UUID作为时间戳。
2. 数据采用Stream式发送。
# 推流设计思路
1. 服务器发送的数据都使用一个基于玩家发送对话生成的UUID作为时间戳(或许还需要一个**用户ID**
2. 数据采用Stream式发送。动作与口型使用VMC来传输音频使用RTMP协议来传输。其中推流模式分为2种实现
1. Stream式实时接受所有数据。
2. Stream式缓存预读。
3. 架构
1. 根据上面说得2种模式在服务端控制时间戳的重置**数据截断,并且发送给客户端进行截断与时间轴统一操作**)。
1. Puerts的Nodejs负责接收数据以及管理状态机来管理接受的推流数据以及是否播放。**相关核心函数写在C++中**
2. AIVirtualIdolServer端接受到动作数据之后发送给AIVirtualIdol。
3. RTMP的音频推流AI端需要部署RTMP推流器AIVirtualIdolServer部署RTMP ServerAIVirtualIdol接受Server数据后播放。
UE中的RTMP实现
参考RTMP
- RTMP协议 01 入门:https://www.jianshu.com/p/715f37b1202f
@@ -63,6 +72,14 @@ Message被拆分成一个或多个Chunk然后在网络上发送
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
# 开发计划
1. C++实现RecivedDataManagerComponent管理音频、口型&动作数据、文字。
2. Puerts实现数据接收逻辑。
3. 实现声音播放逻辑。
4. 实现口型&动作动画节点。
5. 实现动画状态机结构初版。
# 声音
## Runtime Import Sound
使用`RuntimeAudioImporter`插件里面的解码使用了第三方库https://github.com/mackron/dr_libs。导入Sound使用了`UImportedSoundWave::PopulateAudioDataFromDecodedInfo()`