diff --git a/.obsidian/plugins/various-complements/data.json b/.obsidian/plugins/various-complements/data.json index e321a41..bd604d2 100644 --- a/.obsidian/plugins/various-complements/data.json +++ b/.obsidian/plugins/various-complements/data.json @@ -142,6 +142,14 @@ "lastUpdated": 1691299621696 } } + }, + "VMC推流": { + "VMC推流": { + "currentFile": { + "count": 1, + "lastUpdated": 1691401283233 + } + } } } } \ No newline at end of file diff --git a/02-Note/DAWA/AI/AIVirtualIdel动画方案.md b/02-Note/DAWA/AI/AIVirtualIdel动画方案.md index 7aadefe..d3bce08 100644 --- a/02-Note/DAWA/AI/AIVirtualIdel动画方案.md +++ b/02-Note/DAWA/AI/AIVirtualIdel动画方案.md @@ -5,4 +5,55 @@ ## 迭代动画状态机方案 1. 由ChatGPT模型AI使用之前录制动画素材拼凑出N组排列组合。 2. 动画资产以及排列数据进行定期热更新。(自动 | 人工) -3. 实时直播时由ChatGPT发送指定排列组合的名称或者ID给客户端,之后客户端播放对应的排列组合动画。 \ No newline at end of file +3. 实时直播时由ChatGPT发送指定排列组合的名称或者ID给客户端,之后客户端播放对应的排列组合动画。 + +# 推流方案 +推流视频: +- https://www.bilibili.com/video/BV1ub4y1Y74K/?spm_id_from=333.337.search-card.all.click&vd_source=d47c0bb42f9c72fd7d74562185cee290 +- https://www.youtube.com/watch?v=ufU9me5pDYE&t=2s + +## VMC + +## OSC +一种远程控制协议 +- https://docs.unrealengine.com/5.1/en-US/osc-plugin-overview-for-unreal-engine/ +- http://openstagecontrol.ammd.net/docs/getting-started/introduction/ + - https://www.youtube.com/watch?v=42eDMmvokMM + - https://www.youtube.com/watch?v=9CkKPCBys44 + +### 协议分析 +一种基于UDP的协议,传输的数据主要分为Bundle 与 Message。 + +- https://protocol.vmc.info/specification + - performer-spec:https://protocol.vmc.info/performer-spec + - marionette-spec:https://protocol.vmc.info/marionette-spec + +VMC协议基本上实现了开放声音控制(OSC)单向UDP通信来进行通信。 + +具体沟通规定如下: + +- 通信时使用适当类型的 OSC。 +- 字符串采用 UTF-8 编码,可以用日语发送。 +- 至于端口号,Marionette 将监听端口:39539,而 Performer 将监听端口:39540,但从 UX 角度来看,我们建议您更改发送地址 + 和接收端口。 +- 数据包在适当的范围内(1500 字节以内)进行捆绑,并且应由接收方进行适当的处​​理。 +- 传输周期以发送方的任意间隔执行。并非所有消息都会在每个周期发送。 + 另外,发送方应该能够调整发送周期的间隔,或者以足够低的频率发送。 +- 接收方应丢弃不必要的消息。您不必处理所有消息。 +- 发送或接收哪些消息取决于两者的实现。 +- 未知地址,应忽略太多参数。 +- 如果您发现参数太少或类型与扩展规范中定义的参数不同,请将它们视为错误或忽略它们。 + +![](https://protocol.vmc.info/flow.gif) +![](https://protocol.vmc.info/layer.png) +### 数据类型 +数据以结构体形式进行序列化/反系列化。可携带的数据类型为: +- int32、int64、uint64 +- float32 +- String +- blob + +## UE Remote Control +https://docs.unrealengine.com/5.1/en-US/remote-control-for-unreal-engine/ + +基于WebSocket \ No newline at end of file