TortugaPower / BookPlayer

Player for your DRM-free audiobooks
GNU General Public License v3.0
1.61k stars 193 forks source link

Opus playback #593

Open kolibrie opened 3 years ago

kolibrie commented 3 years ago

🗣 Context

I have audiobooks that I have ripped from CD into Opus format, and would like to be able to import them into BookPlayer and play them, without having to re-encode them (into a proprietary format).

💬 Narrative

As an audiobook listener I want to be able to play audiobooks in free formats such as Opus So that I do not have to re-encode them in order to listen to them with the BookPlayer app.

✅ Acceptance Criteria

GIVEN an audiobook file in Opus format WHEN I try to import it into BookPlayer and play it THEN the audiobook file is imported successfully and is able to be played.

cannona commented 1 year ago

With Safari supporting opus for WebRTC, hopefully this is also a codec offered by the platform to app devs. And if not now, maybe soon? So hopefully this won't be too painful to implement.

Come on Apple, you don't have to be against everything you didn't invent yourselves. :)

fullstopslash commented 1 year ago

I'd like to chime in and request this as well! Opus is just /far/ superior for audiobooks and other spoken audio. It really out performs so many other codes!

gr4v1ty69 commented 7 months ago

I'd like to chime in and request this as well!

skinkwork commented 1 month ago

I'm happy to implement this if no-one else is working on it.

GianniCarlo commented 1 month ago

@skinkwork that would be great! high level when I looked into this, I thought about including the VLCKit library, and depending on how it performs, on the PlayerManager class we could either just replace AVPlayer completely, or if for whatever reason, the VLCMediaPlayer is noticeably slower to load, we could put a layer of abstraction on which type of player is being used based on the current file playing.

There are also other libraries that bring support for Opus but to the lower level AVAudioEngine, to be honest that is still a black box for me, but it is something that I'd like to eventually get into, so that other approach works as well. Let me know if you have any questions, I'll be happy to help in any way I can. We can also continue this over Discord