vault backup: 2023-11-08 18:16:49
This commit is contained in:
@@ -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 Server;AIVirtualIdol接受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()`
|
||||
|
Reference in New Issue
Block a user