IP Library Granted Patent US 9,843,767
Granted Patent B2
US 9,843,767 · App. 15/181,362 · Granted Dec 12, 2017

Audio video streaming system and method

Inventors: Philippe Clavel (San Francisco, CA); Timophey Zaitsev (San Francisco, CA); Stefan Birrer (San Francisco, CA); Alexandre Francois (San Francisco, CA)
Assignee: Rabbit, Inc.
H04N7/15H04L12/1822H04L12/1831H04L65/4038H04L65/604H04N7/152H04N21/25891H04N21/4788
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,843,767
App. No.
15/181,362
Granted
Dec 12, 2017
Kind
B2
Abstract

In one embodiment, a method includes sending, to client computing devices that are each associated with a particular user identifier, conversation-group information that identifies a conversation group. The conversation-group information includes a user identifier of a first user of the conversation group. The user identifier of the first user is associated with a first one of the client computing devices. The conversation-group information also includes a server identifier of a streaming server for the conversation group. The method includes receiving, from the first one of the client computing devices, a first audio stream and a first video stream. The method includes receiving, from each of one or more of the client computing devices other than the first one of the client computing devices, a request to access the conversation group. The method includes receiving, from each of one or more of the client computing devices other than the first one of the client computing devices, a second audio stream and a second video stream.

Claims (68)

1. A method comprising:

sending, to a plurality of client computing devices that are each associated with a particular user identifier, conversation-group information that identifies a conversation group, wherein the conversation-group information comprises:

a user identifier of a first user of the conversation group, wherein the user identifier of the first user is associated with a first one of the client computing devices; and

a server identifier of a streaming server for the conversation group;

receiving, from the first one of the client computing devices, a first audio stream and a first video stream;

receiving, from each of one or more of the client computing devices other than the first one of the client computing devices, a request to access the conversation group;

receiving, from each of one or more of the client computing devices other than the first one of the client computing devices, a second audio stream and a second video stream associated with the particular user identifier associated with the client computing device;

receiving, from one of the client computing devices other than the first one of the client computing devices, a request to view a set of conversation groups that the client computing device is permitted to access;

in response to the request to view the set of conversation groups that the client computing device is permitted to access, querying one or more tracking servers to determine the set of conversation groups that the client computing device is permitted to access;

determining video streams associated with the conversation groups in the set of conversation groups that the client computing device is permitted to access;

selecting a representative video stream for each of the conversation groups in the set of conversation groups that the client computing device is permitted to access, wherein each representative video stream comprises a video stream associated with a user identifier of a first user of the conversation group;

sending, to each of one or more of the client computing devices other than the first one of the client computing devices, in response to the request from the client computing device, the first audio stream, the first video stream, one or more of the second audio streams, and one or more of the second videos streams, wherein before being sent the first and second audio streams are mixed into a final audio stream and the streaming server provides for concurrent display on the client computing device both the first and second video streams; and

sending, to the client computing device, the representative video streams for concurrent display on the client computing device.

2. The method of claim 1 , wherein:

sending the first audio stream and the second audio stream from the streaming server comprises sending an ambient audio stream; and

mixing the first and second audio streams into a final stream comprises mixing the ambient audio stream into the final stream.

3. The method of claim 2 , wherein the streaming server selects the ambient audio stream from an ambient-audio-stream provider.

4. The method of claim 1 , further comprising selecting, based on user preferences associated with a user of the client computing device, a subset of conversation groups from the set of conversation groups that the client computing device is permitted to access.

5. The method of claim 1 , wherein mixing the first and second audio streams into a final audio stream comprises synchronizing the first and second audio streams with each other.

6. The method of claim 1 , wherein the first audio stream and first video stream comprise shared content for the conversation group.

7. The method of claim 6 , wherein the first user controls the shared content.

8. The method of claim 7 , wherein the shared content comprises one or more of:

content streamed from the Internet

content streamed from a third-party source; or

content native to the first one of the client-computing devices.

9. A system comprising:

one or more processors, and

a memory coupled to the processors comprising instructions executable by the processors, wherein the processors are operable when executing the instructions to:

send, to a plurality of client computing devices that are each associated with a particular user identifier, conversation-group information that identifies a conversation group, wherein the conversation-group information comprises:

a user identifier of a first user of the conversation group, wherein the user identifier of the first user is associated with a first one of the client computing devices; and

a server identifier of a streaming server for the conversation group;

receive, from the first one of the client computing devices, a first audio stream and a first video stream;

receive, from each of one or more of the client computing devices other than the first one of the client computing devices, a request to access the conversation group;

receive, from each of one or more of the client computing devices other than the first one of the client computing devices, a second audio stream and a second video stream associated with the particular user identifier associated with the client computing device;

receive, from one of the client computing devices other than the first one of the client computing devices, a request to view a set of conversation groups that the client computing device is permitted to access;

in response to the request to view the set of conversation groups that the client computing device is permitted to access, querying one or more tracking servers to determine the set of conversation groups that the client computing device is permitted to access;

determine video streams associated with the conversation groups in the set of conversation groups that the client computing device is permitted to access;

select a representative video stream for each of the conversation groups in the set of conversation groups that the client computing device is permitted to access, wherein each representative video stream comprises a video stream associated with a user identifier of a first user of the conversation group;

send, to each of one or more of the client computing devices other than the first one of the client computing devices, in response to the request from the client computing device, the first audio stream, the first video stream, one or more of the second audio streams, and one or more of the second videos streams, wherein before being sent the first and second audio streams are mixed into a final audio stream and the streaming server provides for concurrent display on the client computing device both the first and second video streams; and

send, to the client computing device, the representative video streams for concurrent display on the client computing device.

10. The system of claim 9 , wherein:

sending the first audio stream and the second audio stream from the streaming server comprises sending an ambient audio stream; and

mixing the first and second audio streams into a final stream comprises mixing the ambient audio stream into the final stream.

11. The system of claim 10 , wherein the streaming server selects the ambient audio stream from an ambient-audio-stream provider.

12. The system of claim 9 , wherein the processors are further operable when executing the instructions to select, based on user preferences associated with a user of the client computing device, a subset of conversation groups from the set of conversation groups that the client computing device is permitted to access.

13. The system of claim 9 , wherein mixing the first and second audio streams into a final audio stream comprises synchronizing the first and second audio streams with each other.

14. The system of claim 9 , wherein the first audio stream and first video stream comprise shared content for the conversation group.

15. The system of claim 14 , wherein the first user controls the shared content.

16. The system of claim 15 , wherein the shared content comprises one or more of:

content streamed from the Internet

content streamed from a third-party source; or

content native to the first one of the client-computing devices.

17. One or more computer-readable non-transitory storage media embodying software that is operable when executed to:

send, to a plurality of client computing devices that are each associated with a particular user identifier, conversation-group information that identifies a conversation group, wherein the conversation-group information comprises:

a user identifier of a first user of the conversation group, wherein the user identifier of the first user is associated with a first one of the client computing devices; and

a server identifier of a streaming server for the conversation group;

receive, from the first one of the client computing devices, a first audio stream and a first video stream;

receive, from each of one or more of the client computing devices other than the first one of the client computing devices, a request to access the conversation group;

receive, from each of one or more of the client computing devices other than the first one of the client computing devices, a second audio stream and a second video stream associated with the particular user identifier associated with the client computing device;

receive, from one of the client computing devices other than the first one of the client computing devices, a request to view a set of conversation groups that the client computing device is permitted to access;

in response to the request to view the set of conversation groups that the client computing device is permitted to access, querying one or more tracking servers to determine the set of conversation groups that the client computing device is permitted to access;

determine video streams associated with the conversation groups in the set of conversation groups that the client computing device is permitted to access;

select a representative video stream for each of the conversation groups in the set of conversation groups that the client computing device is permitted to access, wherein each representative video stream comprises a video stream associated with a user identifier of a first user of the conversation group;

send, to each of one or more of the client computing devices other than the first one of the client computing devices, in response to the request from the client computing device, the first audio stream, the first video stream, one or more of the second audio streams, and one or more of the second videos streams, wherein before being sent the first and second audio streams are mixed into a final audio stream and the streaming server provides for concurrent display on the client computing device both the first and second video streams; and

send, to the client computing device, the representative video streams for concurrent display on the client computing device.

18. The media of claim 17 , wherein the software is further operable when executed to:

send the first audio stream and the second audio stream from the streaming server comprises sending an ambient audio stream; and

mix the first and second audio streams into a final stream comprises mixing the ambient audio stream into the final stream.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2019
From: CLAVEL, PHILIPPE; ZAITSEV, TIMOPHEY; BIRRER, STEFAN; FRANCOIS, ALEXANDRE
To: RABBIT, INC.
Reel/Frame 050570/0060 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2019
From: RABBIT, INC.
To: RABBIT (ASSIGNMENT FOR THE BENEFIT OF CREDITORS), LLC
Reel/Frame 050506/0024 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2019
From: RABBIT (ASSIGNMENT FOR THE BENEFIT OF CREDITORS), LLC
To: RABBIT ASSET PURCHASE CORP.
Reel/Frame 050529/0396 →
Continuity (3)
Continuation 14134330 · Dec 19, 2013
Provisional Application 61739554 · Dec 19, 2012
Related Publication 20160286167A1 · Sep 29, 2016