yuroyami / syncplay-mobile

📱 Unofficial Syncplay client app for Android and iOS. Watch stuff in sync with your friends. Works well with Syncplay on PC. Fully written in Kotlin and Compose multiplatform.
133 stars 5 forks source link

Can syncplay add supplementary frames in the future? #59

Closed Zhaodaidai closed 5 months ago

Zhaodaidai commented 1 year ago

Do you know that SVPlayer APP can fill in frames on mobile devices? Is there a way to introduce supplementary frames to syncplay APP? On the PC side, I can use MPV and svp to make up frames. The viewing experience is very good.

yuroyami commented 1 year ago

I knew about SmoothVideo Project before and I used some of their scripts to encode 60FPS videos and utilized even their plug-in to enable frame interpolation for videos on MPV, it does work like a charm on PC, yet this is the first time I've seen it available on Android, thanks for bringing that to my attention, it's pretty interesting

I'm quite sure they have their own native C++ library integrated in the app in order to interpolate frames, but I will do more research in the matter, perchance might even decompile their APK to see what's going inside. Thanks for the interesting take.

Zhaodaidai commented 1 year ago

Okay, thank you too much, you need to help me tell me, I have bought the Android version of SVP

yuroyami commented 8 months ago

@Zhaodaidai I am planning to give this a chance, I would need to have their APK and reverse-engineer if possible, perhaps I can find their JNI class to see how they're controlling the video engine

yuroyami commented 5 months ago

After discovering the potential of mpv to interpolate framerates in a manner similar (though not identical) to SVP, I incorporated a couple of options for those intrigued by framerate interpolation in the latest release, v0.14.0. You can find it here.

To activate interpolation, adjust the video sync mode option to any mode starting with display (by default, it's set to audio). Then, enable the Framerate interpolation option. This will interpolate framerates to align with the display's refresh rate. For instance, if you're using a 120 Hz display, mpv will attempt to match that rate, sometimes resulting in significant jitter and lag. In such cases, reducing your device's framerate to 60 Hz can greatly improve performance.

Anyway, I do not have access to SVP's source code or native library so using their technology may unfortunately be far from happening, I will be closing this issue.