A computer-implemented method for estimating bandwidth associated with a network that is likely to be available for a future streaming event, the method comprising: receiving a plurality of packets over a network interface and thereby determining a bandwidth of the network; determining a plurality of average bandwidths (240A, 240B, 240C) within a corresponding plurality of first sliding windows (280A, 280B, 280C), each of the first sliding windows having a first duration; defining a second sliding window that includes the plurality of first sliding windows (280A, 280B, 280C), the second sliding window having a second duration that is larger than the first duration, wherein the plurality of first sliding windows are equispaced within the second sliding window; determining whether a bandwidth oscillation is occurring based on the first plurality of average bandwidths within the second sliding window, the bandwidth oscillation having a period; and estimating a future valley in bandwidth at a future time based on the oscillation determination, the estimating comprising: determining that a first average bandwidth within a first sliding window of the plurality of first sliding windows is very low relative to a baseline; determining that a second average bandwidth within a second sliding window of the plurality of first sliding windows and a third average bandwidth within a third sliding window of the plurality of first sliding windows are within a predetermined threshold of each other; and predicting the future valley in bandwidth at a future time that is equal to the difference in time between the first sliding window of the plurality of first sliding windows and the third sliding window of the plurality of first sliding windows. receiving a plurality of packets over a network interface and thereby determining a bandwidth of the network; determining a plurality of average bandwidths (240A, 240B, 240C) within a corresponding plurality of first sliding windows (280A, 280B, 280C), each of the first sliding windows having a first duration; defining a second sliding window that includes the plurality of first sliding windows (280A, 280B, 280C), the second sliding window having a second duration that is larger than the first duration, wherein the plurality of first sliding windows are equispaced within the second sliding window; determining whether a bandwidth oscillation is occurring based on the first plurality of average bandwidths within the second sliding window, the bandwidth oscillation having a period; and estimating a future valley in bandwidth at a future time based on the oscillation determination, the estimating comprising: determining that a first average bandwidth within a first sliding window of the plurality of first sliding windows is very low relative to a baseline; determining that a second average bandwidth within a second sliding window of the plurality of first sliding windows and a third average bandwidth within a third sliding window of the plurality of first sliding windows are within a predetermined threshold of each other; and predicting the future valley in bandwidth at a future time that is equal to the difference in time between the first sliding window of the plurality of first sliding windows and the third sliding window of the plurality of first sliding windows. determining that a first average bandwidth within a first sliding window of the plurality of first sliding windows is very low relative to a baseline; determining that a second average bandwidth within a second sliding window of the plurality of first sliding windows and a third average bandwidth within a third sliding window of the plurality of first sliding windows are within a predetermined threshold of each other; and predicting the future valley in bandwidth at a future time that is equal to the difference in time between the first sliding window of the plurality of first sliding windows and the third sliding window of the plurality of first sliding windows.