A non-transitory computer-readable medium containing computer executable instructions that, when executed by a processor on a server, cause the processor to perform a method for synchronizing playback of media content, the method comprising:
- receiving, by a server, requests for synchronized media content playback of a media content item on a first device and a second device;
- in response to receiving the requests for synchronized media content playback of the media content item from the first device and the second device, transmitting, from the server to the first device, first media content data corresponding to a first stream of the media content item and, from the server to the second device, second media content data corresponding to a second stream of the media content item, wherein the first media content data is to be stored in a first device memory, and wherein the second media content data is to be stored in a second device memory;
- and
- maintaining, by the server, the synchronized media content playback of the media content item on the first device and the second device by determining that the first media content data is being stored in the first device memory at a slower rate than the second media content data is being stored in the second device memory and, in response to determining that the first media content data is being stored in the first device memory at a slower rate than the second media content data is being stored in the second device memory, transmitting a third stream of the media content item in place of the first stream of the media content item, wherein the third stream of the media content item has a lower quality level than the first stream of the media content item.