mirror of
https://github.com/navidrome/navidrome.git
synced 2026-10-08 02:17:25 +02:00
The frame inserted into piped mp3 transcodes carried a Xing tag with only a frame count. Media3/ExoPlayer, which most Android clients use, builds a XingSeeker from a Xing tag and reports it seekable only when a seek table is present, so a cached or downloaded transcode became unseekable there. Without any frame it would have used constant-bitrate seeking. An Info tag takes Media3 down its constant-bitrate path, now with the declared duration. Info is also what ffmpeg and LAME write for a CBR file, which is what the default mp3 profile produces. Checked against the decoders on hand: ffprobe reports 20.010s either way, Firefox reports 19.998s at loadedmetadata either way, and decoded audio is unchanged. Apple's AudioToolbox ignores Info frames, including ffmpeg's own, so it sees the same stream it saw before this series. |
||
|---|---|---|
| .. | ||
| ffmpeg.go | ||
| ffmpeg_test.go | ||
| flac_streaminfo.go | ||
| flac_streaminfo_test.go | ||
| mp3_xing.go | ||
| mp3_xing_test.go | ||
| piped_header.go | ||