Rsplwe 发布的文章

博客二月份搭建以来一直以无实际内容的状态下挂着,最近正好有空闲的时间,就写一篇提取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/

游戏内MV下载提示 (文件大小和下载时间)
文件属性 (文件大小和下载时间)

2. 解包

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

AssetStudio (Asset List)

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

导出的文件

3. 合并文件

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

  • 使用 cat 命令合并文件

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

    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)

VGMToolbox

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

Result

5. 可能会遇到的问题

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