Skip to content

[Bug]: Navidrome cannot load embedded album art form AIFF format #3992

@AMoonRabbit

Description

@AMoonRabbit

I confirm that:

  • I have searched the existing open AND closed issues to see if an issue already exists for the bug I've encountered
  • I'm using the latest version (your issue may have been fixed already)

Version

55.2

Current Behavior

Hello,

I have come across an issue with album art with some files in my collection. At first, I thought it was due to poorly tagged media, so I had removed the files, retagged them with Picard confirming album art was being embedded, and then re-uploaded.

For context, I run Funkwhale, and Navidrome reads off of Funkwhale's media data directory. Funkwhale does not modify the uploaded files in any way other than filing them in it's own folder structure. Navidrome is capable of reading the media still and presents them in normal albums as expected.

Having re-uploaded, the files still failed to show album art. So I cleared the database and also the image cache and started anew, but same issue. It was only when I was looking at the files again that I noticed that all affected files were of the AIFF format. Whilst I can transcode these into another format, I thought it best raise a issue to see if this can be resolved.

Expected Behavior

Embedded artwork should be loaded from AIFF files.

Steps To Reproduce

  1. Add an album to library consisting of AIFF files
  2. Wait for the files to appear in the library
  3. Note that album art is not shown and instead the default Navidrome art is shown

Environment

- OS: Ubuntu 22.04.5 LTS
- Browser: LibreWolf
- Client: N/A - Not tested in a client yet but can try Symfonium

How Navidrome is installed?

Docker

Configuration

services:
  navidrome:
    image: deluan/navidrome:latest
    user: 994:994 # should be owner of volumes
    ports:
      - "4533:4533"
    restart: unless-stopped
    environment:
      # Optional: put your config options customization here. Examples:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info  
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: ""
      ND_ENABLESHARING: true
      ND_COVERARTPRIORITY: embedded
      ND_ENABLEGRAVATAR: true
    volumes:
      - "/mnt/drive/srv/navidrome/data:/data"
      - "/mnt/drive/srv/funkwhale/data/media/tracks:/music:ro"

Relevant log output

Version: 0.55.2 (a057a680)
Loaded configuration from '': &conf.configOptions{
    ConfigFile:                      "",
    Address:                         "0.0.0.0",
    Port:                            4533,
    UnixSocketPerm:                  "0660",
    MusicFolder:                     "/music",
    DataFolder:                      "/data",
    CacheFolder:                     "/data/cache",
    DbPath:                          "/data/navidrome.db?cache=shared&_busy_timeout=15000&_journal_mode=WAL&_foreign_keys=on&synchronous=normal",
    LogLevel:                        "debug",
    LogFile:                         "",
    SessionTimeout:                  86400000000000,
    BaseURL:                         "",
    BasePath:                        "",
    BaseHost:                        "",
    BaseScheme:                      "",
    TLSCert:                         "",
    TLSKey:                          "",
    UILoginBackgroundURL:            "/backgrounds",
    UIWelcomeMessage:                "",
    MaxSidebarPlaylists:             100,
    EnableTranscodingConfig:         false,
    EnableDownloads:                 true,
    EnableExternalServices:          true,
    EnableInsightsCollector:         true,
    EnableMediaFileCoverArt:         true,
    TranscodingCacheSize:            "100MB",
    ImageCacheSize:                  "100MB",
    AlbumPlayCountMode:              "absolute",
    EnableArtworkPrecache:           true,
    AutoImportPlaylists:             true,
    DefaultPlaylistPublicVisibility: false,
    PlaylistsPath:                   "",
    SmartPlaylistRefreshDelay:       5000000000,
    AutoTranscodeDownload:           false,
    DefaultDownsamplingFormat:       "opus",
    SearchFullString:                false,
    RecentlyAddedByModTime:          false,
    PreferSortTags:                  false,
    IgnoredArticles:                 "The El La Los Las Le Les Os As O A",
    IndexGroups:                     "A B C D E F G H I J K L M N O P Q R S T U V W X-Z(XYZ) [Unknown]([)",
    FFmpegPath:                      "",
    MPVPath:                         "",
    MPVCmdTemplate:                  "mpv --audio-device=%d --no-audio-display --pause %f --input-ipc-server=%s",
    CoverArtPriority:                "embedded",
    CoverJpegQuality:                75,
    ArtistArtPriority:               "artist.*, album/artist.*, external",
    EnableGravatar:                  true,
    EnableFavourites:                true,
    EnableStarRating:                true,
    EnableUserEditing:               true,
    EnableSharing:                   true,
    ShareURL:                        "",
    DefaultDownloadableShare:        false,
    DefaultTheme:                    "Dark",
    DefaultLanguage:                 "",
    DefaultUIVolume:                 100,
    EnableReplayGain:                true,
    EnableCoverAnimation:            true,
    GATrackingID:                    "",
    EnableLogRedacting:              true,
    AuthRequestLimit:                5,
    AuthWindowLength:                20000000000,
    PasswordEncryptionKey:           "[REDACTED]",
    ReverseProxyUserHeader:          "[REDACTED]",
    ReverseProxyWhitelist:           "[REDACTED]",
    HTTPSecurityHeaders:             conf.secureOptions{CustomFrameOptionsValue:"DENY"},
    Prometheus:                      conf.prometheusOptions{Enabled:false, MetricsPath:"[REDACTED]", Password:""},
    Scanner:                         conf.scannerOptions{Enabled:true, Schedule:"", WatcherWait:5000000000, ScanOnStartup:true, Extractor:"taglib", ArtistJoiner:"", GenreSeparators:"", GroupAlbumReleases:false},
    Jukebox:                         conf.jukeboxOptions{
        Enabled: false,
        Devices: {
        },
        Default:   "",
        AdminOnly: true,
    },
    Backup:                           conf.backupOptions{},
    PID:                              conf.pidOptions{Track:"musicbrainz_trackid|albumid,discnumber,tracknumber,title", Album:"musicbrainz_albumid|albumartistid,album,albumversion,releasedate"},
    Inspect:                          conf.inspectOptions{Enabled:true, MaxRequests:1, BacklogLimit:100, BacklogTimeout:60000000000},
    Subsonic:                         conf.subsonicOptions{AppendSubtitle:true, ArtistParticipations:false, DefaultReportRealPath:false, LegacyClients:"DSub"},
    Agents:                           "lastfm,spotify",
    LastFM:                           conf.lastfmOptions{Enabled:true, ApiKey:"[REDACTED]", Secret:"[REDACTED]", Language:"en"},
    Spotify:                          conf.spotifyOptions{},
    ListenBrainz:                     conf.listenBrainzOptions{Enabled:true, BaseURL:"https://api.listenbrainz.org/1/"},
    Tags:                             {},
    DevLogSourceLine:                 false,
    DevLogLevels:                     {},
    DevEnableProfiler:                false,
    DevAutoCreateAdminPassword:       "[REDACTED]",
    DevAutoLoginUsername:             "[REDACTED]",
    DevActivityPanel:                 true,
    DevActivityPanelUpdateRate:       300000000,
    DevSidebarPlaylists:              true,
    DevEnableBufferedScrobble:        true,
    DevShowArtistPage:                true,
    DevOffsetOptimize:                50000,
    DevArtworkMaxRequests:            2,
    DevArtworkThrottleBacklogLimit:   100,
    DevArtworkThrottleBacklogTimeout: 60000000000,
    DevArtistInfoTimeToLive:          86400000000000,
    DevAlbumInfoTimeToLive:           604800000000000,
    DevExternalScanner:               true,
    DevScannerThreads:                0x5,
    DevInsightsInitialDelay:          1800000000000,
    DevEnablePlayerInsights:          true,
}
time="2025-04-22T21:49:05Z" level=debug msg="Opening DataBase" dbPath="/data/navidrome.db?cache=shared&_busy_timeout=15000&_journal_mode=WAL&_foreign_keys=on&synchronous=normal" driver=sqlite3_custom
time="2025-04-22T21:49:05Z" level=info msg="goose: no migrations to run. current version: 20241026183640\n"
time="2025-04-22T21:49:05Z" level=info msg="Starting signaler"
time="2025-04-22T21:49:05Z" level=debug msg="Agent not available. Missing configuration?" name=lastfm
time="2025-04-22T21:49:05Z" level=debug msg="Agent not available. Missing configuration?" name=spotify
time="2025-04-22T21:49:05Z" level=debug msg="List of agents enabled" names="[`local`]"
time="2025-04-22T21:49:05Z" level=info msg="Creating Image cache" maxSize="100 MB" path=/data/cache/images
time="2025-04-22T21:49:05Z" level=info msg="Periodic scan is DISABLED"
time="2025-04-22T21:49:05Z" level=debug msg="Loaded cache" dir=/data/cache/images numItems=0
time="2025-04-22T21:49:05Z" level=info msg="Finished initializing cache" cache=Image elapsedTime=1.9ms maxSize=100MB
time="2025-04-22T21:49:05Z" level=info msg="Periodic backup is DISABLED"
time="2025-04-22T21:49:05Z" level=debug msg="Jukebox is DISABLED"
time="2025-04-22T21:49:05Z" level=info msg="Starting scheduler"
time="2025-04-22T21:49:05Z" level=info msg="Starting Insight Collector"
time="2025-04-22T21:49:05Z" level=info msg="Scheduling DB optimizer" schedule="@every 24h"
time="2025-04-22T21:49:05Z" level=debug msg="Scheduler: start"
time="2025-04-22T21:49:05Z" level=debug msg="Scheduler: added" entry=1 next="2025-04-23 21:49:05 +0000 UTC" now="2025-04-22 21:49:05.624366458 +0000 UTC"
time="2025-04-22T21:49:05Z" level=info msg="Setting Session Timeout" value=24h
time="2025-04-22T21:49:05Z" level=info msg="Login rate limit set" requestLimit=5 windowLength=2
time="2025-04-22T21:49:05Z" level=info msg="Found ffmpeg" path=/usr/bin/ffmpeg
time="2025-04-22T21:49:05Z" level=debug msg="Last.fm integration is ENABLED"
time="2025-04-22T21:49:05Z" level=debug msg="ListenBrainz integration is ENABLED" ListenBrainz.BaseURL="https://api.listenbrainz.org/1/"
time="2025-04-22T21:49:05Z" level=info msg="Spotify integration is not enabled: missing ID/Secret"
time="2025-04-22T21:49:05Z" level=debug msg="Throttling inspect" backlogLimit=100 backlogTimeout=60000000000 maxRequests=1
time="2025-04-22T21:49:05Z" level=info msg="Mounting Native API routes" path=/api
time="2025-04-22T21:49:05Z" level=debug msg="Scrobbler not available. Missing configuration?" name=lastfm
time="2025-04-22T21:49:05Z" level=info msg="Creating Transcoding cache" maxSize="100 MB" path=/data/cache/transcoding
time="2025-04-22T21:49:05Z" level=debug msg="List of scrobblers enabled" names="[`listenbrainz`]"
time="2025-04-22T21:49:05Z" level=debug msg="Loaded cache" dir=/data/cache/transcoding numItems=0
time="2025-04-22T21:49:05Z" level=debug msg="Starting watcher" lib=/music/...
time="2025-04-22T21:49:05Z" level=debug msg="Throttling Subsonic getCoverArt endpoint" backlogLimit=100 backlogTimeout=1m maxRequests=2
time="2025-04-22T21:49:05Z" level=info msg="Mounting Subsonic API routes" path=/rest
time="2025-04-22T21:49:05Z" level=debug msg="Throttling public images endpoint" backlogLimit=100 backlogTimeout=1m maxRequests=2
time="2025-04-22T21:49:05Z" level=info msg="Mounting Public Endpoints routes" path=/share
time="2025-04-22T21:49:05Z" level=info msg="Finished initializing cache" cache=Transcoding elapsedTime=3.3ms maxSize=100MB
time="2025-04-22T21:49:05Z" level=info msg="Mounting LastFM Auth routes" path=/api/lastfm
time="2025-04-22T21:49:05Z" level=info msg="Mounting ListenBrainz Auth routes" path=/api/listenbrainz
time="2025-04-22T21:49:05Z" level=info msg="Mounting Background images routes" path=/backgrounds
time="2025-04-22T21:49:05Z" level=info msg="Mounting WebUI routes" path=/app
time="2025-04-22T21:49:05Z" level=info msg="Creating backgrounds cache" maxSize="100 MB" path=/data/cache/backgrounds
time="2025-04-22T21:49:05Z" level=debug msg="Loaded cache" dir=/data/cache/backgrounds numItems=0
time="2025-04-22T21:49:05Z" level=info msg="Finished initializing cache" cache=backgrounds elapsedTime=1.5ms maxSize=100MB
time="2025-04-22T21:49:05Z" level=info msg="----> Navidrome server is ready!" address="0.0.0.0:4533" startupTime=96.3ms tlsEnabled=false
time="2025-04-22T21:49:05Z" level=debug msg="Loaded background images from image service" elapsed=159.6ms total=131
time="2025-04-22T21:49:07Z" level=info msg="Executing initial scan"
time="2025-04-22T21:49:07Z" level=debug msg="Spawning external scanner process" fullScan=false path=/app/navidrome
time="2025-04-22T21:49:07Z" level=debug msg="Opening DataBase" dbPath="/data/navidrome.db?cache=shared&_busy_timeout=15000&_journal_mode=WAL&_foreign_keys=on&synchronous=normal" driver=sqlite3_custom
time="2025-04-22T21:49:07Z" level=info msg="Scanner: Starting scan" fullScan=false numLibraries=1
time="2025-04-22T21:49:08Z" level=debug msg="Scanner: Starting phase 1: Scan all libraries and import new/updated files"
time="2025-04-22T21:49:08Z" level=info msg="Scanner: Completed processing folder" audioCount=0 elapsed=6.1ms imageCount=0 library="Music Library" plsCount=0 tracksImported=0 tracksMissing=0 ​folder=00/3f
time="2025-04-22T21:49:24Z" level=info msg="Scanner: Completed processing folder" audioCount=0 elapsed=3.1ms imageCount=0 library="Music Library" plsCount=0 tracksImported=0 tracksMissing=0 ​folder=ff/76
time="2025-04-22T21:49:24Z" level=info msg="Scanner: Completed processing folder" audioCount=0 elapsed=3.7ms imageCount=0 library="Music Library" plsCount=0 tracksImported=0 tracksMissing=0 ​folder=ff/78
time="2025-04-22T21:49:24Z" level=info msg="Scanner: Completed processing folder" audioCount=0 elapsed=7.7ms imageCount=0 library="Music Library" plsCount=0 tracksImported=0 tracksMissing=0 ​folder=ff/7f
time="2025-04-22T21:49:24Z" level=info msg="Scanner: Completed processing folder" audioCount=0 elapsed=3.8ms imageCount=0 library="Music Library" plsCount=0 tracksImported=0 tracksMissing=0 ​folder=ff/91
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Finished reading folders" lib="Music Library" numFolders=39767 path=/music
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Finished loading all folders" numChanged=1862 numFolders=39768
time="2025-04-22T21:49:24Z" level=info msg="Scanner: Completed processing folder" audioCount=0 elapsed=3.3ms imageCount=0 library="Music Library" plsCount=0 tracksImported=0 tracksMissing=0 ​folder=ff/e8
time="2025-04-22T21:49:24Z" level=info msg="Scanner: Pipeline wall time: 15.462589667s\n  traverse filesystem (0): 1862 items, total 15.462391578s (8.304184ms/item), work 15.457084836s (8.301334ms/item)\n  count tasks (0)        : 1862 items, total 15.460116463s (8.302962ms/item), work 2.048442ms (1.1µs/item)\n  process folder (0)     : 373 items, total 15.460126073s (41.448059ms/item), work 704.25321ms (1.888078ms/item)\n  process folder (1)     : 371 items, total 15.460870452s (41.673505ms/item), work 768.680495ms (2.071915ms/item)\n  process folder (2)     : 374 items, total 15.459605545s (41.335843ms/item), work 711.939824ms (1.903582ms/item)\n  process folder (3)     : 370 items, total 15.459600211s (41.782703ms/item), work 802.2587ms (2.168266ms/item)\n  process folder (4)     : 374 items, total 15.459571914s (41.335753ms/item), work 697.067563ms (1.863817ms/item)\n  persist changes (0)    : 1862 items, total 15.460767879s (8.303312ms/item), work 3.855306387s (2.070519ms/item)\n  log results (0)        : 1862 items, total 15.460992986s (8.303433ms/item), work 974.618611ms (523.425µs/item)"
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Finished phase 1" elapsed=15.46s totalTasks=1862
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Starting phase 2: Process missing files, checking for moves"
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Checking missing tracks" libraryId=1 libraryName="Music Library"
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: No potential moves found" libraryId=1 libraryName="Music Library"
time="2025-04-22T21:49:24Z" level=info msg="Scanner: Pipeline wall time: 108.220577ms\n  load missing tracks from db (0): 0 items, total 108.170614ms, work 108.133393ms\n  count tasks (0)                : 1 items, total 108.119651ms (108.119651ms/item), work 0s (0s/item)\n  process missing tracks (0)     : 1 items, total 108.173225ms (108.173225ms/item), work 0s (0s/item)"
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Finished phase 2" elapsed=108.6ms totalTasks=0
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Starting phase 4: Import/update playlists"
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Starting phase 3: Refresh all new/changed albums"
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Checking playlists that may need refresh"
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Checking albums that may need refresh" libraryId=1 libraryName="Music Library"
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: No albums needing refresh"
time="2025-04-22T21:49:24Z" level=info msg="Scanner: Pipeline wall time: 2.002878ms\n  load albums from db (0): 0 items, total 1.917157ms, work 1.827251ms\n  count tasks (0)        : 1 items, total 1.838473ms (1.838473ms/item), work 0s (0s/item)\n  filter unmodified (0)  : 1 items, total 1.847491ms (1.847491ms/item), work 0s (0s/item)\n  filter unmodified (1)  : 1 items, total 1.846232ms (1.846232ms/item), work 0s (0s/item)\n  filter unmodified (2)  : 1 items, total 1.891806ms (1.891806ms/item), work 0s (0s/item)\n  filter unmodified (3)  : 1 items, total 1.841621ms (1.841621ms/item), work 0s (0s/item)\n  filter unmodified (4)  : 1 items, total 1.843288ms (1.843288ms/item), work 0s (0s/item)\n  refresh albums (0)     : 1 items, total 1.919601ms (1.919601ms/item), work 0s (0s/item)"
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Finished refreshing albums" refreshed=0 skipped=0
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Refreshed album annotations" albums=0 elapsed="879.672µs"
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Refreshed artist annotations" artists=0 elapsed=1ms
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Finished phase 3" elapsed=5.4ms totalTasks=0
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: No playlists need refreshing"
time="2025-04-22T21:49:24Z" level=info msg="Scanner: Pipeline wall time: 25.690863ms\n  load folders with playlists from db (0): 0 items, total 25.652753ms, work 25.611754ms\n  count tasks (0)                        : 1 items, total 25.484366ms (25.484366ms/item), work 0s (0s/item)\n  process playlists in folder (0)        : 1 items, total 25.329294ms (25.329294ms/item), work 0s (0s/item)\n  process playlists in folder (1)        : 1 items, total 25.489662ms (25.489662ms/item), work 0s (0s/item)\n  process playlists in folder (2)        : 1 items, total 25.643216ms (25.643216ms/item), work 0s (0s/item)"
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Finished refreshing playlists" refreshed=0
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: Finished phase 4" elapsed=26.4ms totalTasks=0
time="2025-04-22T21:49:24Z" level=debug msg="GC: purge empty albums" elapsed=18.4ms
time="2025-04-22T21:49:24Z" level=debug msg="GC: purge empty artists" elapsed=20.5ms
time="2025-04-22T21:49:24Z" level=debug msg="Purging empty folders" totalDeleted=1862
time="2025-04-22T21:49:24Z" level=debug msg="GC: purge empty folders" elapsed=102.2ms
time="2025-04-22T21:49:24Z" level=debug msg="GC: clean album annotations" elapsed="536.937µs"
time="2025-04-22T21:49:24Z" level=debug msg="GC: clean artist annotations" elapsed="365.309µs"
time="2025-04-22T21:49:24Z" level=debug msg="GC: clean media file annotations" elapsed="242.867µs"
time="2025-04-22T21:49:24Z" level=debug msg="GC: clean media file bookmarks" elapsed="370.699µs"
time="2025-04-22T21:49:24Z" level=debug msg="GC: purge non used tags" elapsed=55.4ms
time="2025-04-22T21:49:24Z" level=debug msg="GC: remove orphan playlist tracks" elapsed="784.155µs"
time="2025-04-22T21:49:24Z" level=debug msg="Scanner: GC completed" elapsed=200.3ms
time="2025-04-22T21:49:26Z" level=debug msg="Scanner: Refreshed artist stats" elapsed=1.49s stats=0
time="2025-04-22T21:49:26Z" level=debug msg="Updated tag counts" elapsed=23.6ms table=album updated=149
time="2025-04-22T21:49:26Z" level=debug msg="Updated tag counts" elapsed=232.8ms table=media_file updated=149
time="2025-04-22T21:49:26Z" level=debug msg="Scanner: Updated tag counts" elapsed=256.8ms
time="2025-04-22T21:49:26Z" level=debug msg="Optimizing open connections" numConns=2
time="2025-04-22T21:49:26Z" level=debug msg="Scanner: Optimized DB" elapsed="654.639µs"
time="2025-04-22T21:49:26Z" level=info msg="Scanner: Finished scanning all libraries" duration=18.86s
time="2025-04-22T21:49:26Z" level=debug msg="Library changes imported. Sending refresh event"
time="2025-04-22T21:49:26Z" level=info msg="Scan completed"

Anything else?

No response

Code of Conduct

  • I agree to follow Navidrome's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions