Baseflow / ExoPlayerXamarin

Xamarin bindings library for the Google ExoPlayer library

Home Page:https://baseflow.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Migrating ExoPlayer to androidx.media3.exoplayer

ArchangelWTF opened this issue · comments

commented

So effectively Google has killed off ExoPlayer as it currently stands in favor of Media3 now that Media3 has been fully released. Which means now the question would come of should ExoPlayer in this repository effectively be archived (Due to namespace changes and such) and a new repository be setup for Media3 or should it be continued in this repository?

CC: @martijn00

Former issue(s): #148

Personally I would prefer if there is a way to migrate media3! If any help of any sort is needed for the same from my end i would love to take up a task!

commented

@martijn00 Since I saw you accepted my PR, did you have a chance to look at this issue yet?

I think Microsoft should really do this, but since they don't have any resources or attention to Xamarin I doubt it is going to happen any time soon. The best thing to do for any .NET MAUI or Xamarin developer would be to move to Flutter. The reason not to do that would be if you have to support legacy apps still on Xamarin.

For Exoplayer users looking to migrate to Media3 the best would off course be a smooth transition. It could be done in this repo I think, to ensure that transition. Any thoughts on how to do it?

commented

I think it could be possible for this repository to migrate to Media3 (Especially since for Microsoft it would essentially take another decade to create this library) however the current NuGet package structure would be invalid in this repository and would not match the one that's now existent in Maven (https://maven.google.com/web/index.html#androidx.media3) which would probably require Baseflow to make new packages on NuGet.

I've already been toying with bindings for Media3 and it seems most of our current Transforms still apply and work after having their namespaces changed.

Ok, lets do it on the branch: media3 that i've just created. If you can PR to that with those changes, I can get the nugets out and everything

Alright, so I've taken a break from migrating this library from ExoPlayer to Media3 for a little bit since (re)opening this issue and having the bindings pretty much sit at 55% completion.

I see Microsoft still has not made that much progress binding up Media3, so I've completed the all of the bindings over here and they're pretty much ready to merge apart from a few more things to work out.

One of those things would be for how we push this on NuGet, I'd personally propose we make new packages using a new namespace, and then make a new branch of the current 'develop' so we can still release updates for ExoPlayer (MAUI/Xamarin) if need be. Maybe to include the migration guides to Media3 as all classes in ExoPlayer are now marked deprecated (As of 2.19)

I also would personally prefer ruling out any support for Xamarin.Android with Media3 so that ExoPlayer 2.19 is the last version on that regard, while it is technically possible it's much of a hassle for a platform that people should really be moving to MAUI or other frameworks for.

As for the last thing, I've cleaned up the Metadata of all things Media3 and enabled errors for warnings where the metadata is invalid.. Personally I'd prefer if these warnings as errors stayed as it prevents the clutter that our previous Metadata files were having though it can be a bit annoying when porting the bindings to a newer version.

We can use this library now Media3 ExoPlayer SDK for .NET for Android

`
Anjo.Android.Media3.ExoPlayer (>= 1.1.1)
Anjo.Android.Media3.Common (>= 1.1.1)
Anjo.Android.Media3.Container (>= 1.1.1)
Anjo.Android.Media3.Database (>= 1.1.1)
Anjo.Android.Media3.DataSource (>= 1.1.1)
Anjo.Android.Media3.Decoder (>= 1.1.1)
Anjo.Android.Media3.Extractor (>= 1.1.1)

`

We can use this library now Media3 ExoPlayer SDK for .NET for Android

` Anjo.Android.Media3.ExoPlayer (>= 1.1.1) Anjo.Android.Media3.Common (>= 1.1.1) Anjo.Android.Media3.Container (>= 1.1.1) Anjo.Android.Media3.Database (>= 1.1.1) Anjo.Android.Media3.DataSource (>= 1.1.1) Anjo.Android.Media3.Decoder (>= 1.1.1) Anjo.Android.Media3.Extractor (>= 1.1.1)

`

Are you the one who created them?

We can use this library now Media3 ExoPlayer SDK for .NET for Android
[Anjo.Android.Media3.ExoPlayer](https://www.nuget.org/packages/Anjo.Android.Media3.ExoPlayer/) (>= 1.1.1) [Anjo.Android.Media3.Common](https://www.nuget.org/packages/Anjo.Android.Media3.Common/) (>= 1.1.1) [Anjo.Android.Media3.Container](https://www.nuget.org/packages/Anjo.Android.Media3.Container/) (>= 1.1.1) [Anjo.Android.Media3.Database](https://www.nuget.org/packages/Anjo.Android.Media3.Database/) (>= 1.1.1) [Anjo.Android.Media3.DataSource](https://www.nuget.org/packages/Anjo.Android.Media3.DataSource/) (>= 1.1.1) [Anjo.Android.Media3.Decoder](https://www.nuget.org/packages/Anjo.Android.Media3.Decoder/) (>= 1.1.1) [Anjo.Android.Media3.Extractor](https://www.nuget.org/packages/Anjo.Android.Media3.Extractor/) (>= 1.1.1)

Are you the one who created them?

Yes

Media3.ExoPlayer doesn't even contain the correct bindings, it still references to the old ExoPlayer (2.19.1)

image

Why bother when all the work is practically already done here? #166 (And no I'd rather not see this PR published under a different NuGet) If you need Media3 so badly you can just take it from that PR and use it for your projects.

@ArchangelWTF Do we have a plan or something as to when we will be actually releasing a NuGet for that PR?

@FreakyAli If it were up to me it would already be published due to me already using said bindings in internal projects that I have for apps at the company I work for, but since I only have triage rights for this repository I cant say for certain when they'll get approved and everything will be public.

@ArchangelWTF the reason I ask is because, I wanna create a Videoplayer control for Maui, for both iOS and Android right now so I don't have to wait later on when we actually have a use for it. It will make our lives easier tbh if there is an open source control out there that just works and has features, I kinda don't like the one that community toolkit has it's pretty dull.

Anyway maybe @martijn00 could help us here?

Media3.ExoPlayer doesn't even contain the correct bindings, it still references to the old ExoPlayer (2.19.1)

image Why bother when all the work is practically already done here? #166 (And no I'd rather not see this PR published under a different NuGet) If you need Media3 so badly you can just take it from that PR and use it for your projects.

yes, right this mistake, I will fix it and again release it.

we can check the new update for Media3.ExoPlayer 1.1.1.1
@ArchangelWTF

@ArchangelWTF I guess this can be closed now...