BillOatman 596 Posted February 8, 2023 Posted February 8, 2023 (edited) 27 minutes ago, MBSki said: So can Emby core team take advantage of Jellyfin code or no, as @roaku said... technical and legal reasons in the way. JF came from a old version of Emby when it was open source. But they changed the core architecture and I don't know what else since I have not looked at it closely. So just dropping the code directly into Emby is probably not an option. I suspect they could look at that code and do the equivalent in Emby. JF is also released under the GNU GPL. Closed source, commercial projects like Emby need to tread lightly when even looking at GPL code. That's the legal reason people have mentioned. Edited February 8, 2023 by BillOatman 1
sydlexius 297 Posted February 9, 2023 Posted February 9, 2023 (edited) 3 hours ago, BillOatman said: JF came from a old version of Emby when it was open source. But they changed the core architecture and I don't know what else since I have not looked at it closely. So just dropping the code directly into Emby is probably not an option. I suspect they could look at that code and do the equivalent in Emby. JF is also released under the GNU GPL. Closed source, commercial projects like Emby need to tread lightly when even looking at GPL code. That's the legal reason people have mentioned. Given the nature of how GPL v2/v3 works, you can't merely look at the code in question and implement a version of it without potentially running afoul of copyright issues (it'd still be a derivative work). You'd need to do proper reverse engineering, which involves a "clean room" methodology along the lines of what COMPAQ did to reverse-engineer the IBM BIOS. The short of it is that you have individuals (Group 1) that look at the code who have no knowledge of or access to the target project code (Emby). They define a specification based upon the code they wish to copy, and then hand it off to development (Group 2) to implement it. The resultant compiled project then gets reviewed for QA (potentially with no access to either code bases...Group 3) to compare functionality between the original product and the new one. Rejected code has to be re-implemented without any hints or input from Group 1. Factoid 1: Season 1 of Halt and Catch Fire was a dramatic retelling of COMPAQ's story. Factoid 2: COMPAQ is an acronym for COMPatability And Quality. Edited February 9, 2023 by sydlexius 1
bugz000 9 Posted February 9, 2023 Posted February 9, 2023 wow, i have been after a feature like this for years, but never really cared until recently, now the requirement for it has come, i find it's still not been implemented i've read the entire thread from the last post to this one and through this to find the thread is still ACTIVE, last post 7 hours ago i've several friends in USA i wish to watch movies with but constantly having to resync when nature calls/other makes it impossible with some whos internet connection is strong enough stream it on discord, although the server is in my house, if it's a movie one of us has seen before, the second-time viewer will stream the movie from my server to their desktop so they get best quality then they re-stream it back to me through discord it's completely absurd even if a few seconds out of sync, even without a whole permissions stack as they've all got admin rights on emby anyway, we're all adults even if it was JUST syncing the play/pause and occasionally checking timeline, even if it just prompted a counter to the one furthest ahead to pause theirs for X seconds to bring them in sync again - even the tiniest ammount of automation to make this task easier would be a godsend jellyfin has something like this already, at this point i'd argue it's in embys interest specially since they recently got featured in an LTT video, i'd also argue the release of such feature might even end up in a another LTT video given the success of the last time he spoke about media servers, 1.2 million views in 1 week btw... if that doesn't scream revenue idk what does 1
solidsnakex37 55 Posted February 9, 2023 Posted February 9, 2023 55 minutes ago, bugz000 said: wow, i have been after a feature like this for years, but never really cared until recently, now the requirement for it has come, i find it's still not been implemented i've read the entire thread from the last post to this one and through this to find the thread is still ACTIVE, last post 7 hours ago i've several friends in USA i wish to watch movies with but constantly having to resync when nature calls/other makes it impossible with some whos internet connection is strong enough stream it on discord, although the server is in my house, if it's a movie one of us has seen before, the second-time viewer will stream the movie from my server to their desktop so they get best quality then they re-stream it back to me through discord it's completely absurd even if a few seconds out of sync, even without a whole permissions stack as they've all got admin rights on emby anyway, we're all adults even if it was JUST syncing the play/pause and occasionally checking timeline, even if it just prompted a counter to the one furthest ahead to pause theirs for X seconds to bring them in sync again - even the tiniest ammount of automation to make this task easier would be a godsend jellyfin has something like this already, at this point i'd argue it's in embys interest specially since they recently got featured in an LTT video, i'd also argue the release of such feature might even end up in a another LTT video given the success of the last time he spoke about media servers, 1.2 million views in 1 week btw... if that doesn't scream revenue idk what does You're not wrong. Not to say that Emby doesn't have a lot of features, but when the free option is catching up it's hard to argue. It sounds like there isn't any product roadmap available? 1
Mookdog 90 Posted February 9, 2023 Posted February 9, 2023 Emby Next-gen v8 for kodi has a watch party function now. It just proves it can be done. Actually works quite well Mook
Cheesegeezer 3104 Posted February 9, 2023 Posted February 9, 2023 3 minutes ago, Mookdog said: Emby Next-gen v8 for kodi has a watch party function now. It just proves it can be done. Actually works quite well Mook Nice Mook, what UI elements did you need to incorporate to get it working.
rbjtech 5284 Posted February 9, 2023 Posted February 9, 2023 @chef - Looking at your Github, I don't see the proof of Concept code for Watch Party - if you are ok to share, can you upload ? Maybe as a private repo ? I'd just like to see if this is a 'workable' solution - as from your YT video's - it looked 'functional' ? Thanks ! 1
bugz000 9 Posted February 9, 2023 Posted February 9, 2023 23 minutes ago, rbjtech said: @chef - Looking at your Github, I don't see the proof of Concept code for Watch Party - if you are ok to share, can you upload ? Maybe as a private repo ? I'd just like to see if this is a 'workable' solution - as from your YT video's - it looked 'functional' ? Thanks ! for anyone curious this is the latest video i would consider that absolutely functional, i'd be happy with 10x that delay - just so long as playback is somewhat sync'd adding a programmable offset so you can jog your own client forward or back by 100ms increments would allow for fine tuning (how i sync videos atm is i can sometimes hear the video playing on their end and i'll offset my video by setting it ahead, then double tapping space to pause/unpause until the feedback and my audio are exactly aligned, this ofcourse is not true to life due to latency, but perceptually it is completely sync'd - doing this automatically is difficult, (i suppose you could get playback info and ping NTP server and sync that way though but EVEN WITHOUT THIS, the option to manually input a delay would clear up any other discrepancies) and EVEN WITHOUT THIS i would still use it, it's absolutely functional, if a little rough, but it's a whole lot better than nothing, and that's an understatement 1
ebr 16169 Posted February 9, 2023 Posted February 9, 2023 13 hours ago, sydlexius said: Halt and Catch Fire Great series - especially for anyone who lived through that era. When it comes time for us to implement this (or any) feature, we're not going to "clean room" it or reverse engineer anything. We'll design and implement a solution we feel works best for Emby users. Thanks. 2
sydlexius 297 Posted February 9, 2023 Posted February 9, 2023 28 minutes ago, ebr said: Great series - especially for anyone who lived through that era. When it comes time for us to implement this (or any) feature, we're not going to "clean room" it or reverse engineer anything. We'll design and implement a solution we feel works best for Emby users. Thanks. I enjoyed the first season, however I have little patience for series where the main characters are OP, and as the seasons went on they just so happen to be at the center of a ton huge innovations. A better series may have change cast for each era/innovation (such as Fargo or True Detective).
ebr 16169 Posted February 9, 2023 Posted February 9, 2023 38 minutes ago, sydlexius said: I enjoyed the first season, however I have little patience for series where the main characters are OP, and as the seasons went on they just so happen to be at the center of a ton huge innovations. A better series may have change cast for each era/innovation (such as Fargo or True Detective). To each his own but the series was a vehicle to tell the story of the technical innovations of the past 30-40 years and I thought the characters (and their development) was actually the strongest part of the story. Way off topic now... sorry.
BillOatman 596 Posted February 9, 2023 Posted February 9, 2023 (edited) 2 hours ago, ebr said: Great series - especially for anyone who lived through that era. When it comes time for us to implement this (or any) feature, we're not going to "clean room" it or reverse engineer anything. We'll design and implement a solution we feel works best for Emby users. Thanks. Agreed about the series. Also agreed about the reverse engineering stance, I suspect most here knew that was the case anyway. The big question, asked numerous times in this thread, is when it might get implemented. I realize you probably don't have a good answer for that, which frustrates some. Particularly since it has existed for several years in Emby competitors. Edited February 9, 2023 by BillOatman 3
Mookdog 90 Posted February 9, 2023 Posted February 9, 2023 12 hours ago, Cheesegeezer said: Nice Mook, what UI elements did you need to incorporate to get it working. It was @quickmic who did it in Emby Next Gen v8
quickmic 1703 Posted February 11, 2023 Posted February 11, 2023 (edited) On 2/9/2023 at 10:13 AM, Cheesegeezer said: Nice Mook, what UI elements did you need to incorporate to get it working. Here are some information: As soon as I'm satisfied with the implementation, I'll report all my "custom" API's. However, as mentioned in the thread posted. A basic implementation, doesn't need any (API) modifications on Emby server. It just uses the session API controls. Edited February 11, 2023 by quickmic 1
BillOatman 596 Posted February 12, 2023 Posted February 12, 2023 22 hours ago, quickmic said: Here are some information: As soon as I'm satisfied with the implementation, I'll report all my "custom" API's. However, as mentioned in the thread posted. A basic implementation, doesn't need any (API) modifications on Emby server. It just uses the session API controls. How do the Emby clients "sign up" to be included in the watch party? Something in Kodi or this plugin? Sorry for the basic question but I don't run Kodi and the threads I've seen don't spell it out for a 1st grader 1
Cheesegeezer 3104 Posted February 12, 2023 Posted February 12, 2023 10 minutes ago, BillOatman said: How do the Emby clients "sign up" to be included in the watch party? Something in Kodi or this plugin? Sorry for the basic question but I don't run Kodi and the threads I've seen don't spell it out for a 1st grader Same boat bro, there must be an interface for users to create or join a created party…
quickmic 1703 Posted February 12, 2023 Posted February 12, 2023 49 minutes ago, Cheesegeezer said: Same boat bro, there must be an interface for users to create or join a created party… Yep, the interface (for client assignment) is implemented in next-gen Kodi plugin. However, my understanding was that the Emby watch party plugin from @chef struggled with playback sync. The video he posted shows client assignment was fine. If he uses my sync code and his client assignment, would be a nice plugin for Emby server. 1 1
BillOatman 596 Posted February 12, 2023 Posted February 12, 2023 (edited) 2 hours ago, quickmic said: Yep, the interface (for client assignment) is implemented in next-gen Kodi plugin. However, my understanding was that the Emby watch party plugin from @chef struggled with playback sync. The video he posted shows client assignment was fine. If he uses my sync code and his client assignment, would be a nice plugin for Emby server. I'm curious to see what you use to keep the clients in sync above what @chef has as well. Thanks! Edited February 12, 2023 by BillOatman
chef 3810 Posted February 12, 2023 Author Posted February 12, 2023 3 hours ago, quickmic said: Yep, the interface (for client assignment) is implemented in next-gen Kodi plugin. However, my understanding was that the Emby watch party plugin from @chef struggled with playback sync. The video he posted shows client assignment was fine. If he uses my sync code and his client assignment, would be a nice plugin for Emby server. I'm sorry I missed this post. I would absolutely love to collaborate on something if you're game. "Collaborators", sounds dubious!
BillOatman 596 Posted February 12, 2023 Posted February 12, 2023 9 minutes ago, chef said: I'm sorry I missed this post. I would absolutely love to collaborate on something if you're game. "Collaborators", sounds dubious! Would you prefer co-conspirators? 1
Cheesegeezer 3104 Posted February 13, 2023 Posted February 13, 2023 Am i correct in thinking kodi is python based. @samuelqwe may be able to help here.. he’s good with that code for sure!
samuelqwe 317 Posted February 13, 2023 Posted February 13, 2023 44 minutes ago, Cheesegeezer said: Am i correct in thinking kodi is python based. @samuelqwe may be able to help here.. he’s good with that code for sure! I do believe Kodi add-ons are made in Python, though I’ve never really looked at add-on development much. However, I would be happy to help if it’s needed! 1
quickmic 1703 Posted February 13, 2023 Posted February 13, 2023 (edited) 3 hours ago, samuelqwe said: I do believe Kodi add-ons are made in Python, though I’ve never really looked at add-on development much. However, I would be happy to help if it’s needed! Well the sync code by itself is no magic. The point is getting accurate progress and event callbacks from (in my case Kodi). That's a bit a hassle in Kodi. Not sure what kind of approach the watch party plugin used. I assume it's trying the same as I do by assigning the devices and use the player (callbacks) as controls. e.g. a seek-command on the master should initiate a seek on the client. As mentioned as faster/accurate the callbacks are, as good is the sync (for not optimized) clients. The websocket should do a good job. In my implementation Kodi sends the commands to Emby and Emby forwards to the clients -> 2 hops. If the controller is Emby server itself, there is only one hop (which could help). As I use http to send the (session) commands (and receive via websocket), there is a delay by http (btw would be nice if Emby server supports sending commands via websocket as well). Therefore I added a custom "API" to send offsets (Client must support that). e.g. Master send the seek command (including the position) AND a timestamp when the command was send. When received by the client, it can calculate the delta from the timestamp and add it to the requested seektime position ticks. Ergo playposition is very accurate. Some other custom "APIs" are used as well, but this more eye candy. e.g. a client can confirm a watch together request or not. If not supported, you could force them to participate. Edited February 13, 2023 by quickmic 2 1
BillOatman 596 Posted February 13, 2023 Posted February 13, 2023 (edited) 9 hours ago, quickmic said: Therefore I added a custom "API" to send offsets (Client must support that). e.g. Master send the seek command (including the position) AND a timestamp when the command was send. When received by the client, it can calculate the delta from the timestamp and add it to the requested seektime position ticks. Ergo playposition is very accurate. @chef Something like this might mitigate some of the network latency issues. But I don't think we can do anything like this as we are strictly server side based. Edited February 13, 2023 by BillOatman 1
BillOatman 596 Posted February 13, 2023 Posted February 13, 2023 9 hours ago, quickmic said: Therefore I added a custom "API" to send offsets (Client must support that). e.g. Master send the seek command (including the position) AND a timestamp when the command was send. When received by the client, it can calculate the delta from the timestamp and add it to the requested seektime position ticks. Ergo playposition is very accurate. How did you get the Emby clients to do this?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now