-
-
Notifications
You must be signed in to change notification settings - Fork 495
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
The Playback Rewrite #1057
Comments
I was looking intro the code for trailer playback last night and I see that the object for external trailers just uses links videos (eg: a link to a youtube video). I'm not sure how feasible it would be, but it seems like a good design for a re-written player might be for it to just play video links. Then other classes would be queried for stuff specific to jellyfin like subtitle object classes, mediastream info, etc. With the current player it's entirely designed around using jellyfin specific classes like BaseItemDto and its MediaStreams and SubtitleInfos, etc. Because of this it's not possible to make exoplayer play an arbitrary youtube link, even though exoplayer is capable of doing so. |
The current implementation already does this, it never uses the Jellyfin API directly to make it easier to update if the ever API changes. This doesn't mean that YouTube video is supported though, the implementation will only allow video from the Jellyfin server. If we want to support YT a server plugin should deal with that, not the client.
My idea is to create some kind of "lookup" service where the playback code queries for data. This service would be implemented in the app code. I haven't worked on this part yet.
I don't think this is possible without using the proprietary YouTube API. |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as spam.
This comment was marked as spam.
Let me give all of you another (quick) status update about the famous playback rewrite. I've been very busy the past few weeks (might even be months, didn't check) on a few key points:
While all of this is great news, I'm also working towards the next release of the app, 0.17.0. The current release started its beta cycle almost a year ago so it's time for a new one. Considering the new video playback is still very early it will not be ready for 0.17. The experimental option for it will also most likely be hidden for the release (still debating this part). This was the quick status update for now, I didn't bother too much with the formatting or even re-reading it so forgive me for any mistakes. Hoping to give the next status update a lot quicker! Happy watching! If you appreciate my work, you can show your support with a donation through GitHub sponsors. |
🚀 What is The Playback Rewrite?
The goal of the rewrite is to create new playback code from scratch for video playback, audio playback and live tv. The new code should be easier to maintain and be prepared for a migration to Jellyfin 11. New features like SyncPlay can be added without much trouble. All code is Kotlin-first and uses the new SDK. It should be used by all our official Android apps for consistent behavior between (Android-) devices when playing files.
The rewrite is a very long project because I'm just one person volunteering to work on Jellyfin in my spare time. There is no hard deadline or specific version goals. This issue contains a task list of the bigger features/changes.
Status updates will be posted occasionally in the comments. Please read the bottom paragraph of this issue before commenting yourself.
🏆 Tasks
This list will change over time, some features might not be available on the initial release of the new playback code. When possible issues/pull requests will be linked for tracking purposes. There is no particular order for this list, new features might be added before restoring older features.
The amount of checked boxes does not indicate progress or completeness of the rewrite. Some changes required to make this happen have been running in production since version 0.15.0.
🏗️ Preparations
Various tasks that need to be completed to work on the rewrite.
🎆 Proof of Concept
🔄 Restoring features
PlayMessage
POST /Sessions/{sessionId}/Playing
only starts playing the first itemId parameter provided #2394🛠️ Integration (ATV)
🛠️ Integration (mobile)
💥 Adding new features
ImageProvider
to proxy imagesServer blockers
Some features cannot be made or won't work great without changes to the server. This is a list of them.
Required to properly implement speed controls, it would also need changes to the dashboard of the web client
Required to implement SyncPlay
❗ This issue
Please do not reply to this issue for any questions about the playback rewrite. The comment sections is meant for our contributors to give updates or discuss the implementation. For anything else, please create a new issue or discussion. We may delete your comment if we consider it off topic.
The text was updated successfully, but these errors were encountered: