Client-side composite video stream processing
Methods, systems, and apparatus, including computer programs encoded on computer storage media related to multi-stream video encoding for screen sharing a communications session. The system may determine an active pixel area and a remaining pixel area of a video region. of a video region. A first video stream of the active pixel area is generated at a first frame rate. A second video stream of the remaining pixel area is generated at second frame rate, where the second frame rate is a frame rate lower than the first frame rate. A client device may transmit the first video stream and the second video stream to a second client device.
1 . A method, comprising:
receiving, at a first client device connected to a video conference, a first video stream transmitted from a second client device connected to the video conference;
receiving, at the first client device, a second video stream transmitted from the second client device;
combining, at the first client device, the first video stream and the second video stream to produce a composite video stream, wherein combining the first video stream and the second video stream to produce the composite video stream includes synchronizing the first video stream and the second video stream; and
outputting, at the first client device, the composite video stream for display within a user interface of the video conference.
2 . The method of claim 1 , wherein the first video stream has a first frame rate and the second video stream has a second frame rate that is lower than the first frame rate, and wherein outputting the composite video stream for display within the user interface of the video conference comprises:
outputting the composite video stream at the first frame rate.
3 . The method of claim 1 , wherein combining the first video stream and the second video stream to produce the composite video stream comprises:
using a real-time transport protocol syntax element to synchronize the first video stream and the second video stream.
4 . The method of claim 1 , comprising:
separately decoding the first video stream and the second video stream.
5 . The method of claim 1 , wherein the first video stream and the second video stream are separately received.
6 . A non-transitory computer readable medium storing instructions operable to cause one or more processors to perform operations comprising:
receiving, at a first client device connected to a video conference, a first video stream transmitted from a second client device connected to the video conference;
receiving, at the first client device, a second video stream transmitted from the second client device;
combining, at the first client device, the first video stream and the second video stream to produce a composite video stream, wherein combining the first video stream and the second video stream to produce the composite video stream includes synchronizing the first video stream and the second video stream; and
outputting, at the first client device, the composite video stream for display within a user interface of the video conference.
7 . The non-transitory computer readable medium of claim 6 , wherein the composite video stream has a highest frame rate from amongst frame rates of the first video stream and the second video stream.
8 . The non-transitory computer readable medium of claim 6 , wherein the composite video stream includes a first portion corresponding to the first video stream and a second portion corresponding to the second video stream, and wherein the first portion has a first frame rate and the second portion has a second frame rate different from the first frame rate.
9 . The non-transitory computer readable medium of claim 6 , wherein the first video stream and the second video stream are separately received and decoded.
10 . The non-transitory computer readable medium of claim 9 , wherein a stream sequence index syntax is used to synchronize the first video stream and the second video stream.
11 . The non-transitory computer readable medium of claim 6 , wherein the first video stream corresponds to content presented in the video conference by the second client device the second video stream corresponds to a video embedded within the content.
12 . An apparatus, comprising:
one or more memories; and
one or more processors configured to execute instructions stored in the one or more memories to:
receive, during a video conference, a first video stream transmitted from a client device connected to the video conference;
receive a second video stream transmitted from the client device;
combine the first video stream and the second video stream to produce a composite video stream, wherein to combine the first video stream and the second video stream to produce the composite video stream includes to synchronize the first video stream and the second video stream; and
output the composite video stream for display within a user interface of the video conference.
13 . The apparatus of claim 12 , wherein the first video stream has a first frame rate, the second video stream has a second frame rate that is lower than the first frame rate, and the composite video stream has the first frame rate.
14 . The apparatus of claim 12 , wherein a portion of the composite video stream corresponding to the first video stream has a first frame rate and a portion of the composite video stream corresponding to the second video stream has a second frame rate.
15 . The apparatus of claim 12 , wherein the first video stream has a variable bitrate and the second video stream has a constant bitrate.
16 . The apparatus of claim 12 , wherein the first video stream corresponds to a first set of pixels of a main video stream and the second video stream corresponds to a second set of pixels of the main video stream.
17 . The apparatus of claim 16 , wherein the first set of pixels corresponds to content presented within the video conference by the client device and the second set of pixels corresponds to a video embedded within the content.
18 . The apparatus of claim 12 , wherein a syntax element is used to synchronize the first and second video streams based on one or more of a non-simultaneous receipt of the first and second video streams or a non-simultaneous decoding of the first and second video streams.
19 . The apparatus of claim 12 , wherein the first video stream and the second video stream are received in separate transmissions from the client device.
20 . The apparatus of claim 12 , wherein the first video stream and the second video stream are separately decoded.