Video streaming services make up a large proportion of Internet traffic on both fixed and mobile access throughout the world. Adaptive streaming allows for dynamical adaptation of the bitrate with varying network conditions, to guarantee the best user experience. Adaptive bitrate algorithms face a significant challenge in correctly estimating the throughput as it varies widely over time. In this paper, we first evaluate the throughput estimation techniques and show that the method that we have used offers stable response to throughput fluctuations while maintaining a stable playback buffer. Then, we propose an adaptive bitrate scheme that intelligently selects the video bitrates based on the estimated throughput and buffer occupancy. We show that the proposed scheme improves viewing experience by achieving a high video rate without taking unnecessary risks and by minimizing the frequency of changes in the video quality. Furthermore, we show that it offers a stable response to short-term fluctuations and responds swiftly to large fluctuations. We evaluate our algorithm for both constant bitrate (CBR) and variable bitrate (VBR) video content by taking into account the segment sizes and show that it significantly improves the quality of video streaming.