A method to be performed by a first device for synchronizing playback between the first device (504; B) and a second device (502; A), wherein the first and second devices each have local clocks that are not synchronized, the method comprising: determining a network latency which is a one-way trip time between the first device and the second device; receiving, by the first device from the second device over a network: an identifier of content to play, wherein the content comprises a plurality of frames associated with presentation timestamps that indicate a timing of playback for the content; a particular presentation timestamp which indicates a particular frame in the content to start playback; and an indication of when to play the content, which is a length of time until playback of the particular frame of the content associated with the particular presentation timestamp, wherein the second device will begin playback when the length of time has elapsed after sending the indication of when to play the content; determining, by the first device, a local clock time of the first device at which the first device is to play the content by adding the indication of when to play the content subtracted by the network latency to a time of a local clock of the first device; obtaining, by the first device, from a third device over the network, the content to play based on the received identifier of content to play; receiving, by the first device from the third device, the presentation timestamps embedded in the content; playing the content by the first device in synchronization with the second device based on the presentation timestamps, the time of the local clock of the first device, and the determined local clock time of the first device at which the first device is to play the content; receiving, from the second device, after playback of the content has started, a synchronization packet which includes: (i) a length of time until playback of a second particular frame of the content and (ii) a presentation timestamp associated with the second particular frame of content; determining an expected length of time until playback of the second particular frame based on the presentation timestamp associated with the second particular frame; and adjusting a clock speed of the local clock of the first device based on the determined expected length of time until playback of the second particular frame and the received length of time until playback of the second particular frame to control a rate of playback of the content. determining a network latency which is a one-way trip time between the first device and the second device; receiving, by the first device from the second device over a network: an identifier of content to play, wherein the content comprises a plurality of frames associated with presentation timestamps that indicate a timing of playback for the content; a particular presentation timestamp which indicates a particular frame in the content to start playback; and an indication of when to play the content, which is a length of time until playback of the particular frame of the content associated with the particular presentation timestamp, wherein the second device will begin playback when the length of time has elapsed after sending the indication of when to play the content; an identifier of content to play, wherein the content comprises a plurality of frames associated with presentation timestamps that indicate a timing of playback for the content; a particular presentation timestamp which indicates a particular frame in the content to start playback; and an indication of when to play the content, which is a length of time until playback of the particular frame of the content associated with the particular presentation timestamp, wherein the second device will begin playback when the length of time has elapsed after sending the indication of when to play the content; determining, by the first device, a local clock time of the first device at which the first device is to play the content by adding the indication of when to play the content subtracted by the network latency to a time of a local clock of the first device; obtaining, by the first device, from a third device over the network, the content to play based on the received identifier of content to play; receiving, by the first device from the third device, the presentation timestamps embedded in the content; playing the content by the first device in synchronization with the second device based on the presentation timestamps, the time of the local clock of the first device, and the determined local clock time of the first device at which the first device is to play the content; receiving, from the second device, after playback of the content has started, a synchronization packet which includes: (i) a length of time until playback of a second particular frame of the content and (ii) a presentation timestamp associated with the second particular frame of content; determining an expected length of time until playback of the second particular frame based on the presentation timestamp associated with the second particular frame; and adjusting a clock speed of the local clock of the first device based on the determined expected length of time until playback of the second particular frame and the received length of time until playback of the second particular frame to control a rate of playback of the content.