The provision of distributed multimedia services is becoming mobile and ubiquitous. Different multimedia services require application-specific Quality of Service (QoS). In this paper, we present QoSTalk, a unified component-based programming environment that allows application developers to specify different application-specific QoS requirements easily. In QoSTalk, we adopt a hierarchical approach to model application configuration graphs for different distributed multimedia services. We design and implement the XML-based Hierarchical QoS Markup Language, called HQML, to describe the hierarchical configuration graph as well as other application-specific QoS requirements and policies. QoSTalk promotes the separation of concerns in developing QoS-aware ubiquitous multimedia applications and thus enables easy programming of QoS-aware applications, running on top of a unified QoS-aware middleware framework. We have prototyped the QoSTalk in Java and CORBA. Our case studies with several multimedia applications show that QoSTalk effectively fills the gap for application developers between the very general facilities provided by the QoS-aware middleware and different kinds of distributed multimedia applications.