[Enhancement]: Support multiple file formats per audiobook #1637

Open
opened 2026-02-20 02:04:23 -05:00 by deekerman · 8 comments
Owner

Originally created by @mew1033 on GitHub (Nov 16, 2023).

Describe the feature/enhancement

Similar to how Calibre allows you to store your ebook as multiple formats, it would be nice if audiobookshelf could keep track of multiple file formats for each book. Then the server could intelligently serve different file formats to different clients, or over different connection speeds.

Originally created by @mew1033 on GitHub (Nov 16, 2023). ### Describe the feature/enhancement Similar to how Calibre allows you to store your ebook as multiple formats, it would be nice if audiobookshelf could keep track of multiple file formats for each book. Then the server could intelligently serve different file formats to different clients, or over different connection speeds.
Author
Owner

@advplyr commented on GitHub (Nov 18, 2023):

You can have multiple ebook formats in the same library item folder. They will all show up on the book page and you can switch between which one is primary.

Is that what you are looking for, or can you expand on what you see this looking like?

@advplyr commented on GitHub (Nov 18, 2023): You can have multiple ebook formats in the same library item folder. They will all show up on the book page and you can switch between which one is primary. Is that what you are looking for, or can you expand on what you see this looking like?
Author
Owner

@mew1033 commented on GitHub (Nov 18, 2023):

Oh sorry, I meant multiple formats of audiobooks. So for example if I had a FLAC and a more compressed mp3 of the same book. Bonus points if I can dynamically switch between them while listening. Or if the app auto chooses based on my current connection speed.

@mew1033 commented on GitHub (Nov 18, 2023): Oh sorry, I meant multiple formats of audiobooks. So for example if I had a FLAC and a more compressed mp3 of the same book. Bonus points if I can dynamically switch between them while listening. Or if the app auto chooses based on my current connection speed.
Author
Owner

@advplyr commented on GitHub (Nov 18, 2023):

Ah okay. This is a bit trickier for Abs because an audiobook can be composed of many files. We would have to have a way of grouping the same book together similar to how Plex groups movies. Again this is a bit trickier with audiobooks because we don't have a single source of truth for metadata. With Plex they can assign each movie an ID and any movies with the same ID can be grouped.
Not impossible with audiobooks but we would have to figure out a solution

@advplyr commented on GitHub (Nov 18, 2023): Ah okay. This is a bit trickier for Abs because an audiobook can be composed of many files. We would have to have a way of grouping the same book together similar to how Plex groups movies. Again this is a bit trickier with audiobooks because we don't have a single source of truth for metadata. With Plex they can assign each movie an ID and any movies with the same ID can be grouped. Not impossible with audiobooks but we would have to figure out a solution
Author
Owner

@mew1033 commented on GitHub (Nov 19, 2023):

Could we implement some required folder structure? For example, if you want to have multiple versions of an audiobook, that book must be in a folder by itself. Then you must use another folder named _versions or something.
I know I'll have some versions of a book that have multiple files and other versions of that same book with just one file.

@mew1033 commented on GitHub (Nov 19, 2023): Could we implement some required folder structure? For example, if you want to have multiple versions of an audiobook, that book _must_ be in a folder by itself. Then you _must_ use another folder named `_versions` or something. I know I'll have some versions of a book that have multiple files and other versions of that same book with just one file.
Author
Owner

@jtbrush56 commented on GitHub (Nov 20, 2023):

I'm not sure if this falls into the same request or not, but I was also looking for a way to have multiple versions indexed. My use case was having:

  1. The normal audiobooks
  2. The Graphic Audio version
    Since these two present the story in two very different ways.
@jtbrush56 commented on GitHub (Nov 20, 2023): I'm not sure if this falls into the same request or not, but I was also looking for a way to have multiple versions indexed. My use case was having: 1. The normal audiobooks 2. The Graphic Audio version Since these two present the story in two very different ways.
Author
Owner

@benbou8231 commented on GitHub (Jan 15, 2024):

book must be in a folder by itself. Then you must use another folder named _versions or something.

I like this, just like Plex handle multiple editions for movies.

Ex.:

  • Book1 Name
  • Book2 Name {version-MP3}
  • Book2 Name {version-FLAC}
  • Book3 Name
  • ...
@benbou8231 commented on GitHub (Jan 15, 2024): > book _must_ be in a folder by itself. Then you _must_ use another folder named `_versions` or something. I like this, just like Plex handle [multiple editions for movies](https://support.plex.tv/articles/multiple-editions/). Ex.: - Book1 Name - Book2 Name {version-MP3} - Book2 Name {version-FLAC} - Book3 Name - ...
Author
Owner

@RadioFoxProductions commented on GitHub (Sep 21, 2025):

My best suggestion would be then to do it as follows:

Media is added by the scan
Give the Admin the ability to define the two different quality options as the same book (with a disclaimer that it will remove current progress data for all users)
Have the end user select the quality preset when they start the book (or give administrators the ability to determine quality access based on remote/local or permission levels and access)
If they decide to switch the quality, disclaim that it will remove their current progress in the book, and they will have to remember it.

It's not the most optimal solution, and I'm more just proposing it cause i like problem solving, thank you for indulging my silly thought process

An addition idea was also to have a separate metadata file that keeps track of book name, chapter data, and position in the chapter, as well as the user who it belongs to (similar to what Smart Audiobook Player for android does), this would require that the order of chapters for each quality would need to be the same, and some uniform time signature is used though, but that isn't too hard for audiobooks with multiple quality presets, especially ones exported that way.
(Copied and pasted from a discord conversation)

@RadioFoxProductions commented on GitHub (Sep 21, 2025): My best suggestion would be then to do it as follows: Media is added by the scan Give the Admin the ability to define the two different quality options as the same book (with a disclaimer that it will remove current progress data for all users) Have the end user select the quality preset when they start the book (or give administrators the ability to determine quality access based on remote/local or permission levels and access) If they decide to switch the quality, disclaim that it will remove their current progress in the book, and they will have to remember it. It's not the most optimal solution, and I'm more just proposing it cause i like problem solving, thank you for indulging my silly thought process An addition idea was also to have a separate metadata file that keeps track of book name, chapter data, and position in the chapter, as well as the user who it belongs to (similar to what Smart Audiobook Player for android does), this would require that the order of chapters for each quality would need to be the same, and some uniform time signature is used though, but that isn't too hard for audiobooks with multiple quality presets, especially ones exported that way. (Copied and pasted from a discord conversation)
Author
Owner

@mattague commented on GitHub (Nov 25, 2025):

Another alternative would be using anything developed for #189 to enable syncing within different versions on a more granular level, obviating the need to reset progress.

@mattague commented on GitHub (Nov 25, 2025): Another alternative would be using anything developed for #189 to enable syncing within different versions on a more granular level, obviating the need to reset progress.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/audiobookshelf#1637
No description provided.