Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Possibility for direct play ALAC on Android? #681

Open
AverageHelper opened this issue Apr 6, 2024 · 4 comments
Open

Possibility for direct play ALAC on Android? #681

AverageHelper opened this issue Apr 6, 2024 · 4 comments

Comments

@AverageHelper
Copy link

Possibly related to #225, but on the latest stable version as well as the beta (0.9.5) on Android, ALAC-encoded m4a files won't play without transcoding. As of 0.9.5, the tracks "play", in that the UI shows the current track and progress moves along, but no sound appears. After a few seconds, the app seems to give up, automatically skipping to the next track in the queue. Enabling transcoding enables playback for these tracks. (Good thing the beta permits transcoding downloads now!) FLAC works natively, as expected, but it seems those get transcoded anyway when transcoding is enabled. 😞

I don't know much about audio pipelines, but I tried on Plex just now, and ALAC plays direct as well as FLAC, apparently without transcoding (unless Plex is lying to me, which I guess I can't check for sure without the source code, lol). Other Android Jellyfin clients (I tried all the FOSS ones on this list) seem to play ALAC as well, but none of the other apps would let me disable transcoding or tell me if they are transcoding those tracks, so I don't know for sure if transcoding ALAC is just An Android Thing™ with Jellyfin.

Is there any way to enable direct ALAC play on Android, or does that require some proprietary component that we don't have access to here? (Notably, Plex is closed-source, so I wouldn't put it past them to include that kind of thing there.)

Alternatively, could some way be added, if it doesn't already exist, to conditionally transcode media? Or for the app to detect media it cannot play and have that transcoded?

I've started preferring FLAC for new music purchases, but most of my library is ALAC at the moment. I suppose I'll have to convert those to FLAC eventually, but in the meantime, some way for the app to play FLAC direct while transcoding things like ALAC that it cannot play natively?

@jmshrv
Copy link
Owner

jmshrv commented Apr 6, 2024

Android itself doesn't support ALAC - Finamp uses ExoPlayer to play music, which largely binds us to what Android supports. We might be able to integrate with this ffmpeg decoder module, but off the top of my head, Finamp probably isn't compatible with ffmpeg's licensing. I've discussed alternate player backends at #177, but I don't have the time to make that happen right now.

@Chaphasilor
Copy link
Collaborator

@AverageHelper in addition to what James said, your second suggestion sounds doable. On iOS for example OPUS can't be played directly, and some other users have requested automatic/smart transcoding as well. So a list of known incompatible codecs/containers per platform seems doable.

We first need to get that information though, it's not something Finamp requests for regular playback yet. But I'm working on a feature where I'll need similar information, so I think this could be happening at the end of April.

Until then, you could try downloading your ALAC media to your device as OPUS, Finamp will currently always prefer downloaded media over remote media. So your FLAC would stream without transcoding, and your ALAC could be played from the device :)

@jmshrv
Copy link
Owner

jmshrv commented Apr 12, 2024

Alternatively, you could reencode your library to FLAC, which is supported basically everywhere. I understand that it'd be a bit of a pain if you've got loads of ALAC stuff though :)

@AverageHelper
Copy link
Author

Re-encoding is the eventual plan. Fortunately, I got most of my ALAC tracks from Bandcamp, back before I knew the difference between that and FLAC, so I can re-download those from source pretty easily over time.

Meantime, I just wanna listen to my music, lol

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants