A video stream provider (280, 365, 435, 640, 875, 1430, 1700) for providing an output video stream, the video stream provider comprising: a processor; and a memory storing instructions that, when executed by the processor, causes the video stream provider to: receive a first video stream (630, 1210, 1505) comprising a plurality of video frames from a first satellite (310, 410, 510, 810), the first video stream being a main video stream, encoded by a first video encoder; receive a second video stream (610, 1220, 1510) comprising a plurality of video frames from a second satellite (305, 405, 505, 805), wherein the video frames of the second video stream correspond to the video frames of the first video stream, the second video stream being a complementary video stream, encoded by a second video encoder; decode the main video stream and the complementary video stream; when an uncorrupted video frame of the main video stream is determined, generate (735, 1365, 1615) an output video stream (650, 1245) based on the main video stream; when a corrupted video frame of the main video stream is determined, replace the corrupted video frame with a corresponding video frame from the complementary video stream to generate the output video stream (650, 1245), wherein the corrupted video frame is in the decoded main video stream and the corresponding video frame is in the decoded complementary video stream; output the output video stream; and count a number of corrupted video frames of the main video stream; and when the number of corrupted video frames is greater than a threshold number in a given time period, make the first video stream the complementary video stream and making the second video stream the main video stream. a processor; and a memory storing instructions that, when executed by the processor, causes the video stream provider to: receive a first video stream (630, 1210, 1505) comprising a plurality of video frames from a first satellite (310, 410, 510, 810), the first video stream being a main video stream, encoded by a first video encoder; receive a second video stream (610, 1220, 1510) comprising a plurality of video frames from a second satellite (305, 405, 505, 805), wherein the video frames of the second video stream correspond to the video frames of the first video stream, the second video stream being a complementary video stream, encoded by a second video encoder; decode the main video stream and the complementary video stream; when an uncorrupted video frame of the main video stream is determined, generate (735, 1365, 1615) an output video stream (650, 1245) based on the main video stream; when a corrupted video frame of the main video stream is determined, replace the corrupted video frame with a corresponding video frame from the complementary video stream to generate the output video stream (650, 1245), wherein the corrupted video frame is in the decoded main video stream and the corresponding video frame is in the decoded complementary video stream; output the output video stream; and count a number of corrupted video frames of the main video stream; and when the number of corrupted video frames is greater than a threshold number in a given time period, make the first video stream the complementary video stream and making the second video stream the main video stream. receive a first video stream (630, 1210, 1505) comprising a plurality of video frames from a first satellite (310, 410, 510, 810), the first video stream being a main video stream, encoded by a first video encoder; receive a second video stream (610, 1220, 1510) comprising a plurality of video frames from a second satellite (305, 405, 505, 805), wherein the video frames of the second video stream correspond to the video frames of the first video stream, the second video stream being a complementary video stream, encoded by a second video encoder; decode the main video stream and the complementary video stream; when an uncorrupted video frame of the main video stream is determined, generate (735, 1365, 1615) an output video stream (650, 1245) based on the main video stream; when a corrupted video frame of the main video stream is determined, replace the corrupted video frame with a corresponding video frame from the complementary video stream to generate the output video stream (650, 1245), wherein the corrupted video frame is in the decoded main video stream and the corresponding video frame is in the decoded complementary video stream; output the output video stream; and count a number of corrupted video frames of the main video stream; and when the number of corrupted video frames is greater than a threshold number in a given time period, make the first video stream the complementary video stream and making the second video stream the main video stream.