Current rate control schemes in video coding standards do not have efficient frame-level bit allocation because of the inherent constraints in real-time encoding. In this paper, we assume an offline video encoding environment and proposed a rate control scheme based on optimal bit allocation for low bit rate streaming applications. Specifically, at the encoder, we code each video sequence in two passes. In the first pass, we generate the characteristic information of video sequences, including the rate-distortion (R-D) functions. Then, in the second pass, based on available channel bandwidth and the characteristic information we have extracted in the first pass, we implement frame-level bit allocation in an optimal way so that video sequences can be coded at low bit rate with an improved quality. Experimental results demonstrate the proposed scheme is able to achieve not only noticeable reduction in average distortion but also a more consistent and smoother visual quality.