A method for operating a client device, comprising: requesting a presentation playlist from a first server, wherein the playlist identifies a plurality of chunks to be combined to form a video stream; receiving the playlist from the first server; based on the received playlist, determining that the video stream is live or a video-on-demand; responsive to determining that the video stream is live, determining that a second server can provide a multicast stream of the presentation via a plurality of multicast groups, each multicast group having a modulation and encoding rate that is different from those of the other multicast groups, wherein the second server receives the presentation via unicast from the first server; determining to receive the presentation by multicast, wherein the presentation may be received as either multicast or unicast; joining one of the multicast groups to receive the presentation; determining channel conditions; and joining a second multicast group to receive the presentation at a different modulation and encoding rate than that provided by the first multicast group, based on the channel conditions; wherein receiving the presentation via multicast from the first and second groups comprises: locating boundaries of the chunks based on a chunk information message received with the presentation via multicast; reconstructing the video stream based on the chunk boundaries; and performing a switch to the second multicast group from the first multicast group at one of the chunk boundaries. requesting a presentation playlist from a first server, wherein the playlist identifies a plurality of chunks to be combined to form a video stream; receiving the playlist from the first server; based on the received playlist, determining that the video stream is live or a video-on-demand; responsive to determining that the video stream is live, determining that a second server can provide a multicast stream of the presentation via a plurality of multicast groups, each multicast group having a modulation and encoding rate that is different from those of the other multicast groups, wherein the second server receives the presentation via unicast from the first server; determining to receive the presentation by multicast, wherein the presentation may be received as either multicast or unicast; joining one of the multicast groups to receive the presentation; determining channel conditions; and joining a second multicast group to receive the presentation at a different modulation and encoding rate than that provided by the first multicast group, based on the channel conditions; wherein receiving the presentation via multicast from the first and second groups comprises: locating boundaries of the chunks based on a chunk information message received with the presentation via multicast; reconstructing the video stream based on the chunk boundaries; and performing a switch to the second multicast group from the first multicast group at one of the chunk boundaries. locating boundaries of the chunks based on a chunk information message received with the presentation via multicast; reconstructing the video stream based on the chunk boundaries; and performing a switch to the second multicast group from the first multicast group at one of the chunk boundaries.