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

Replacing the integrated player #42

Closed
yuroyami opened this issue Nov 7, 2022 · 3 comments
Closed

Replacing the integrated player #42

yuroyami opened this issue Nov 7, 2022 · 3 comments
Assignees
Labels
enhancement New feature or request low priority Defines a feature or bug that is low priority to add/fix

Comments

@yuroyami
Copy link
Owner

yuroyami commented Nov 7, 2022

Syncplay Android currently relies on Google's ExoPlayer to play media. On some devices, some formats may not be supported, some other devices are slow and are inefficient using Software Acceleration.

To make sure all formats are supported and Hardware Acceleration is supported, Syncplay Android can use other integral players such as libVLC, IJK Player...etc

These players are built upon FFmpeg, which means all decoding is done natively.

Pros:

  • Hardware Acceleration would be supported.
  • All media formats would be supported.
  • Reading from some raw streams would be made possible.

Cons:

  • Increased app size by about 60 MBs for libVLC and 20 MBs for IJK Player.
  • Less stable and controllable player.

Workarounds:
To overcome the app size issue, I might resort to some peculiar measures:

  • Deploying different flavors for the APK, one that uses ExoPlayer, one for libVLC, and one for IJKPlayer. These flavors will be named for instance: syncplay-android-Vx.x.x-exo.apk etc.

  • Use one APK, but allow the user to download playera as plugins (downloadable at runtime)

Surely, the latter is tougher to implement. I might come around to using the first option. I would have to wrap the syncplay player in a factory class that returns a unified player which simulates all players without ambiguity.

This would be a nice touch since official Syncplay supports multiple players, that are capable of multiple different things.

@yuroyami yuroyami self-assigned this Nov 7, 2022
@yuroyami yuroyami added enhancement New feature or request low priority Defines a feature or bug that is low priority to add/fix Video Player labels Nov 14, 2022
@b0s-at-works
Copy link

b0s-at-works commented Feb 2, 2023

What about MXPlayer? Sorry if it does not have implementation for integration. Just came to me...
I think MXPlyer one of the best players in the world for mobile devices

You can do two versions of app with player integrated and without. May be some peoples will be in peace with your remade current state?

@yuroyami
Copy link
Owner Author

yuroyami commented Feb 2, 2023

@b0s-at-works As far as I've heard, MXPlayer uses IJKPlayer under the hood, it's basically a media playback library that wraps FFmpeg (which plays all formats at ease) whilst ExoPlayer (which is used by Syncplay) only plays what the Android device's codecs internally support.

But, a MXPlayer-like Syncplay can be made possible if I integrate the FFmpeg library into it. That way, it can support all formats. When that's done, Syncplay Android will be available in two flavors, the Lite version (which is the current one), and a FFmpeg version that is much less stable, much bigger in size, but plays all formats with no issues.

@yuroyami
Copy link
Owner Author

yuroyami commented Jun 3, 2023

Added mpv in version (0.12.0)

@yuroyami yuroyami closed this as completed Jun 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request low priority Defines a feature or bug that is low priority to add/fix
Projects
None yet
Development

No branches or pull requests

2 participants