Jump to content

Watch Party


chef

Recommended Posts

BillOatman
3 hours ago, ebr said:

While I agree with that, I think you will need the ability to designate a "controller" or owner of the party from your plug-in because the only one that can create a party will be an admin and they may not always want to also be the controller.

Or even a partygoer for that matter.

  • Like 1
Link to comment
Share on other sites

 I have learned some very important things while testing this out.

  1. First of all, it is not a good idea to send a 'pause' command to the clients that are waiting. It just will not work the way you would expect.
  2. You must send the stop command to the clients that are waiting. then message them that they are in the queue
  3. When the Watch Party Controller starts playback on their device, send the play command to the other sessions, not the controlling session.

I can tell you that initially  it works. 

It is rough... But... things are always a little rough in the beginning. 

 

  • Like 6
Link to comment
Share on other sites

Cheesegeezer

Mate!! So it works. Like you say, creases need ironing out and yes the delay is because of the session starting twice.

 

epic bro!

Edited by Cheesegeezer
  • Like 1
  • Agree 1
  • Thanks 1
Link to comment
Share on other sites

Mookdog
3 hours ago, chef said:

 I have learned some very important things while testing this out.

  1. First of all, it is not a good idea to send a 'pause' command to the clients that are waiting. It just will not work the way you would expect.
  2. You must send the stop command to the clients that are waiting. then message them that they are in the queue
  3. When the Watch Party Controller starts playback on their device, send the play command to the other sessions, not the controlling session.

I can tell you that initially  it works. 

It is rough... But... things are always a little rough in the beginning. 

 

Holy Hell @cheffor a first shot at it thats pretty darn awesome. Keep it up brother

 

Mook

Link to comment
Share on other sites

e123enitan
3 hours ago, chef said:

 I have learned some very important things while testing this out.

  1. First of all, it is not a good idea to send a 'pause' command to the clients that are waiting. It just will not work the way you would expect.
  2. You must send the stop command to the clients that are waiting. then message them that they are in the queue
  3. When the Watch Party Controller starts playback on their device, send the play command to the other sessions, not the controlling session.

I can tell you that initially  it works. 

It is rough... But... things are always a little rough in the beginning. 

 

@cheifWaooo you are awesome! 

Link to comment
Share on other sites

rbjtech

@chef

Amazing progress  !

10 hours ago, chef said:
  1. First of all, it is not a good idea to send a 'pause' command to the clients that are waiting. It just will not work the way you would expect.

Yea that was just an initial idea on the first post but then realized myself that is not a good idea for a number of reasons haha - better to inform the user they are in the 'party' and then give them back control.  They can either wait - or actually do something else (in the same session) if they wanted to.  When ready, then the controller would start the playback - overwriting whatever they were doing at the time (including existing playback of something else for example such as a 'watch party' intro).

10 hours ago, chef said:
  1. 10 hours ago, chef said:

    When the Watch Party Controller starts playback on their device, send the play command to the other sessions, not the controlling session.

 When I did this initially (just via web api calls from a command line), there was no controller - so kicking off and pausing each 'session' was easy enough.  My initial thought was that there is no overall 'controller' - each user/session has equal rights to do what they want to the session.  The 'controlling' part is watching each session to get the playback state - and if this changes (ie somebody has paused), then re-broadcast that state to all the other sessions to re-sync it.  Any resume state  will probably need a 5 second rewind on all session to keep this sync across all the clients - not sure.

  • Agree 1
Link to comment
Share on other sites

Here is a third test and attempt.

Things for the next version:

1. The Controlling session needs to be paused after starting, it has to wait for each of the other session to catchup in the runtime. It is only a couple seconds wait, and this will create a solid sync between streams.

2. The "Added To Watch Party" message is flooding the clients. This means that each of the watch party sessions should have some kind of flag in the configuration that lets the Controller know that the client has been messaged, alerting the user that they have been added to the party. Pretty straight forward...

 

 

  • Like 1
Link to comment
Share on other sites

rbjtech
56 minutes ago, chef said:

Here is a third test and attempt.

Things for the next version:

1. The Controlling session needs to be paused after starting, it has to wait for each of the other session to catchup in the runtime. It is only a couple seconds wait, and this will create a solid sync between streams.

2. The "Added To Watch Party" message is flooding the clients. This means that each of the watch party sessions should have some kind of flag in the configuration that lets the Controller know that the client has been messaged, alerting the user that they have been added to the party. Pretty straight forward...

 

 

Steady progress Chef - looking great.

So the 're-sync' is my thoughts too - all the clients 'fire' and then you 'resync' them all after X seconds.  The reason for this is to allow all the network connections to open, transcoding to begin and buffer blah blah.  As a 'controller' you have no control over that process on the clients - but what you do have control over is their session once it has settled down.  hence the re-sync - maybe just send a message before hand - 'Watch Party is re-syncing' etc

On the message - that's odd as you send the message to the session don't you ?   I'm unsure why there are multiple messages being queued ?

Another option is to wait for confirmation on the message - if you don't specify a timeout - then I believe it waits for an 'ok' on the remote.  It did for me earlier via the api.

  • Thanks 1
Link to comment
Share on other sites

As far as  your message not being visible when it first showed - it looks like maybe you have framerate matching turned on on that device?  If so, I think the message started while the TV was re-setting its mode.

That is also going to be a situation that affects playback start time as we wait a couple seconds for that to happen when enabled (since the screen goes black).

  • Agree 1
Link to comment
Share on other sites

Fourth attempt gets it about 95% of the way there! Really close to what we are looking for

 

  • Like 3
  • Agree 1
Link to comment
Share on other sites

Cheesegeezer
4 minutes ago, chef said:

Fourth attempt gets it about 95% of the way there! Really close to what we are looking for

 

Awesome chef!! Grats mate

Link to comment
Share on other sites

rbjtech

Great stuff @chef

Maybe post what you have on the Dev channel and we can have a play and give you some feedback on the delay etc ?

  • Agree 1
Link to comment
Share on other sites

I think that instead of waiting for the device to be added to the party after the stream starts (which would include intros if enabled). The moment the user presses play, we'll kill the stream, and put all the logic for adding them then.

That's what we have to do...

Brb.

Link to comment
Share on other sites

BillOatman
20 hours ago, chef said:

 I have learned some very important things while testing this out.

  1. First of all, it is not a good idea to send a 'pause' command to the clients that are waiting. It just will not work the way you would expect.
  2. You must send the stop command to the clients that are waiting. then message them that they are in the queue
  3. When the Watch Party Controller starts playback on their device, send the play command to the other sessions, not the controlling session.

I can tell you that initially  it works. 

It is rough... But... things are always a little rough in the beginning. 

 

1 - 3 are counter to what I saw with comskipper.  But, I did not pause.

  • Like 1
Link to comment
Share on other sites

Junglejim
20 hours ago, chef said:

I think that instead of waiting for the device to be added to the party after the stream starts (which would include intros if enabled). The moment the user presses play, we'll kill the stream, and put all the logic for adding them then.

That's what we have to do...

Brb.

WOW!! 👍🍻 This is cool! @chef your kicking butt here.. :)

Get on the payroll mate. ;)

Edited by Junglejim
  • Like 1
Link to comment
Share on other sites

jspanitz
On 8/1/2022 at 6:00 PM, chef said:

"watch party" works and conveys exactly what it is / does imo

Wow - my comment was made before I realized how much progress had been made.

Let me just say thanks to all working on this.  Happy to test when you are ready.  Roku here so hopeful it will work there but not counting on it based on previous comments.

Edited by jspanitz
Link to comment
Share on other sites

GrimReaper
3 minutes ago, rbjtech said:

btw - can a Mod please rename this thread 'Watch Party' ?

*Done.*

  • Thanks 2
Link to comment
Share on other sites

Mookdog
20 minutes ago, jspanitz said:

Wow - my comment was made before I realized how much progress had been made.

Let me just say thanks to all working on this.  Happy to test when you are ready.  Roku here so hopeful it will work there but not counting on it based on previous comments.

I agree cant wait to test it out. Turning out Fabulous @chef

Link to comment
Share on other sites

Cheesegeezer

Not that this would ever be used but a bit of fun for a watch party intro

I will do a cool animation for release.

chef is smashing this solo btw… such a legend

Edited by Cheesegeezer
  • Like 5
  • Haha 1
Link to comment
Share on other sites

I've come a realization while trying out different ways to produce this.

If you use custom intros on your server, they will play when you are adding your self to the watch party. There isn't much at this time I can see to change that from happening.

Not a deal breaker. 😁

  • Agree 2
Link to comment
Share on other sites

Mookdog
6 hours ago, chef said:

I've come a realization while trying out different ways to produce this.

If you use custom intros on your server, they will play when you are adding your self to the watch party. There isn't much at this time I can see to change that from happening.

Not a deal breaker. 😁

I kinda got rid of my custom intros bc some of my family members could play the intro then the movie wouldnt start. I told them to stop using emby app on their tv and by a streaming device lol

 

Mook

  • Like 1
Link to comment
Share on other sites

Junglejim
11 hours ago, chef said:

I've come a realization while trying out different ways to produce this.

If you use custom intros on your server, they will play when you are adding your self to the watch party. There isn't much at this time I can see to change that from happening.

Not a deal breaker. 😁

Yea I agree, intros are cool but not really necessary for the main scheme of things. I can forgo them.. :) Same for trailers, I've already watched them..

This would be so cool! Good luck mate.. It's already looking good to me. 👍

Edit: @chef @CheesegeezerYou 3rd party dev's have to get your resume filed with Emby..! 😉

Edited by Junglejim
  • Thanks 1
Link to comment
Share on other sites

BillOatman
14 hours ago, chef said:

I've come a realization while trying out different ways to produce this.

If you use custom intros on your server, they will play when you are adding your self to the watch party. There isn't much at this time I can see to change that from happening.

Not a deal breaker. 😁

A "Don't do that" warning will suffice :)

  • Like 1
Link to comment
Share on other sites

Cheesegeezer

Chef just disable the emby setting for cinemaintros  and once watch party is completed reinstate it if it was enabled. and i can add code in to disable VantagePoint if watch party is active.

  • Like 1
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...