This paper presents a general design strategy for streaming media applications in best effort computing and networking environments. Our target application is video on demand using personal computers and the Internet. In this scenario, where resource reservations and admission control mechanisms are not generally available, effective streaming must be able to adapt in a responsive and graceful manner. The design strategy we propose is based on a single simple idea, priority data dropping, or priority drop for short. We evaluate the efficacy of priority drop as an adaptation tool in the video and networking domains. We show how common video compression formats can be extended to support priority drop, thereby becoming streaming friendly. In particular, we demonstrate that priority-drop video allows adaptation over a wide range of rates and with fine granularity, and the adaptation is tailorable through declarative adaptationpolicy specifications. Our technical contribution with respect to video is to show how to express adaptation policies and how to do priority-mapping, an automatic translation from adaptation policies to priority assignments on the basic units of video. For the networking domain, we present priority-progress streaming, a real-time best-effort streaming protocol. We have implemented and released a prototype video streaming system that incorporates prioritydrop video, priority mapping, and priority-progress streaming. The system has the following advantages: it maintains timeliness of the stream in the face of rate fluctuations in the network, it attempts to utilize available bandwidth fully so as to maximize the average video quality, it starts video display quickly after the user initiates the stream, and it limits the number of quality changes that occur. In summary, we will show that priority-drop is very effective: a single video source can be streamed across a wide range of network bandwidths, on networks saturated with competing *