We propose a novel source-rate control scheme for streaming video over wireless channels. This scheme is designed to maximize the bit rate at the encoder while guaranteeing an upper bound on the probability of starvation at the playback buffer. Channel dynamics are captured using the Gilbert-Elliot model, with alternating good and bad periods. In contrast to previous approaches, rate control in our scheme is performed adaptively on a per-cycle basis, where a cycle consists of one good period and the ensuing bad period. The cycle-based approach has two advantages. First, it reduces the fluctuations in the source bit rate, ensuring smooth variations in video quality and avoiding the "saw" effect that is typically observed in frame-by-frame rate control. Second, it makes it possible to derive a closed-form expression for the starvation probability, which we use to determine the optimal source bit rates for the good and bad periods of the following cycle. Because of its low computational complexity, the proposed scheme is attractive for real-time video streaming. Simulations are carried out to assess the performance of the scheme and study the interactions among various system parameters.