目录
序言
本项目基于数据包提供了一个在原版Minecraft中播放序列图片实现伪播放视频效果
数据包主要有以下用途
自动化计算帧率、批量处理帧文件
提供自适应帧率以提升性能 提供接口用于快速配置,播放资源包中的序列图片
也提供了一些变量用于快速添加资源包中的序列图片实现快速播放
警告
此数据包默认使用装备头部来触发装备遮罩,如果不想使用头部装备栏可以自行在dp中更改(目前V2.0需要这样做)
资源包中添加了一个透明模型用于给与装备遮罩物品来达到"伪"无物品给与即可播放的效果
序列图片指将视频或动画的每一帧保存为独立的静态图像文件,并按帧序号顺序排列的一组图片文件。它常用于影视后期、3D 动画、特效制作等领域,因其跨平台兼容性高、画质无损而被广泛采用。
下载
视频要求
需要为图片序列(.png格式)
使用加速游戏刻播放60帧视频
视频最好为20帧的,如果使用60帧的视频需要将tick设置为60
/tick rate 60设置目标游戏刻速率。
使用插帧播放60帧视频
视频配置中frame_rate是原视频帧率,如果视频为60帧可以这样配置
frame_rate:60
对话框
可以使用快捷键G或者在游戏菜单打开
视频播放必须使用G键或者使用指令打开 dialog show @s animations:open_menu
玩家需要选择视频尺寸 19201080为16:9 25601080为16:10
如果要使用视频播放页面请先在语言设置中选择语言
配置
这是data storage命名(一般与下文的name保持一致)
* frame_zero:
自动处理视频帧,默认不用填写,播放时自动根据帧数填写* frame:
帧数 控制玩家目前播放的视频帧的物品* path:
路径 指定序列图片在资源包纹理文件夹的位置* name:
视频名称 匹配帧号前的名称* blender:
使用blender输出的图片序列请开启此选项* blender_name:
使用blender请留空* frame_rate:
帧率 用于自定义帧率* sound:
视频声音 需要开启sound_switch才能使用* sound_switch:
声音是否启用* max_frame:
最大帧数* slot:
设置物品穿戴在哪时启用遮罩
此值应为:head,body,chest,feet,legs,mainhand,offhand,saddle其中之一* resolution:
视频尺寸* switch:
是否开启此功能
* default_size:
默认视频尺寸
* size_list:
是否启用一下尺寸
* 1:
是否支持16:9的播放尺寸
* 2:
是否支持16:10的播放尺寸
* 1:
是否支持3:2的播放尺寸
* 1:
是否支持4:3的播放尺寸
* language:
视频名称显示语言* default_language:
默认显示语言(填写语言代码)
* zh-cn: 填写翻译文本,其它语言也相同
参数解析
frame_zero
查看第一个图片的变化一般为全0,查看最后一个0前面有几个0,将这些0写到frame_zero里,如video0000.png应该将000写如, 如下
{frame_zero:"000"}
frame
帧数 用来控制玩家目前播放的视频帧(图片) 例如
path
路径
用来指定视频输出的物品文件位置 例如
{video:text_video/}
name
视频名称 用来匹配帧号前的名称,需要和命令存储名称一致即video:后面的名称注意: 如果使用blender请按照情况填写blender_name 例如 video0000.png 数字前面的video就是名称,因此此处应该这样写
{name:"video"}
名称建议越短越好(因为使用宏,字符越少性能消耗越少)
blender
使用blender输出的图片序列请开启此选项 {blender:"true/false"}
blender_name
使用blender请留空(不用blender无限填写) 如果帧号前有名称请按照上方视频名称提到的方式填写{blender_name:""}
frame_rate
帧率
用于自定义帧率, 只支持服务器使用,服务器使用需要设置 function-permission-level=3 如果不是服务器也需要填写视频实际帧率用于自适应帧率,如果服务器需要使用请自行在start/start_macros0开启$tick rate $(frame_rate)将井号删除即可,如果需要还原游戏刻请在stop里写上$tick rate 20
sound
视频声音 需要开启sound_switch才能使用 如果视频有声音需要在此写上sounds.json定义的视频声音播放 参考playsound来写
sound_switch
声音是否启用 输入false/true来控制声音是否开启/视频是否需要播放声音 {sound_switch:"false/true"}
max_frame
最大帧数 视频的最大帧数
slot
装备槽
设置物品穿戴在哪时启用遮罩此值应为:head,body,chest,feet,legs,mainhand,offhand,saddle其中之一
resolution
视频尺寸设置
视频路径应为 path填写的路径/视频尺寸/图片序列文件 如 video:text_video/16:9/0001.png
switch
是否开启多视频尺寸功能(必须要支持多视频尺寸才能开启) (true/false)
default_size
默认尺寸,填写数字代号即size_list的键名 default_size:1
size_list
是否支持其中的视频尺寸(true/false) 注意!1代表的是16:92代表的是16:103代表的是3:24代表的是4:3请勿随便开启选项
language
在dialog中视频名称显示的语言文字以及对应的翻译
default_language
默认语言,值为以下的键名
1:"en-us",
2:"zh-cn",
3:"zh-hk",
4:"zh-mo",
5:"zh-sg",
6:"zh-tw",
7:"en-au",
8:"en-ca",
9:"en-in",
10:"en-gb",
11:"fr-fr",
12:"de-de",
13:"ja",
14:"kn",
15:"es-es",
16:"ar",
17:"ko",
18:"in-in"键名后面对应的是支持的语言代码,和下文提到的语言代码相同
语言翻译文本
应该在language列表中填写 按照以下格式: 语言代码:"翻译文本" 例如:en-us:"School"
示例
视频播放配置
Function
data merge storage video:school \
{video:\
{frame_zero:"000",\
frame:"0",\
path:"animation:school/",\
name:"school",\
blender_name:"",\
frame_rate:"60",\
sound:"",\
sound_switch:false,\
max_frame:740,\
blender:true,\
slot:"head",\
resolution:{\
switch:false,\
default_size:1,\
size_list:{\
1:true,\
2:false,\
3:false,\
4:false\
}\
},\
language:{\
default_language:"en-us",\
en-us:"School",\
zh-cn:"学校"\
}\
}\
}
function animations:video_add/main with storage video:school video最后一行function必须在配置文件结尾写,且video:后面的命名必须和name值相同
资源包配置
sounds.json
{
"video_text":{
"sounds":[
{
"name": "animation:video/video_text",
"stream": true,
"volume": 0.8,
"weight": 1
}
]
},
"":{
"name": "",
"stream": true,
"volume": 0.8,
"weight": 1
}
}其中video_text应写在sound配置项中
{sound:"video_text"}
你可以添加很多这种配置来添加新的视频声音 事例下方为空白模板
更多配置内容可以看
你可以在资源包内的材质文件夹里新建一个名为Video的视频文件夹存放图片序列
video/video_text/video0000.png
video/video_text/video....
如果命名空间为video 那么path可以这样写 {video:video/video_text}
原理
可以参考
By CR_019
指令
播放
开始播放
/function animations:start {video_name:"video_name"}video_name就是上文data中写入的字符串
终止播放
/function animations:stop暂停播放
/function animations:pause继续播放
/function animations:continue_play删除单个玩家的播放设置
/function animations:player_video_play/storages/delete/delete_player {name:"name"}name为玩家名
删除所有玩家的播放设置
/function animations:player_video_play/storages/delete/all_storages/delete删除单一视频配置
/function animations:video_list/delete_only {name:"name"}name为视频配置项中的name
删除所有视频配置
/function animations:video_list/delete_all关于序列图片
如何导出序列图片
使用Adobe Animate导出PNG序列图 步骤: 打开您要导出的项目。 选择“文件”>“导出”>“导出图像序列”。 选择导出格式(如PNG)并设置文件名和保存位置。 点击“导出”以完成操作。
使用Premiere Pro导出序列图片 步骤: 在Premiere Pro中打开您的项目。 选择“文件”>“共享”>“导出图像序列”。 在弹出的窗口中选择导出格式(如PNG、TIFF等)并设置相关参数。 点击“导出”以保存图像序列。
使用Apple Motion导出图像序列 步骤: 打开您的Motion项目。 选择“文件”>“共享”>“导出图像序列”。 在“导出图像序列”窗口中,选择所需的导出格式和色彩空间。 点击“导出”以完成操作。
使用Processing导出图像序列 步骤: 在Processing中编写代码以处理图像。 使用saveFrame("frame-####.png");命令导出图像序列。 运行程序以生成图像序列。
使用Aseprite导出图像序列 步骤: 打开您的精灵文件。 选择“文件”>“导出”>“另存为”。 输入文件名并选择文件格式(如PNG),确保文件名包含编号。 点击“导出”以保存图像序列。
以上是几种常见软件导出图像序列的方法,您可以根据自己的需求选择合适的软件和步骤进行操作。
推荐尺寸
由于我的世界支持自适应纹理,推荐导出较小尺寸的图片以节约硬盘空间减小资源包大小 推荐导出960 * 540大小的图片
注意事项
由于mojang石山代码,导致播放完的图片会一直在内存中无法清理,容易触发爆内存的问题,不建议在内存过小的情况下使用 Bug:MC-277837
