提取BanG Dream! 游戏内MV

博客二月份搭建以来一直以无实际内容的状态下挂着,最近正好有空闲的时间,就写一篇提取BanG Dream!游戏资源教程。这个教程应该适用于类似的游戏。不过要说的是,游戏内提取的MV视频质量比较低,所以并不是很适合用作视频的素材。

1. Tools

2. 游戏资源的获取

像BanG Dream!这样的游戏,为了防止安装包过大(应该是),一般都是在需要某些游戏资源的时候才进行下载,所以可以通过用文件管理器查看文件的 属性(时间戳、文件大小) 分辨是否为需要的资源文件。

另外,不同服的数据文件存储目录也不一样

  • 国服: /sdcard/Android/data/com.bilibili.star.bili/files/data/
  • 日服: /sdcard/Android/data/jp.co.craftegg.band/files/data/
  • 其他: /sdcard/Android/data/<包名>/files/data/

2. 解包

将刚才的数据文件拷贝出来,打开AssetStudio,从左上角点击File -> Load File,选择数据文件,待载入之后切换到Asset List选项卡

点击上方Export -> All assets,将所有文件导出到一个目录

3. 合并文件

由于导出的文件是分块的,并不是一个完整的文件,所以需要按名称顺序将文件合并起来。

  • 使用 cat 命令合并文件

    1
    $ cat TextAsset/*.usm.txt > merge_file.usm
  • 使用 python 合并文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import os

    file_path = "TextAsset/" # 文件目录

    file_list = os.listdir(file_path)
    file_list.sort()

    with open("merge_file.usm","wb") as f:
    for i in file_list:
    usm = open(file_path + i, "rb")
    f.write(usm.read())
    usm.close()

4. 最后一步

得到合并后的usm文件之后就可以用VGMToolbox解码了。

打开VGMToolbox,在目录树选择 VGMToolbox -> Misc. Tools -> Stream Tools -> Video Demultiplexer,然后在右边 Options 的 Format 选择 USM (CRI Movie 2)

再把刚才的 *merge_file.usm 文件拖进 VGMToolbox ,就可以在 *merge_file.usm 文件的同级目录得到结果

5. 可能会遇到的问题

  • 提取出来的视频文件没有声音: 因为音频轨和视频轨是分开的,需要另外再提取音频文件
  • VGMToolbox 转换失败: 在合并那一步有可能会因为一些原因导致文件顺序错乱,导致合并后的文件错误