Caution
本软件由易语言编写,会有杀毒软件误报的情况,本项目保证软件中没有任何恶意代码,请自行添加信任区。编译结果已尽量作打乱处理。
本软件与都市天际线2模组ExtendedRadio配套使用,可根据输入的内容一键生成自定义电台目录树及对应的json配置文件,无需手动编辑 json 文件即可在游戏中创建自定义电台,并可导入/导出电台。软件自带 FFmpeg,可以将音频文件转换为游戏需要的 .ogg 格式。
Tip
在使用此软件前,请确保已安装都市天际线2模组ExtendedRadio并能被正常加载。
- 1.首次启动,设置好游戏数据目录和临时文件目录。
- 2.点击新建电台,打开电台新建窗口。
- 3.填写自定义电台信息,标*的为必填。 其中:
- 电台名称会显示在图中①处
- 电台描述会显示在图中②处
- 频道名称会显示在图中③处
- 频道描述会显示在图中④处
- 节目名称会显示在图中⑤处
- 节目描述会显示在图中⑥处
- 开始时间和结束时间会显示在图中⑦处
Tip
如果不填写开始时间和结束时间,那么⑦处对应的时间和进度条不会变化。
在以上信息填写完毕后,即可点击右方音乐管理分组框的“添加”按钮向对应的电台节目中添加音乐。这一环节支持几乎所有的音频格式,非.ogg文件会在新建电台时调用FFmpeg自动转换。
点击新建电台按钮即可生成电台。生成的电台位置由在设置中填写的游戏数据目录所决定。在生成完成后可选择导出电台,选择输出文件夹,在输出文件夹中生成output.zip文件。
在提示“电台新建完成”后即可在ExtendedRadio模组设置中重新加载电台,建议重启游戏以重新加载模组。
也可访问bilibili获取视频教程
模组类型由用户安装的模组来源自行决定。支持PMOD版和BeplnEx版。不同的版本会要求填写不同的游戏相关路径。也可从CSUL的配置文件中依据模组类型自动读取路径。
Warning
从 0.2.2 - Eula 版本开始,会停止BeplnEx版模组的支持。
临时文件目录是软件运行时的重要目录,会存储在电台创建过程中的关键文件。建议使用“程序目录下的临时目录”选项,或在自定义时设置一个简明易记的位置。在报告问题时需提供完整的临时文件目录内容。
FFmpeg选项中的编码质量等级用于控制使用FFmpeg转码音频文件时生成ogg文件的码率。共有12档可选,不同的质量等级与码率的对应关系如下:
| 质量等级 | 码率 |
|---|---|
| -1 | 32-48kbps |
| 0 | 48-64kbps |
| 1 | 64-80kbps |
| 2 | 80-96kbps |
| 3 | 96-112kbps(默认) |
| 4 | 112-128kbps |
| 5 | 128-160kbps |
| 6 | 160-192kbps |
| 7 | 192-224kbps |
| 8 | 224-256kbps |
| 9 | 256-320kbps |
| 10 | 可能的最大码率 |
如果需要更精确地控制生成文件的质量,可以勾选下方“使用恒定码率”的选项,并输入32-500kbps之间的一个值。 启用“并行多音频转码”可以在转码时创建多个FFmpeg进程同时转码所有音频,速度可能会稍快于按顺序转码各个音频。
- 新建单频道单节目多音乐的电台
- 使用CSUL的配置文件设置游戏相关目录
- 使用ffmpeg转换不为
.ogg格式的音乐 - 导出zip格式的电台包。
- 一键联网更新程序
- 一键导入zip格式的电台包
- 支持自定义电台图标
- 修改现有电台
- 新建多频道多节目多音乐的电台
如程序运行过程中出现任何问题,请在备份后清除游戏自定义电台文件目录后再次尝试。若问题仍然存在,请于CSLBBS提交反馈。考虑到国内访问GitHub较为困难,会优先处理CSLBBS上的问题。
最近CSLBBS出现了访问不稳定的问题,如果无法访问CSLBBS,则请移步至GitHub提交问题。
在提交问题时:
- 需提供详细的问题说明或提供问题出现的视频或截图
- 需写明程序的版本号及编译时间
- 需上传程序运行目录下的
load.ini文件 - 临时文件目录中有文件需一并上传
Q:为什么程序下载后无法运行,提示“包含病毒或潜在的垃圾软件”?
A:本程序由易语言编写,会有杀毒软件误报的情况。如果出现类似的提示,将程序所在目录添加至杀毒软件的排除项、信任区、白名单即可。
Q:为什么我每次程序都会进入设置?
A:这种情况大概率是程序的配置文件丢失或损坏,程序在检测到配置文件无效后会弹出设置窗口要求重新设置。可删除程序运行目录下的load.ini文件后,重新正确填写设置即可。
Q:为什么节目的描述与开始结束时间默认是被禁止输入的?勾选“写入额外的数据”会发生什么?
A:在当前1.4.6版本的ExtendedRadio模组中,电台的目录下如有program.json文件并写入了描述与开始结束时间等数据。则在游戏中,电台中的所有音乐随机地播放完一遍后,就会卡死。不论是切换其它电台再切回来,还是手动切换音乐,都不会播放下一首音乐,除非在ExtendedRadio模组设置中重新加载电台或重启游戏。
Q:在FFmpeg转码时,对我的音频文件进行了那些操作?
A:首先,在转码时会用“-vn”参数去除包含音频封面信息的视频流。游戏无法播放带有封面视频流的ogg音频文件。其次,已知在CSRM自带的FFmpeg中如输入大于48KHz采样率的24位深度flac编码文件,调用libvorbis转换ogg时会返回“编码器初始化失败”。不确定32位或32位浮点深度的flac与其它编码文件是否会发生此问题。此问题有可能是由MSYS编译的FFmpeg的音频预处理部分不够鲁棒造成的。在问题解决之前,同时也为了避免游戏与模组的潜在对高采样率音频的兼容性问题,在转码时会使用-ar 48000参数强制指定采样率为48KHz。
Q:为什么在打开游戏的同时新建电台,重新加载自定义电台后切到刚刚新建的电台却无法播放?
A:这种情况并非是电台本身有问题,而是电台没有被正确加载,重启游戏以重新加载模组即可解决此问题。
CSRM项目采取双分支并行的开发模式。main分支为主分支,另一个分支为测试分支,名称为下一版本的的开发代号。所有的功能与性能改进都会优先推送到该分支,当测试分支成熟时,就会PR到主分支,并在稍后放出release。当一个release有缺陷时,补丁会直接推送到主分支,放出fix的release,并会在稍后合并补丁到测试分支。
想体验测试分支中没有release的功能,可以先安装最新的release,再把测试分支中的文件拉取放在正式版的release中,在自行编译时替换掉原本的主程序即可,这样可以最大限度的避免依赖问题。CSRM依赖精易模块,请确保自行编译时准备好该模块。准备好了这些以后,你也有了一个适用于CSRM的开发环境,为什么不提交一个PR呢?
这是我的第一个GitHub项目,现在仍在早期阶段,代码中有很多细节问题,我也无法确保测试到每一种情况,难免会有疏漏之处。如果你对这个项目有意见或想贡献代码,欢迎提交PR/issue!(后面项目会用C#重写喔)
感谢Snap.Hutao1项目,该项目对CSRM文档与Changelog的规范化提供了借鉴与参考
感谢Snap.Hutao.Deployment项目,该项目对CSRM的更新器设计提供了借鉴与参考
感谢FFmpeg项目,该项目为CSRM提供了音频转码功能
感谢ExtendedRadio项目,作为CSRM的依赖,没有该项目就没有CSRM
Footnotes
-
Snap.Hutao项目已因收到上海米哈游天命科技有限公司的律师函而停止开发,链接指向的原Snap.Hutao仓库已不再公开,如需参阅源代码请查看此仓库,Snap.Hutao的继任项目请查看此仓库
我们希望上海米哈游天命科技有限公司能先做到“TECH OTAKU EMBRACE OPEN SOURCE COMMUNITY”,再做到“TECH OTAKU SAVE THE WORLD”
最后,向Snap.Hutao的的开发者 —— DGP-Studio中的每一位成员,每位Snap.Hutao项目的贡献者与支持者,@wangdage12,以及每位努力在桌面端《原神》上获得最佳和更佳游戏体验的玩家致以最崇高的敬意! ↩
