Jump to content

Access ReplayGain metadata through the Emby API for audio playback


Recommended Posts

MarvinB
Posted

I am the developer of Ear Wax, an Alexa music client that streams tracks from Emby Server 4.9.3.0.

Emby’s FFmpeg transcode log confirms that it detects embedded ReplayGain tags. For example:

REPLAYGAIN_TRACK_GAIN: -2.85 dB
REPLAYGAIN_TRACK_PEAK: 0.861816
REPLAYGAIN_ALBUM_GAIN: -2.16 dB
REPLAYGAIN_ALBUM_PEAK: 1.000000

The corresponding item is available through /emby/Audio/{Id}/stream.mp3, but requesting the complete item through /emby/Users/{UserId}/Items/{Id} does not return any gain, peak, ReplayGain, loudness, or normalization fields.

Is there a supported API endpoint or optional field that returns these embedded ReplayGain values before playback?

If not, is there a supported audio-streaming parameter that tells Emby’s transcoder to apply track ReplayGain during progressive MP3 transcoding?

The goal is track-to-track volume consistency. I would prefer to use Emby’s existing metadata and transcoder without requiring users to install a custom plugin or modify their media files.

I am specifically looking for:

  • An API-accessible track gain and peak.
  • A documented way to apply that gain during audio transcoding.
  • Confirmation whether these capabilities are unavailable in Emby 4.9.3.0.

Thank you

Posted

@MarvinB

Thanks for your request.

The way Emby works is that we are ffprobe-ing all new media files and are storing a subset of that data with the items in the library in the form of  Emby SDK Reference: MediaSourceInfo and MediaStream.

 At the moment, replay gain information is not included with the media information data that is being stored. We might be able to add that, though.

With regards to transcoding, the question is how it should be handled: applied and removed, not applied but preserved/carried over, not applied and dropped. I think the latter is happening at the moment - at least when a volume filter is included.

Posted

@softworkz;

Thank you and that explains why the tags appear in the FFmpeg log but not in the item response.

Would you consider adding the following optional fields to MediaSourceInfo or the audio MediaStream?

ReplayGainTrackGain
ReplayGainTrackPeak
ReplayGainAlbumGain
ReplayGainAlbumPeak
ReplayGainReferenceLoudness

The values would only need to be stored and returned through the API; existing playback behavior would not need to change.

Separately, is there currently a supported audio-streaming request parameter, device-profile option, or API mechanism that allows a client to request a specific constant gain—such as -2.85 dB—during progressive MP3 transcoding?

My intended client behavior is:

  • Use track gain for mixed-track playback.
  • Apply the gain during transcoding.
  • Do not depend on the receiving player to interpret ReplayGain tags.
  • Preserve existing behavior when no gain is requested.

If no such transcoding control currently exists, would Emby consider exposing one?

I am trying to avoid requiring users to install a custom plugin or modify their audio files.

 

Thank you

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...