Systems and techniques are provided for synchronizing playback of a video at a plurality of client-side nodes in a network including a server-side node and the plurality of client-side nodes. The system includes logic to receive a sync video message at the server from a first client-side node identifying a sync event time. The system includes logic to map the sync event time at the server to a sync frame identifier. The server sends a follower sync video message to a follower set of one or more other client-side nodes including the sync frame identifier. In response to the follower sync video message the one or more client-side nodes in the follower set can synchronize playing the video at a frame corresponding to the sync frame identifier.
Legal claims defining the scope of protection, as filed with the USPTO.
1. In a network including a server in one or more server-side nodes and a plurality of client-side nodes, a method for synchronizing playback of a video at the plurality of client-side nodes, the method including: storing an index table of relative display times to frame numbers for the video accessible to the server; receiving a play video message at the server from a first client-side node identifying a play video event including a play event time to start play of a video at the first client-side node; mapping the play event time using the index table at the server to a starting frame identifier including a frame number, wherein said mapping includes using the index table to map the play event time to the starting frame identifier; and sending a follower play video message from the server to a follower set of one or more other client-side nodes including the starting frame identifier, in response to which the one or more other client-side nodes in the follower set can start playing the video at a frame corresponding to the starting frame identifier; and receiving a sync video message at the server from the first client-side node identifying a sync event time for synchronizing playback of the video, the sync event time identifying a specific time within the video; mapping, using the index table at the server, the sync event time identifying the specific time within the video to a sync frame identifier identifying a frame number within the video; and sending a follower sync video message from the server to a follower set of one or more other client-side nodes including the sync frame identifier, in response to which the one or more other client-side nodes in the follower set can synchronize playing the video at the frame corresponding to the sync frame identifier.
2. The method of claim 1 , including receiving a sequence of sync video messages, including said first mentioned sync video message, at the server identifying respective sync event times, and sending a sequence of follower sync video messages, including said first mentioned sync video message, from the server to the follower set including the respective sync frame identifiers.
3. The method of claim 1 , including executing an API at the server for the play video message, the follower play video message, the sync video message and the follower sync video message.
4. The method of claim 1 , further including, receiving a load video message from a first client-side node in the plurality of client-side nodes identifying a load video event including an identifier of a video; and sending a follower load video message to the follower set of one or more other client-side nodes in the plurality of client-side nodes, the follower load video message including data identifying the video, in response to which the video can be downloaded at the client-side nodes.
5. The method of claim 4 , further including, receiving acknowledgement messages at the server from client-side nodes in the plurality of client-side nodes after sending the follower load video message, and listing client-side nodes in the follower set of one or more other client-side nodes in response to receipt of the acknowledgement messages within a pre-determined cut-off time interval.
6. The method of claim 4 , further including, composing the index table of relative display times to frame numbers for the video in response to the load video event.
7. The method of claim 1 , further including, using a collaboration system configured for displaying views of a collaboration workspace on an interactive workspace display or an interactive display in a network including the one or more server-side nodes and the plurality of client-side nodes; and delivering to client-side nodes in the plurality of client side nodes, at least part of a log of entries to identify events in the collaboration workspace, the events identified by the entries in the log being related to graphical targets having virtual coordinates within the workspace including a graphical object representing the video, wherein an entry in the log, which identifies an event, comprises data specifying virtual coordinates of a location within the workspace of the graphical target related to the event, a target identifier of the graphical target related to the event to be displayed when rendered on a display of the client-side node the target identifier including a link to said video.
8. The method of claim 1 , further including, receiving a pause video message from the first client-side node identifying a pause video event including a pause event time to pause play of the video at the first client-side node; mapping the pause event time to a pause frame identifier; and sending a follower pause video message to the follower set of one or more other client-side nodes including the pause frame identifier, in response to which the one or more other client-side nodes in the follower set can synchronize pausing the video at a frame corresponding to the pause frame identifier; receiving a seek video message from the first client-side node identifying a seek video event including a seek event time to seek a frame in the video at the first client-side node; mapping the seek event time to a seek frame identifier; and sending a follower seek video message to the follower set of one or more other client-side nodes including the seek frame identifier, in response to which the one or more other client-side nodes in the follower set can synchronize seeking the video at a frame corresponding to the seek frame identifier; receiving a resume video message from the first client-side node identifying a resume video event including a resume event time to resume play of the video at the first client-side node; mapping the resume event time to a resume frame identifier; and sending a follower resume video message to the follower set of one or more other client-side nodes including the resume frame identifier, in response to which the one or more other client-side nodes in the follower set can synchronize resuming play of the video at a frame corresponding to the resume frame identifier; receiving an ask video message from an additional client-side node to enable synchronized playback of the video at the additional client-side node; and sending a next follower sync video message in a sequence of follower sync video messages, in response to which the additional client-side node can synchronize playing the video at a frame corresponding to the sync frame identifier; receiving a late video message from one of the client-side nodes in the follower set to synchronize playback of the video at the one of the client-side nodes in the follower set after the playback of the video has started on the first client-side node; and sending a next follower sync video message in the sequence of follower sync video messages, in response to which the one of the client-side nodes in the follower set can synchronize playing the video at a frame corresponding to the sync frame identifier.
9. The method of claim 1 , further including, receiving a stop video message from the first client-side node identifying a stop video event including a stop event time to stop play of the video at the first client-side node; mapping the stop event time to a stop frame identifier; and sending a follower stop video message to the follower set of one or more other client-side nodes including the stop frame identifier, in response to which the one or more other client-side nodes in the follower set can synchronize stopping play of the video at a frame corresponding to the stop frame identifier.
10. The method of claim 8 , including designating the first client-side node as a leader to source the sync video messages, and changing the designated leader for the video from the first client-side node to another client side node in the set of follower nodes.
11. A system including one or more processors including or having access to memory loaded with computer instructions to synchronize playback of a video at a plurality of client-side nodes in a network including a server in one or more server-side nodes and the plurality of client-side nodes, the instructions, when executed on the one or more processors, implement actions comprising: storing an index table of relative display times to frame numbers for the video accessible to the server; receiving a play video message at the server from a first client-side node identifying a play video event including a play event time to start play of a video at the first client-side node; mapping the play event time using the index table at the server to a starting frame identifier including a frame number, wherein said mapping includes using the index table to map the play event time to the starting frame identifier; and sending a follower play video message from the server to a follower set of one or more other client-side nodes including the starting frame identifier, in response to which the one or more other client-side nodes in the follower set can start playing the video at a frame corresponding to the starting frame identifier; and receiving a sync video message at the server from the first client-side node identifying a sync event time for synchronizing playback of the video, the sync event time identifying a specific time within the video; mapping, using the index table at the server, the sync event time identifying the specific time within the video to a sync frame identifier identifying a frame number within the video; and sending a follower sync video message from the server to a follower set of one or more other client-side nodes including the sync frame identifier, in response to which the one or more other client-side nodes in the follower set can synchronize playing the video at the frame corresponding to the sync frame identifier.
12. The system of claim 11 , further implementing actions comprising: receiving a sequence of sync video messages, including said first mentioned sync video message, at the server identifying respective sync event times, and sending a sequence of follower sync video messages, including said first mentioned sync video message, from the server to the follower set including the respective sync frame identifiers.
13. The system of claim 11 , further implementing actions comprising, executing an API at the server for the play video message, the follower play video message, the sync video message and the follower sync video message.
14. The system of claim 13 , the API further implementing actions comprising: receiving a load video message from a first client-side node in the plurality of client-side nodes identifying a load video event including an identifier of a video; and sending a follower load video message to the follower set of one or more other client-side nodes in the plurality of client-side nodes, the follower load video message including data identifying the video, in response to which the video can be downloaded at the client-side nodes.
15. The system of claim 14 , the API further implementing actions comprising: receiving acknowledgement messages at the server from client-side nodes in the plurality of client-side nodes after sending the follower load video message, and listing client-side nodes in the follower set of one or more other client-side nodes in response to receipt of the acknowledgement messages within a pre-determined cut-off time interval.
16. The system of claim 14 , further implementing actions comprising: composing the index table of relative display times to frame numbers for the video in response to the load video event.
17. The system of claim 11 , further implementing actions comprising: using a collaboration system configured for displaying views of a collaboration workspace on an interactive workspace display or an interactive display in a network including the one or more server-side nodes and the plurality of client-side nodes; and delivering to client-side nodes in the plurality of client side nodes, at least part of a log of entries to identify events in the collaboration workspace, the events identified by the entries in the log being related to graphical targets having virtual coordinates within the workspace including a graphical object representing the video, wherein an entry in the log, which identifies an event, comprises data specifying virtual coordinates of a location within the workspace of the graphical target related to the event, a target identifier of the graphical target related to the event to be displayed when rendered on a display of the client-side node, the target identifier including a link to said video.
18. The system of claim 14 , the API further implementing actions comprising: receiving a pause video message from the first client-side node identifying a pause video event including a pause event time to pause play of the video at the first client-side node; mapping the pause event time to a pause frame identifier; and sending a follower pause video message to the follower set of one or more other client-side nodes including the pause frame identifier, in response to which the one or more other client-side nodes in the follower set can synchronize pausing the video at a frame corresponding to the pause frame identifier; receiving a seek video message from the first client-side node identifying a seek video event including a seek event time to seek a frame in the video at the first client-side node; mapping the seek event time to a seek frame identifier; and sending a follower seek video message to the follower set of one or more other client-side nodes including the seek frame identifier, in response to which the one or more other client-side nodes in the follower set can synchronize seeking the video at a frame corresponding to the seek frame identifier; receiving a resume video message from the first client-side node identifying a resume video event including a resume event time to resume play of the video at the first client-side node; mapping the resume event time to a resume frame identifier; and sending a follower resume video message to the follower set of one or more other client-side nodes including the resume frame identifier, in response to which the one or more other client-side nodes in the follower set can synchronize resuming play of the video at a frame corresponding to the resume frame identifier; receiving a stop video message from the first client-side node identifying a stop video event including a stop event time to stop play of the video at the first client-side node; mapping the stop event time to a stop frame identifier; and sending a follower stop video message to the follower set of one or more other client-side nodes including the stop frame identifier, in response to which the one or more other client-side nodes in the follower set can synchronize stopping play of the video at a frame corresponding to the stop frame identifier; receiving an ask video message from an additional client-side node to enable synchronized playback of the video at the additional client-side node; and sending a next follower sync video message in the sequence of follower sync video messages to the additional client-side node, in response to which the additional client-side node can synchronize playing the video at a frame corresponding to the sync frame identifier; receiving a late video message from one of the client-side nodes in the follower set to synchronize playback of the video at the one of the client-side nodes in the follower set after the playback of the video has started on the first client-side node; and sending a next follower sync video message in the sequence of follower sync video messages to the additional client-side node, in response to which the one of the client-side nodes in the follower set can synchronize playing the video at a frame corresponding to the sync frame identifier.
19. The system of claim 14 , further implementing actions comprising: designating the first client-side node as a leader to source the sync video messages, and changing the designated leader for the video from the first client-side node to another client-side node in the set of follower nodes.
20. A non-transitory computer readable storage medium impressed with computer program instructions to synchronize playback of a video at a plurality of client-side nodes in a network including a server in one or more server-side nodes and the plurality of client-side nodes, the instructions, when executed implement a method comprising: storing an index table of relative display times to frame numbers for the video accessible to the server; receiving a play video message at the server from a first client-side node identifying a play video event including a play event time to start play of a video at the first client-side node; mapping the play event time using the index table at the server to a starting frame identifier including a frame number, wherein said mapping includes using the index table to map the play event time to the starting frame identifier; and sending a follower play video message from the server to a follower set of one or more other client-side nodes including the starting frame identifier, in response to which the one or more other client-side nodes in the follower set can start playing the video at a frame corresponding to the starting frame identifier; and receiving a sync video message at the server from the first client-side node identifying a sync event time for synchronizing playback of the video, the sync event time identifying a specific time within the video; mapping, using the index table at the server, the sync event time identifying the specific time within the video to a sync frame identifier identifying a frame number within the video; and sending a follower sync video message from the server to a follower set of one or more other client-side nodes including the sync frame identifier, in response to which the one or more other client-side nodes in the follower set can synchronize playing the video at the frame corresponding to the sync frame identifier.
21. The non-transitory computer readable storage medium of claim 20 , the computer program instructions implementing the method further comprising: receiving a sequence of sync video messages, including said first mentioned sync video message, at the server identifying respective sync event times, and sending a sequence of follower sync video messages, including said first mentioned sync video message, from the server to the follower set including the respective sync frame identifiers.
22. The non-transitory computer readable storage medium of claim 20 , the computer program instructions further implementing actions comprising, executing an API at the server for a play video message, a follower play video message, the sync video message and the follower sync video message.
23. The non-transitory computer readable storage medium of claim 22 , the API further implementing actions comprising: receiving a load video message from a first client-side node in the plurality of client-side nodes identifying a load video event including an identifier of a video; and sending a follower load video message to the follower set of one or more other client-side nodes in the plurality of client-side nodes, the follower load video message including data identifying the video, in response to which the video can be downloaded at the client-side nodes.
24. The non-transitory computer readable storage medium of claim 23 , the API further implementing actions comprising: receiving acknowledgement messages at the server from client-side nodes in the plurality of client-side nodes after sending the follower load video message, and listing client-side nodes in the follower set of one or more other client-side nodes in response to receipt of the acknowledgement messages within a pre-determined cut-off time interval.
25. The non-transitory computer readable storage medium of claim 23 , the computer program instructions implementing actions comprising: composing the index table of relative display times to frame numbers for the video in response to the load video event.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
April 10, 2020
November 16, 2021
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.