例如,以下类型的 .SPC 文件: 随机 SPC 和 WAV 文件夹
我不希望它在前台出现一个窗口,只是一个将 SPC 转换为 WAV 的不可见过程。
executable foo/bar/input.spc bar/foo/output.wav
我在命令行 Java 应用程序中使用它,因此如果可能的话,Java 解决方案将不胜感激。(ProcessBuilder
如果没有,我可以用来运行可执行文件。)
答案1
太方便了!FFMPEG 可以读取和转换 SPC 文件!
ffmpeg -i night1.spc -acodec pcm_u8 -ar 44100 night1.wav
现在,此命令将非常干净地转换您的文件,并输出一个漂亮的.wav
文件(请确保将night1.spc
和替换night1.wav
为您想要的文件名)。
不幸的是,这并没有结束故事。运行上述命令一段时间后,我得到了以下结果:
-rw-rw-r-- 1 kazwolfe kazwolfe 297M Mar 28 02:05 night1.wav
-rw-rw-r-- 1 kazwolfe kazwolfe 65K Mar 28 02:01 night1.spc
这不可能是对的...让我们在 Audacity 中打开该文件,看看发生了什么:
简而言之,SPC 文件没有定义长度。虽然有规范中提到了长度,它似乎经常被忽视,实际上是忽略上传至 Google Drive 的文件。
从 SNES 中提取的 SPC 文件(原始格式)旨在无限循环。因此,当播放(或在这种情况下转换)它们时,它们也将无限循环。
因此,我们需要手动将长度(可能还有偏移量)传递给ffmpeg
。幸运的是,该程序附带一个很酷的小命令行参数,称为-t <time>
。使用它,我们可以指定要转换多少音频。
类似地,如果文件有偏移量,我们可以使用参数-ss <time>
来指定要从开头剪辑多远。
因此,假设一个 45 秒的文件,偏移量为 5 秒,我们需要运行的命令是:
ffmpeg -i night1.spc -t 00:00:45 -ss 00:00:05 -acodec pcm_u8 -ar 44100 night1.wav