Audio Management
Media sources
Overview of supported media sources and how to use them.
A "Media Source" is a descriptor of where one or more media files are located. When a command or system calls for a "source" or "media source" input, it is expecting you to provide a valid media source like one of the ones described below.
Supported sources
OpenAudioMc has built in support for a variety of media sources, each with their own use-cases.
| Service | Format | Usecase | Limitations | |
|---|---|---|---|---|
| Media uploaded into your OpenAudioMc account | Files in your account should be prefixed with files:. For example, if I wanted to play beats.mp3 from my account, I would need to use files:beats.mp3 | Easiest to use and well integrated into the service, best suited for core playback and important files. | Storage in your OpenAudioMc account is limited (200MB in the free tier, 10GB+ for patreons) | |
| Public uploads to SoundCloud.com | Soundcloud song links can be used directly like this example. | For quick & free uploads, great when taking requests or letting users provide their own media. | SoundCloud artists can choose whether their music is allowed on third party apps. This is why some major artists/record labels won't be playable through OpenAudioMc. | |
| Music from your own webserver/CDN | Must be a full web url, e.g. https://mydomain.com/folder/file.mp3 | Using your own CDN gives flexibility, removes storage constraints, and gives you direct control of your media. | Your CDN does need to meet a few specific requirements to work nicely (please see the list below) | |
| OpenAudioMc Playlists | Must be prefixed by list:, directly followed by the ID/name of your playlist (e.g. list:spawn_music | Use playlists when you want to randomly pick from a list of sources to create variants, or chain multiple songs together | OpenAudioMc playlists still need other sources inside them. Please check the Playlist Documentation for a full guide. | |
| OpenAudioMc Alias | An alias is a shortcut to another media source. They are always prefixed with a:, followed by their name. E.g. a:spawn_song | An alias is great for media sources with a long file name or URL, that you can't remember easily. Please check the alias docs for details |
Random media and Playlists
You might want to shake things up a little every once in a while by assigning random sounds to a region, command or
whatever. You can simply do this by stringing multiple sources in a JSON array, so you'd enter something like
["files:song1.mp3","files:song2.mp3"] instead of your singular
source. The client will choose a random sound from the list when the media is requested to start.
Randomized media with looping tags will reselect their source every time they loop, functioning like a playlist.
Requirements for selfhosted media
If you are hosting your own media files on your own webserver or CDN, there are a few requirements to ensure compatibility with OpenAudioMc:
- CORS headers: Your server must provide appropriate CORS headers to allow cross-origin requests from OpenAudioMc
clients. At minimum, the
Access-Control-Allow-Originheader should be set to*or to the specific domains used by OpenAudioMc. - Supported formats: OpenAudioMc primarily supports common audio formats such as MP3 and OGG. Ensure your media files are in a compatible format.
- Direct file access: The URLs provided must point directly to the audio files and not to HTML pages or redirects.
- Stable hosting: Ensure that your server or CDN is reliable and can handle the expected traffic, especially during peak usage times.
- HTTPS: It is recommended to serve your media files over HTTPS to ensure secure connections and compatibility with modern browsers.
- Bandwidth considerations: Be aware of the bandwidth usage that may result from streaming audio files to multiple users simultaneously.
- File size limits: Try limiting yourself to files under 50MB to ensure smooth playback on lower-spec clients.
- Partial content support: Your server should support HTTP Range requests to allow for efficient streaming and seeking within audio files. You may need to enable this manually depending on your server software.
Javadoc for this feature
Generated from the dev branch.
