Skip to main content

Topic: Making a header-less CELT file playable? (Read 5369 times) previous topic - next topic

0 Members and 1 Guest are viewing this topic.
  • Smark
  • [*]
Making a header-less CELT file playable?

I'm currently trying to decode the sound files for a game called League of Legends into a playable format so I can use them as cell phones alerts. I've extracted the files to the point where I have a listing of 9,962 files ending in a .celt extension.

I have uploaded a few sample files:

From what I can tell these files are a Vorbis-like codec called CELT, which eventually became a standardized codec known as OPUS.

I extracted the files from a FSB (FMOD Sample Bank) file. I'm not sure about the accuracy, but "Aezay FSB Extractor 13.03.09" has listed the first file above as having the following data:

  • Sample: chemicalman_insanitypotion_lo
  • Format: Vorbis (26447)
  • Sample rate: 44100 Hz
  • Channels: Mono
  • Duration: 32.008
  • Bitrate: 69.60 kbit/s
  • Bits/Sample: 1.58
  • Sample Mode Flags [0x08000000]:
  • 0x08000000 | FSOUND_OGG | Samples are store in Ogg/CELT Format

The files above I also believe are header-less, meaning they contain purely audio data, no metadata. As I understand it, the appropriate header must be re-attached to the beginning of the stream so that a player can properly play the file. This header would usually contain data such as mono/stereo, bitrate, and frame size.

I have tried various tools including celtdec.exe, opusdec.exe, and foobar2000's foo_input_celt plugin. I've also tried Audacity importing as RAW with various settings. Nothing seems to be able to play the file without the header, or add the header.

Many many many other posts exist on their official forums on which people are asking the same thing: How do we play these files? My assumption is that we need details on the game developer's CELT implementation, or for someone to be able to figure out how to add an appropriate matching CELT/OPUS/OGG header to the beginning of these files so that they play. I'm not sure that getting details on the implementation will be that easy, reverse engineering may be the only way. I'm not intimately familiar with CELT or other audio codecs at a low level, so any help would be appreciated.

Can anyone shed some light on where to go from here? I plan on cross posting this on numerous forums. I hope that this would eventually find its way to someone on game's audio programming team which may be able to provide details or hints on how to properly decode them.

I promise that if I find a way to decode the files I will publicly post the process both here and on my personal website.

Thank you for your time,

  • LithosZA
  • [*][*][*][*]
Making a header-less CELT file playable?
Reply #1
Those files might be encoded using the older 0.9.x CELT encoder. I am not sure if the 0.11.x decoders would be able to decode those files.