Logo
    打开 Gandi IDE
    媒体助手 Media Utils 文档

    媒体助手 Media Utils 文档

    📚 返回主页面
    ‣
    更多链接

    其他扩展文档

    如何使用 Gandi 多莉实现检测到底碰到了哪个克隆体
    Simple MMO
    媒体助手 Media Utils 文档
    Archive Code
    Arkos Code Snippets
    Regex VI
    4D Pocket
    Data Utils
    Pure Math
    A* 奥德赛
    社区连接 Kontakt
    Featured
    Sugar
    Canvas
    Physics Engine
    Fermi
    Terminal
    🎮
    移动端配置按键
    G-Kamera
    AI Hub
    Animate Text 艺术字 2.0
    Quake 雷神

    为什么要使用媒体助手 Media Utils?

    如果你遇到这些问题,那媒体助手可以帮到你:

    1. 【懒加载】作品中使用背景音乐,但加载太多背景音乐导致作品容量太大,加载缓慢,卡 99%
    2. 【懒加载】作品中大量 CV,希望根据玩家游戏进度加载音频内容
    3. 【视频播放】做 AVG 游戏, 背景希望是一个循环播放的视频,导入成帧动画后文件尺寸激增
    4. 【视频播放】游戏前 OP 想加视频
    5. 【视频播放】关卡完成后想播放效果炸裂的全屏特效
    6. 【音频特效】背景音乐循环播放,但当菜单出来的时候,希望音乐在不间断的情况下加特效
    7. 【音频特效】游戏中想让玩家在受伤后音效发生变化,有一种在浴室里听到隔壁邻居放歌的感觉

    使用媒体助手的最佳实践案例

    Lazyload 如何正确地加载音频视频

    懒加载,更好的理解可以是延迟加载。 指的是程序不是在首次加载所有的内容,而是只有在用户需要的时候再加载内容。

    getgandi.com

    Lazyload 如何正确地加载音频视频

    模块

    Media Utils 主要分为 5 个模块:

    资源相关

    加载音频视频

    image
    image

    载入媒体库中的资源到项目中,命名为 【key】。 其中【key】 是一个唯一的编号。 以下情况媒体库会这样处理:

    加载音视频事件

    image
    image

    当资源被成功加载后,事件会被触发,其中参数 name 为在加载时对应的命名。

    资源释放及状态查询

    image

    为了节约内存使用, 当资源不再使用时,请用上面的积木移出资源。

    image

    可以得到载入了的音频或视频。以 JSON Array 的形式返回,例如:

    ["bgm","video2","audio3"]

    视频相关

    判断是否载入的最好办法是使用事件驱动,也就是上面部分提到的事件。 如果特殊情况,不能使用事件驱动,可以下面语句判断资源是否载入:

    image

    当视频资源被载入后,就能用视频相关的代码来控制视频的渲染和播放了。

    其中最核心的是视频播放相关的功能:

    视频播放

    image

    在视频被载入后,播放前,需要告诉引擎如何绘制视频。 主要有三个部分的设置: 1. 绘制到哪个角色的上面还是下面; 2. 绘制到相对这个角色的 x, y 偏移量; 3. 绘制的视频大小。 注意以下情况的处理:

    image

    设置好绘制位置后,就能播放视频了。 这句代码可以设置视频从什么时间点播放,以及播放完毕后做什么。 播放完毕后可以选择是【停止】 或者【循环】。

    image

    以及【暂停】【继续】播放视频,或者【移出】。 移出会销毁这个视频资源,不再占用内存。

    image

    在视频的全周期可以收到视频的各种事件,包括:【时长改变】、【载入进度】变化、播放时【当前时间改变】、【结束】播放、开始【播放】、【暂停】播放以及播放【错误】。

    image

    当然,当视频载入后,你也可以获得视频的各种信息,包括当前的【音量(dB)】、【当前进度时间】、视频的总【时长】、视频原始的【宽】和【高】

    image

    当然,你也可以随时设置视频的音量。

    ☝
    注意!《dB》 在媒体助手中,所有音量使用的单位不是 Scratch 中的百分比,而是专业音频领域使用的 dB。 简单地说: * 0 dB = 音量 100% * 3 dB = 音量 200% * -3 dB = 音量 50% * -6 dB = 音量 25% * -12 dB = 音量 12.5% 那为什么音频领域要使用 dB 作为单位的?请阅读 什么是 dB 单位,为什么音频里要用 dB

    音乐相关

    和视频一样,最佳实践是通过事件来判断某个音频是否已经载入成功。 当然,你也可以用下面的代码来做判断:

    image

    当音频载入后,就能对音频进入播放的操作了。 和视频不一样的是,音频不需要设置依附于哪个角色。

    image

    使用上面语句就能播放名为 loop 的音频,并且是从 0 秒开始播放。 播放完毕后可以选择是【循环】播放,还是【停止】播放。

    image

    当然,过程中,你也可以随时【暂停】播放、【继续】播放 或者【移出】资源(也就是销毁这个音频资源)

    image

    你可以像视频一样获得音频的【音量】、【当前时间】和【音频时长】

    image

    当然,你也可以改变音频的音量。

    和一般的调整音量不一样的是,媒体助手为像 DJ 一样按你的指令在一定的时间内把音量做调整。

    这个十分有用。 这会让你的游戏音量变化十分的自然,不会突然变大或变小。

    当然,音乐播放中音量也是使用的 dB 为单位。 不知道为什么的话,请阅读

    最后,和视频一样,我们推荐的编程模式也是事件驱动式的。 也就是使用下面的事件来驱动程序的功能:

    image

    其中事件包括音频【播放】时、【播放完毕】时、【暂停】时和重新【继续播放】时。

    音频特效相关

    当已经能播放音频和视频后,接下来,在 Gandi 中,你是可以把音频视频的轨道加上各种音乐特效的。 所有的音乐特效可以加在:

    1. 【Scratch】 原生通道上,也就是所有在 Scratch 原生【声音】里播放的声音都会到这个通道上
    2. 【媒体库】通道上, 也就是用媒体助手加载的音频和视频会到这个通道
    3. 【主通道】上,也就是上面的 【Scratch】通道和【媒体库】通道加了特效后,都会接入【主通道】

    目前开放的特效为:

    以上所有特效对应的积木如下:

    image

    其中,【混响】和【延迟】有多出 “打开效果到【xx】”这个部分。 这个部分在音频里指的就是 干湿度(Dry/Wet),0 为干, 1 为湿。 也就是对应效率器的效果占比。 0 为占比 0%,1 为占比 100%

    关于什么是 dB,为什么要使用 dB,请见文章

    其他实验功能

    其他实验功能会在实验完成后成为正式的功能。

    目前在实验的功能是合成器。 提供了 4 种 8 bit 音乐的常见合成器。【脉冲波】【方波】【三角波】和白【噪音】。 设置播放音符如果是单音用 [C/D/E/F/G/A/B][1/2/3/4/5/6/7/8] 进行组合。 例如 A 是la,4 是第四阶,中音, A4 在国际标准中频率 = 440 Hz。按照十二平均律,对应的 A5 为 880 Hz。 以此类推。如果要播放 440 Hz 的方波 1 秒,可以这样设置:

    image

    如果想播放 Amin 和弦,也就是 A C E 三个音,可以这样设置:

    image

    如果最后这部分看不懂,没关系,正常的。 学习了音乐和乐理知识后自然就懂了。

    相关文章

    暂无,后续社区中有好的音频相关的文章会在这里补充

    历史更新 和 Roadmap

    coming soon…

    本页索引

    • 为什么要使用媒体助手 Media Utils?
    • 使用媒体助手的最佳实践案例
    • 模块
    • 资源相关
    • 加载音频视频
    • 加载音视频事件
    • 资源释放及状态查询
    • 视频相关
    • 视频播放
    • 音乐相关
    • 音频特效相关
    • 其他实验功能
    • 相关文章
    • 历史更新 和 Roadmap
    Gandi IDE 🧑‍💻 开发者中心 @ 共创世界

    Designed by 2ndR with love @ Chengdu

    Tencent QQGitHub