BillOatman 502 Posted February 8, 2023 Share 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 Link to comment Share on other sites More sharing options...
sydlexius 244 Posted February 9, 2023 Share 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 Link to comment Share on other sites More sharing options...
bugz000 9 Posted February 9, 2023 Share 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 Link to comment Share on other sites More sharing options...
solidsnakex37 42 Posted February 9, 2023 Share 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 Link to comment Share on other sites More sharing options...
Mookdog 90 Posted February 9, 2023 Share 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 Link to comment Share on other sites More sharing options...
Cheesegeezer 3089 Posted February 9, 2023 Share 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. Link to comment Share on other sites More sharing options...
rbjtech 4313 Posted February 9, 2023 Share 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 Link to comment Share on other sites More sharing options...
bugz000 9 Posted February 9, 2023 Share 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 Link to comment Share on other sites More sharing options...
ebr 14949 Posted February 9, 2023 Share 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 Link to comment Share on other sites More sharing options...
sydlexius 244 Posted February 9, 2023 Share 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). Link to comment Share on other sites More sharing options...
ebr 14949 Posted February 9, 2023 Share 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. Link to comment Share on other sites More sharing options...
BillOatman 502 Posted February 9, 2023 Share 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 Link to comment Share on other sites More sharing options...
Mookdog 90 Posted February 9, 2023 Share 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 Link to comment Share on other sites More sharing options...
quickmic 1371 Posted February 11, 2023 Share 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 Link to comment Share on other sites More sharing options...
BillOatman 502 Posted February 12, 2023 Share 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 Link to comment Share on other sites More sharing options...
Cheesegeezer 3089 Posted February 12, 2023 Share 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… Link to comment Share on other sites More sharing options...
quickmic 1371 Posted February 12, 2023 Share 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 Link to comment Share on other sites More sharing options...
BillOatman 502 Posted February 12, 2023 Share 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 Link to comment Share on other sites More sharing options...
chef 3749 Posted February 12, 2023 Author Share 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! Link to comment Share on other sites More sharing options...
BillOatman 502 Posted February 12, 2023 Share 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 Link to comment Share on other sites More sharing options...
Cheesegeezer 3089 Posted February 13, 2023 Share 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! Link to comment Share on other sites More sharing options...
samuelqwe 313 Posted February 13, 2023 Share 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 Link to comment Share on other sites More sharing options...
quickmic 1371 Posted February 13, 2023 Share 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 Link to comment Share on other sites More sharing options...
BillOatman 502 Posted February 13, 2023 Share 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 Link to comment Share on other sites More sharing options...
BillOatman 502 Posted February 13, 2023 Share 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? Link to comment Share on other sites More sharing options...
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