專利名稱:用于流傳送媒體的快速啟動的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及流傳送媒體和數(shù)據(jù)傳輸,尤其涉及用于流傳送媒體的快速啟動。
背景技術(shù):
諸如音頻、視頻和/或文本的流傳送等內(nèi)容流傳送正變得越來越流行。術(shù)語“流傳送”通常用于指示表示媒體的數(shù)據(jù)通過網(wǎng)絡(luò)在按需的基礎(chǔ)上提供給客戶機(jī)計(jì)算機(jī)而非在回放之前預(yù)傳送其整體。由此,客戶機(jī)計(jì)算機(jī)在從網(wǎng)絡(luò)服務(wù)器上接收到時(shí)就呈現(xiàn)流內(nèi)容,而非等待傳送整個(gè)“文件”。
流多媒體內(nèi)容的廣泛可用性使得先前不能通過因特網(wǎng)或其它計(jì)算機(jī)網(wǎng)絡(luò)獲得的各種信息內(nèi)容變得可能。實(shí)況內(nèi)容是這類內(nèi)容的一個(gè)重要示例。使用流多媒體,可在事件發(fā)展時(shí)通過因特網(wǎng)廣播值得注意的事件的音頻、視頻或音頻/視覺覆蓋。類似地,電視臺和廣播電臺可通過因特網(wǎng)發(fā)送其實(shí)況內(nèi)容。
然而,當(dāng)前的流傳送技術(shù)具有缺陷。一個(gè)這樣的缺陷是在請求流媒體的回放的時(shí)刻和流媒體開始回放的時(shí)刻之間通常存在某種程度的長延遲。通常在發(fā)生媒體內(nèi)容的回放的客戶機(jī)設(shè)備和媒體內(nèi)容的源之間要求各種通信。從客戶機(jī)設(shè)備的用戶的觀點(diǎn)來看,這一延遲降低了客戶機(jī)設(shè)備的用戶友好度以及流傳送過程的用戶友好度。由此,減小用戶請求流媒體的回放的時(shí)刻和流媒體開始回放的時(shí)刻之間的延遲將是有益的。
發(fā)明概述本發(fā)明描述了用于流傳送媒體的快速啟動。用于流傳送媒體的快速啟動包括用于預(yù)測性啟動的技術(shù)和用于在流傳送期間切換傳送信道的技術(shù)中的一種或兩者。
依照某些方面,用于預(yù)測性啟動的技術(shù)包括客戶機(jī)設(shè)備向服務(wù)器設(shè)備發(fā)送預(yù)測性播放請求。響應(yīng)于該預(yù)測性播放請求,服務(wù)器設(shè)備預(yù)測客戶機(jī)設(shè)備所需的一個(gè)或多個(gè)媒體流,并將所預(yù)測的一個(gè)或多個(gè)媒體流流傳送到客戶機(jī)設(shè)備。客戶機(jī)設(shè)備可選擇與所預(yù)測的一個(gè)或多個(gè)媒體流不同的至少一個(gè)媒體流用于流傳送到客戶機(jī)設(shè)備。如果選擇了至少一個(gè)這樣的媒體流,則對所選擇的至少一個(gè)媒體流的指示被發(fā)送到服務(wù)器設(shè)備,服務(wù)器設(shè)備將所選擇的至少一個(gè)媒體流流傳送到客戶機(jī)設(shè)備。
依照某些方面,用于在流傳送期間切換傳送信道的技術(shù)包括客戶機(jī)設(shè)備向服務(wù)器設(shè)備發(fā)送要將一個(gè)或多個(gè)媒體流流傳送到客戶機(jī)設(shè)備的請求。服務(wù)器設(shè)備接收該請求,并開始使用TCP(傳輸控制協(xié)議)向客戶機(jī)設(shè)備流傳送一個(gè)或多個(gè)媒體流。在使用TCP從服務(wù)器設(shè)備向客戶機(jī)設(shè)備流傳送一個(gè)或多個(gè)媒體流的同時(shí),執(zhí)行探測以確定數(shù)據(jù)是否可使用UDP(用戶數(shù)據(jù)報(bào)協(xié)議)從服務(wù)器設(shè)備流傳送到客戶機(jī)設(shè)備。如果探測指示數(shù)據(jù)可使用UDP從服務(wù)器設(shè)備流傳送到客戶機(jī)設(shè)備,則一個(gè)或多個(gè)媒體流的流傳送從使用TCP切換到使用UDP。然而,如果探測指示數(shù)據(jù)不能使用UDP從服務(wù)器設(shè)備流傳送到客戶機(jī)設(shè)備,則一個(gè)或多個(gè)媒體流的流傳送繼續(xù)使用TCP。
附圖簡述貫穿整篇文檔,相同的標(biāo)號引用相同的組件和/或特征。
圖1示出了支持此處所描述的用于流傳送媒體的快速啟動的示例網(wǎng)絡(luò)環(huán)境。
圖2示出了可使用此處所描述的用于流傳送媒體的快速啟動來流傳送媒體內(nèi)容的示例客戶機(jī)和服務(wù)器設(shè)備。
圖3是更詳細(xì)地示出示例客戶機(jī)和服務(wù)器設(shè)備以及預(yù)測性啟動技術(shù)的框圖。
圖4是示出示例預(yù)測性啟動過程的流程圖。
圖5是更詳細(xì)地示出示例客戶機(jī)和服務(wù)器設(shè)備以及傳送信道切換過程的框圖。
圖6是示出示例傳送信道切換過程的流程圖。
圖7是示出包括預(yù)測性啟動和傳送信道切換的示例快速啟動過程的流程圖。
圖8示出了可用于實(shí)現(xiàn)此處所描述的技術(shù)的通用計(jì)算機(jī)環(huán)境。
較佳實(shí)施例的詳細(xì)描述本發(fā)明描述了用于流傳送媒體的快速啟動。該快速啟動包括用于預(yù)測性啟動的技術(shù)和用于在流傳送期間切換傳送信道的技術(shù)中的一種或兩者。預(yù)測性啟動允許媒體內(nèi)容源預(yù)測做出請求的客戶機(jī)期望哪一(些)媒體流,并開始將所預(yù)測的媒體流流傳送到客戶機(jī)設(shè)備。傳送信道切換技術(shù)允許媒體內(nèi)容源開始使用一種傳送信道(例如,使用傳輸控制協(xié)議(TCP))流傳送媒體流,然后檢查另一種傳送信道(例如,使用用戶數(shù)據(jù)報(bào)協(xié)議(UDP))是否起作用,并且如果該信道起作用則切換到另一信道。
圖1示出了支持此處所描述的用于流傳送媒體的快速啟動的示例網(wǎng)絡(luò)環(huán)境100。在環(huán)境100中,多個(gè)(a)客戶機(jī)計(jì)算設(shè)備102(1)、102(2)、……、102(a)通過網(wǎng)絡(luò)106被耦合到多個(gè)(b)服務(wù)器計(jì)算設(shè)備104(1)、104(2)、……、104(b)。網(wǎng)絡(luò)106用于表示采用各種常規(guī)網(wǎng)絡(luò)協(xié)議(包括公共和/或?qū)S袇f(xié)議)的各種常規(guī)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和類型(包括有線和/或無線網(wǎng)絡(luò))中的任一種。網(wǎng)絡(luò)106可包括例如因特網(wǎng)以及可能一個(gè)或多個(gè)局域網(wǎng)(LAN)的至少一部分。
計(jì)算設(shè)備102和104的每一個(gè)可以是各種常規(guī)計(jì)算設(shè)備中的任一種,包括臺式PC、工作站、大型計(jì)算機(jī)、因特網(wǎng)設(shè)備、游戲控制臺、手持式PC、蜂窩電話、個(gè)人數(shù)字助理(PDA)等等。設(shè)備102和104的一個(gè)或多個(gè)可以是同一類型的設(shè)備,或者可以是不同類型的設(shè)備。
服務(wù)器設(shè)備104可使得各種數(shù)據(jù)中的任一種可用于向客戶機(jī)102流傳送。術(shù)語“流傳送”用于指示表示媒體的數(shù)據(jù)是通過網(wǎng)絡(luò)提供給客戶機(jī)設(shè)備的,且該內(nèi)容的回放可在內(nèi)容被全部傳送之前開始(例如,在按需的基礎(chǔ)上提供數(shù)據(jù)而非在回放之前預(yù)傳送全部數(shù)據(jù))。數(shù)據(jù)可以是公共可用的,或者可以是受限制的(例如,僅限由某些用戶、僅當(dāng)支付了適當(dāng)?shù)馁M(fèi)用時(shí)可用等等)。數(shù)據(jù)可以是各種一種或多種類型的內(nèi)容中的任一種,諸如音頻、視頻、文本、動畫等等。另外,數(shù)據(jù)可以被預(yù)編碼或者可以是“實(shí)況的”(例如,執(zhí)行作為音樂會捕捉的音樂會的數(shù)字表示,并使其可用于在捕捉之后不久進(jìn)行流傳送)。
客戶機(jī)設(shè)備102可從將流媒體內(nèi)容儲存為文件的服務(wù)器104處接收流媒體,或者可從接收來自某一其它來源的流媒體的服務(wù)器104處接收流媒體。例如,服務(wù)器104可從將流媒體內(nèi)容儲存為文件的另一服務(wù)器處接收流媒體,或可從某一其它來源(例如,對“實(shí)況”事件進(jìn)行編碼的編碼器)接收流媒體。
如此處所使用的,流傳送媒體指將一個(gè)或多個(gè)媒體流從一個(gè)設(shè)備流傳送到另一個(gè)(例如,從服務(wù)器設(shè)備104流傳送到客戶機(jī)設(shè)備102)。媒體流可包括各種類型的內(nèi)容中的任一種,諸如音頻、視頻、文本等中的一個(gè)或多個(gè)。
圖2示出了可使用此處所描述的用于流傳送媒體的快速啟動來流傳送媒體內(nèi)容的示例客戶機(jī)和服務(wù)器設(shè)備。在客戶機(jī)設(shè)備102和服務(wù)器設(shè)備104處都遵循多個(gè)不同的協(xié)議,以將媒體內(nèi)容從服務(wù)器設(shè)備104流傳送到客戶機(jī)設(shè)備102。這些不同的協(xié)議可負(fù)責(zé)流傳送過程的不同方面。盡管未在圖2中示出,一個(gè)或多個(gè)其它設(shè)備(例如,防火墻、路由器、網(wǎng)關(guān)、網(wǎng)橋等)可位于客戶機(jī)設(shè)備102和服務(wù)器設(shè)備104之間。
在圖2的示例中,使用應(yīng)用程序級協(xié)議150、傳輸協(xié)議152和一個(gè)或多個(gè)傳送信道協(xié)議154作為流傳送過程的一部分。也可采用圖2中未示出的其它協(xié)議(例如,可以在應(yīng)用程序級協(xié)議150和傳輸協(xié)議152之間有其它協(xié)議)。應(yīng)用程序級協(xié)議150是應(yīng)用程序級的協(xié)議,用于控制具有實(shí)時(shí)屬性的數(shù)據(jù)的傳送。應(yīng)用程序級協(xié)議150提供了可任選地可擴(kuò)展的框架,以啟用諸如流音頻和視頻內(nèi)容等實(shí)時(shí)數(shù)據(jù)的受控的按需傳送。應(yīng)用程序級協(xié)議150是用于啟動和指導(dǎo)從媒體服務(wù)器傳送流多媒體的控制協(xié)議。應(yīng)用程序級協(xié)議150的示例包括如1998年4月網(wǎng)絡(luò)工作小組因特網(wǎng)標(biāo)準(zhǔn)草案(RFC)2326中所描述的實(shí)時(shí)流協(xié)議(RTSP),以及1996年5月網(wǎng)絡(luò)工作小組因特網(wǎng)標(biāo)準(zhǔn)草案(RFC)1945或1997年1月網(wǎng)絡(luò)工作小組因特網(wǎng)標(biāo)準(zhǔn)草案(RFC)2068中所描述的超文本傳輸協(xié)議(HTTP)。
應(yīng)用程序級協(xié)議150使用傳輸協(xié)議152用于傳送諸如流音頻和視頻等實(shí)時(shí)數(shù)據(jù)。傳輸協(xié)議152為媒體流定義了分組格式。傳輸協(xié)議152提供了適用于通過組播或單播網(wǎng)絡(luò)服務(wù)發(fā)送諸如音頻、視頻或模擬數(shù)據(jù)等實(shí)時(shí)數(shù)據(jù)的應(yīng)用程序的端對端網(wǎng)絡(luò)傳輸功能。傳輸協(xié)議152的示例包括2003年7月網(wǎng)絡(luò)工作小組因特網(wǎng)標(biāo)準(zhǔn)草案(RFC)3550中所描述的實(shí)時(shí)傳輸協(xié)議(RTP)和實(shí)時(shí)控制協(xié)議(RTCP)。RTP未著眼于資源保留,并且不保證實(shí)時(shí)服務(wù)的服務(wù)質(zhì)量。數(shù)據(jù)傳輸通過控制協(xié)議(RTCP)來增加,以允許以可伸縮至大型組播網(wǎng)絡(luò)的方式監(jiān)視數(shù)據(jù)傳送,并提供某一控制和標(biāo)識功能。
傳輸協(xié)議152使用傳送信道協(xié)議154用于傳輸連接。傳送信道協(xié)議154包括用于將數(shù)據(jù)分組從服務(wù)器設(shè)備104傳送到客戶機(jī)設(shè)備102的一個(gè)或多個(gè)信道。每一信道通常用于發(fā)送單媒體流的數(shù)據(jù)分組,盡管在替換實(shí)施例中,可使用單個(gè)信道來發(fā)送多個(gè)媒體流的數(shù)據(jù)分組。傳送信道協(xié)議154的示例包括傳輸控制協(xié)議(TCP)分組和用戶數(shù)據(jù)報(bào)協(xié)議(UDP)分組。TCP確保數(shù)據(jù)分組的傳送,而UDP不確保數(shù)據(jù)分組的傳送。通常,使用TCP傳送數(shù)據(jù)分組比使用UDP傳送數(shù)據(jù)分組更可靠,但也更耗時(shí)。
圖3是更詳細(xì)地示出示例客戶機(jī)和服務(wù)器設(shè)備以及預(yù)測性啟動技術(shù)的框圖。在某些實(shí)施例中,圖2的協(xié)議150、152和154包括在圖3的客戶機(jī)和服務(wù)器設(shè)備中,但未示出。此外,盡管未在圖3中示出,一個(gè)或多個(gè)其它設(shè)備(例如,防火墻、路由器、網(wǎng)關(guān)、網(wǎng)橋等)可位于客戶機(jī)設(shè)備102和服務(wù)器設(shè)備104之間。
客戶機(jī)設(shè)備102通過向服務(wù)器設(shè)備104發(fā)送預(yù)測性播放請求來啟動預(yù)測性啟動過程。預(yù)測性播放請求182可包括協(xié)助服務(wù)器設(shè)備104預(yù)測客戶機(jī)設(shè)備102期望哪些媒體流的各種信息。該信息可包括,例如,關(guān)于客戶機(jī)設(shè)備102的信息、關(guān)于客戶機(jī)設(shè)備102的用戶的信息、和/或關(guān)于服務(wù)器設(shè)備104和客戶機(jī)設(shè)備102之間的連接的信息。服務(wù)器設(shè)備104接收該預(yù)測性播放請求,并預(yù)測客戶機(jī)設(shè)備102期望哪一(些)媒體流。該預(yù)測通常至少部分地基于預(yù)測性播放請求中所包括的信息。
服務(wù)器設(shè)備104然后開始將它所預(yù)測的客戶機(jī)設(shè)備102期望的媒體流流傳送(184)到客戶機(jī)設(shè)備102。由此,圖3所示的示例中,從服務(wù)器設(shè)備104向客戶機(jī)設(shè)備102的媒體內(nèi)容的流傳送開始響應(yīng)于在服務(wù)器設(shè)備104處接收到的來自客戶機(jī)設(shè)備102的第一個(gè)請求。作為流傳送所預(yù)測的流184的一部分,服務(wù)器設(shè)備104包括對客戶機(jī)設(shè)備102可用的各種媒體流的描述。這各種媒體流通常包括由服務(wù)器設(shè)備104預(yù)測的媒體流以及一個(gè)或多個(gè)其它流。
客戶機(jī)設(shè)備102接收來自服務(wù)器104的流媒體,并處理該流媒體。該過程可包括,例如,在客戶機(jī)設(shè)備102處緩沖該流媒體用于向用戶演示。另外,客戶機(jī)設(shè)備102檢查從服務(wù)器設(shè)備104接收到的對客戶機(jī)設(shè)備102可用的各種媒體流的描述,并確定當(dāng)前流傳送到客戶機(jī)設(shè)備102的預(yù)測的流是否的確是客戶機(jī)設(shè)備102所期望的流。如果它們是期望的流,則客戶機(jī)設(shè)備102無需采取其它行動。然而,如果它們不是所期望的流,則客戶機(jī)設(shè)備102向服務(wù)器設(shè)備104發(fā)送流選擇186。流選擇186標(biāo)識了客戶機(jī)設(shè)備102所期望的流。
服務(wù)器設(shè)備104接收流選擇186,并將所選擇的流188流傳送到客戶機(jī)設(shè)備102。流選擇186可標(biāo)識一個(gè)或多個(gè)流,并且可標(biāo)識要替換所預(yù)測的流或要除所預(yù)測的流之外進(jìn)行流傳送的流。如果標(biāo)識的流要替換所預(yù)測的流,則所預(yù)測的流的流傳送被服務(wù)器設(shè)備104停止。然而,如果所標(biāo)識的流是除預(yù)測的流之外的流,則該預(yù)測的流的流傳送不被服務(wù)器設(shè)備104停止。
預(yù)測性播放請求182的示例實(shí)施例、用預(yù)測的數(shù)據(jù)流響應(yīng)184、流選擇186和用所選擇的數(shù)據(jù)流響應(yīng)188在以下段落中更詳細(xì)地討論。
預(yù)測性播放請求182包括資源定位符,諸如統(tǒng)一資源定位符(URL)。該資源定位符標(biāo)識了客戶機(jī)設(shè)備102期望的媒體內(nèi)容。然而,對該媒體內(nèi)容可以有各種選項(xiàng)。例如,媒體內(nèi)容可具有以不同的比特率(對于具有不同連接速度的客戶機(jī)設(shè)備)編碼的多個(gè)視頻流、用于不同語言的多個(gè)視頻流、用于不同語言的多個(gè)音頻流、以不同語言表達(dá)的多個(gè)字幕媒體流等等。然而,由于客戶機(jī)設(shè)備102尚不知道這各種選項(xiàng)是什么,因此客戶機(jī)設(shè)備102尚不能選擇這些用于媒體內(nèi)容的不同的各種選項(xiàng)中的特定幾個(gè)。
預(yù)測性播放請求182也可包括一個(gè)或多個(gè)名稱—值對,該名稱—值對包括服務(wù)器設(shè)備104用于預(yù)測客戶機(jī)設(shè)備102期望哪一(些)媒體流的信息。這些名稱—值對包括指示所標(biāo)識的信息類型的名稱部分,以及指示所標(biāo)識的特定信息的值部分?;蛘撸畔⒖捎贸Q—值對以外的方式來標(biāo)識,諸如以預(yù)定義順序出現(xiàn)的一系列值(由此減輕了對名稱部分的需求)。另外,在某些情況下,預(yù)測性播放請求182可以不用名稱—值對或其它方法來包括任何這樣的信息。
包括在播放請求182中的信息可以不同。在某些實(shí)施例中,播放請求182包括客戶機(jī)設(shè)備102和服務(wù)器設(shè)備104之間的連接速度或鏈路帶寬的標(biāo)識,以及客戶機(jī)設(shè)備102所需的語言的標(biāo)識。在其它實(shí)施例中,可除/替代鏈路帶寬和/或語言包括其它信息,諸如期望什么類型的媒體流(例如,僅音頻、僅視頻、視頻和音頻等)、客戶機(jī)設(shè)備102處有什么編解碼器可用(例如,音頻編解碼器、視頻編解碼器等等)、視頻數(shù)據(jù)應(yīng)當(dāng)是什么語言(例如,使得視頻上人的嘴唇與音頻同步)、等等。
客戶機(jī)設(shè)備102可以用不同的方式獲得要包括在預(yù)測性播放請求182中的信息。通常,資源定位符是通過用戶輸入(例如,對特定媒體內(nèi)容的用戶選擇)或通過程序輸入(例如,運(yùn)行在客戶機(jī)設(shè)備102上的程序選擇特定的媒體內(nèi)容)來獲得的。服務(wù)器設(shè)備104用于做出預(yù)測的信息可被預(yù)編程(例如,由開發(fā)者或設(shè)計(jì)者,或通過對偏好的用戶設(shè)置)成發(fā)送預(yù)測性播放請求182的應(yīng)用程序。例如,如果應(yīng)用程序是媒體播放器應(yīng)用程序,則媒體播放器應(yīng)用程序的用戶可能能夠設(shè)置媒體播放器應(yīng)用程序的偏好或選項(xiàng)來標(biāo)識用戶偏愛的語言。關(guān)于連接速度或鏈路帶寬的信息可例如通過客戶機(jī)設(shè)備102上的應(yīng)用程序基于可用帶寬的用戶輸入測試帶寬、通過監(jiān)視先前向客戶機(jī)設(shè)備102流傳送媒體的速率等來獲得。服務(wù)器設(shè)備104用于做出預(yù)測的信息也可替換地被預(yù)編程到服務(wù)器設(shè)備104中(例如,在所有的客戶機(jī)為已知或者期望是相同類型的情況下)。
預(yù)測性播放請求182可采用各種不同的形式。在某些實(shí)施例中,預(yù)測性播放請求182是HTTP獲取(get)命令。或者,可使用其它格式(例如,不同的句法、HTTP張貼(post)命令、RTSP命令等等)。預(yù)測性播放請求包括將該請求標(biāo)識為預(yù)測性播放請求的標(biāo)識符。在某些實(shí)施例中,使用一個(gè)或多個(gè)頭部來將請求標(biāo)識為預(yù)測性播放請求,盡管將請求標(biāo)識為預(yù)測性播放請求的信息可替換地包括在消息主體中。另外,在某些實(shí)現(xiàn)中,請求中一個(gè)或多個(gè)這樣的頭部的存在將該請求標(biāo)識為預(yù)測性播放請求??捎糜趯⒄埱髽?biāo)識為預(yù)測性播放請求的預(yù)測性啟動頭部的示例是“PragmaPredStart=1”,其中值“1”用作指示請求預(yù)測性播放的參數(shù)。
當(dāng)服務(wù)器設(shè)備104接收預(yù)測性播放請求182時(shí),服務(wù)器設(shè)備104標(biāo)識與請求182相關(guān)聯(lián)的媒體流。請求182標(biāo)識了資源,所述資源可以是一個(gè)或多個(gè)文件,其每一個(gè)包括可流傳送到客戶機(jī)設(shè)備102的一個(gè)或多個(gè)媒體流。與資源相關(guān)聯(lián)的是這些媒體流的標(biāo)識,以及通常描述這些媒體流是什么(例如,它們是以什么比特率編碼的;它們是否為音頻、視頻、文本等;它們使用什么語言;等等)的信息。該標(biāo)識可以是資源的一部分(例如,它可以在資源的頭部文件中,諸如ASF(高級流格式或高級系統(tǒng)格式)文件中的ASF頭部),或者可替換地單獨(dú)維護(hù)。
服務(wù)器設(shè)備104使用包括在預(yù)測性播放請求182中的信息以及關(guān)于什么媒體流對于所請求的資源可用的信息,來預(yù)測客戶機(jī)設(shè)備102期望哪一(些)媒體流。服務(wù)器設(shè)備104也可采用附加信息,諸如由服務(wù)器設(shè)備104的管理員或用戶提供的默認(rèn)值、先前流傳送到客戶機(jī)設(shè)備102(和/或該客戶機(jī)設(shè)備104)的媒體流等等。預(yù)測客戶機(jī)設(shè)備102期望哪一(些)媒體流的確切方式可基于對服務(wù)器設(shè)備可用的信息而改變。
作為示例,假定客戶機(jī)設(shè)備102發(fā)送對要流傳送到客戶機(jī)設(shè)備102的影片的預(yù)測性播放請求??蛻魴C(jī)設(shè)備102不知道對該影片有什么媒體流可用,諸如視頻內(nèi)容是以哪些不同的比特率來編碼的、音頻內(nèi)容是以哪些語言可用、字幕以哪些語言可用等等。然而,假定客戶機(jī)設(shè)備102知道其默認(rèn)語言是英語,且它具有500千比特每秒(kbps)的連接速度。因此,客戶機(jī)設(shè)備102向服務(wù)器設(shè)備104發(fā)送對影片的預(yù)測性播放請求,并在該預(yù)測性播放請求中包括對其默認(rèn)語言為英語以及其默認(rèn)連接速度是500kbps的指示。
服務(wù)器設(shè)備104接收該預(yù)測性播放請求,并訪問與所請求的影片相關(guān)聯(lián)的、描述所請求的影片的信息。假定該影片具有三個(gè)視頻流,一個(gè)是以100kbps編碼的,另一個(gè)是以300kbps編碼的,還有一個(gè)是以500kbps編碼的。此外,假定影片具有以100kbps編碼的英語音頻流,以及以100kbps編碼的西班牙語音頻流,并且該影片具有以10kbps編碼的法語字幕流,以及以10kbps編碼的日語字幕流。同樣假定與該影片相關(guān)的信息指示視頻流是互斥的(每次僅三個(gè)中的一個(gè)可被流傳送到客戶機(jī)設(shè)備102),音頻流是互斥的(每次僅兩個(gè)中的一個(gè)可被流傳送到客戶機(jī)設(shè)備102),且音頻具有高于視頻的優(yōu)先級。
由于音頻具有高于視頻的優(yōu)先級,因此服務(wù)器設(shè)備104將兩個(gè)音頻流中的一個(gè)流傳送到客戶機(jī)設(shè)備102。此外,由于預(yù)測性播放請求包括對客戶機(jī)設(shè)備102的默認(rèn)語言是英語的指示,因此服務(wù)器設(shè)備104預(yù)測客戶機(jī)設(shè)備102期望英語音頻流。
給定英語音頻流是以100kbps編碼的,且客戶機(jī)設(shè)備102的默認(rèn)連接速度是500kbps,因此服務(wù)器設(shè)備104預(yù)測客戶機(jī)設(shè)備102期望以300kbps編碼的視頻流(因?yàn)橐纛l流是以100kbps編碼的,因此服務(wù)器設(shè)備104預(yù)測有足夠的帶寬來流傳送500kbps的流)。
預(yù)測性播放請求不包括關(guān)于字幕流的任何信息,因此服務(wù)器104在別處進(jìn)行查找以確定是否預(yù)測期望字幕流。由于還有剩下的帶寬(僅使用了500kbps中的400kbps),因此服務(wù)器設(shè)備104可預(yù)測期望字幕流之一。如果在與影片相關(guān)聯(lián)的信息中將字幕流之一標(biāo)識為具有高于其它字幕流的優(yōu)先級,則該字幕流被預(yù)測為客戶機(jī)設(shè)備102所期望的那一個(gè)。或者,以某一其它方式(例如,隨機(jī)地、以在與影片相關(guān)聯(lián)的信息中引用的順序等等)將字幕流之一預(yù)測為客戶機(jī)設(shè)備102所期望的那一個(gè)。
或者,服務(wù)器設(shè)備104可保持客戶機(jī)設(shè)備每隔多久期望各種媒體流的記錄。如果該記錄指示客戶機(jī)設(shè)備不常期望字幕流(例如,小于50%的時(shí)間),則服務(wù)器設(shè)備104可預(yù)測客戶機(jī)設(shè)備102不期望字幕流,且不將任何字幕流流傳送到客戶機(jī)設(shè)備102。
應(yīng)當(dāng)注意,服務(wù)器設(shè)備104預(yù)測的客戶機(jī)設(shè)備102期望的媒體流僅僅是預(yù)測。不保證這些媒體流是客戶機(jī)設(shè)備102的確期望的媒體流。然而,通過做出預(yù)測,服務(wù)器設(shè)備104可立即開始將媒體流流傳送到客戶機(jī)設(shè)備102,而無需等待客戶機(jī)設(shè)備102做出它期望哪些媒體流的選擇。
服務(wù)器設(shè)備104然后將預(yù)測的媒體流流傳送到客戶機(jī)設(shè)備102。服務(wù)器設(shè)備104也傳遞包括對哪些媒體流對請求的資源可用以及哪些流被預(yù)測為客戶機(jī)設(shè)備102所期望的指示的信息。該信息可與預(yù)測的媒體流一起包括在內(nèi),并由此被流傳送到客戶機(jī)設(shè)備102,或者可以用某一其它方式來傳遞,諸如以非流傳送的方式(例如,通過基于HTTP的控制協(xié)議)。在某些實(shí)施例中,該信息包括在依照1998年4月網(wǎng)絡(luò)工作小組因特網(wǎng)標(biāo)準(zhǔn)草案(RFC)2327的會話描述協(xié)議(SDP)的會話描述消息中。
客戶機(jī)設(shè)備102接收所預(yù)測的媒體流,包括對于哪些媒體流對所請求的資源可用以及被預(yù)測為客戶機(jī)設(shè)備102所期望的流的指示??蛻魴C(jī)設(shè)備102然后分析對于哪些媒體流對所請求的資源可用的指示,并選擇與所預(yù)測的媒體流不同的媒體流。對不同的媒體流的選擇是可任選的—如果客戶機(jī)設(shè)備102期望的是服務(wù)器設(shè)備104所預(yù)測的媒體流,則客戶機(jī)設(shè)備102無需做出其它媒體流的選擇。
所選擇的媒體流可以是除所預(yù)測的媒體流之外的媒體流(例如,在前述示例中,沒有一個(gè)字幕流被服務(wù)器設(shè)備104預(yù)測為客戶機(jī)設(shè)備102所期望的,但是客戶機(jī)設(shè)備102可選擇字幕流)。所選擇的媒體流或者可以是所預(yù)測的媒體流的替代(例如,客戶機(jī)設(shè)備102可選擇西班牙語音頻流而非英語音頻流)。
客戶機(jī)設(shè)備102處的選擇可以用不同的方式來執(zhí)行。例如,應(yīng)用程序(例如,媒體播放器程序)可被編程以做出該選擇。作為示例,可向客戶機(jī)設(shè)備的用戶呈現(xiàn)各種可用的媒體流,可允許用戶選擇他或她期望哪一(些)媒體流??蛻魴C(jī)設(shè)備102做出的任何選擇然后被發(fā)送到服務(wù)器設(shè)備104。
在某些實(shí)施例中,諸如當(dāng)使用HTTP用于流傳送媒體時(shí),使用流傳送會話的標(biāo)識符。該標(biāo)識符允許不同的請求彼此相關(guān)聯(lián)。例如,預(yù)測性播放請求可以通過客戶機(jī)設(shè)備102和服務(wù)器設(shè)備104之間的一個(gè)連接發(fā)送,而標(biāo)識所選擇的媒體流的請求通過客戶機(jī)設(shè)備102和服務(wù)器設(shè)備104之間的一個(gè)不同的連接發(fā)送。為使服務(wù)器設(shè)備104能夠知道兩個(gè)請求是彼此相關(guān)的,使用流傳送會話的標(biāo)識符。在某些實(shí)施例中,服務(wù)器設(shè)備104響應(yīng)于預(yù)測性播放請求返回一標(biāo)識符。然后,該標(biāo)識符可由客戶機(jī)設(shè)備102在向服務(wù)器設(shè)備104發(fā)送所選擇的媒體流的請求時(shí)使用,以通知服務(wù)器設(shè)備104,標(biāo)識所選擇的媒體流的請求是與該預(yù)測性播放請求相關(guān)聯(lián)的。
標(biāo)識所選擇的媒體流的請求可以采用各種不同的格式。在某些實(shí)施例中,該請求是Select(選擇)請求,它可例如作為HTTP Post(張貼)命令或HTTP Get(獲取)命令被發(fā)送到服務(wù)器設(shè)備104?;蛘?,該請求可以用其它方式來傳送,諸如使用RTSP命令。Select請求包括將該請求標(biāo)識為Select請求的標(biāo)識符、零個(gè)或多個(gè)頭部、以及可任選的消息主體。在某些實(shí)施例中,標(biāo)識所選擇的媒體流的信息包括在Select請求的一個(gè)或多個(gè)頭部中,盡管標(biāo)識所選擇的媒體流的信息可替換地包括在消息主體中。另外,在某些實(shí)現(xiàn)中,請求中一個(gè)或多個(gè)這樣的頭部的存在將請求標(biāo)識為Select請求。表I示出了可包括在Select請求中的頭部的示例。
表I
描述所選擇的媒體流的信息可以用不同的方式來描述所選擇的媒體流。作為對所選擇的媒體流的描述的一部分,可包括指示要將媒體流的多少數(shù)據(jù)流傳送到客戶機(jī)設(shè)備102(例如,所有幀、僅關(guān)鍵幀等)的“細(xì)化等級(thinning level)”。作為一個(gè)示例,該描述可以是客戶機(jī)設(shè)備102所期望的媒體流的列表,而不涉及服務(wù)器設(shè)備104預(yù)測了哪些流。作為另一示例,該描述可以是除服務(wù)器104所預(yù)測的流之外的、客戶機(jī)設(shè)備102所期望的媒體流的列表。作為又一示例,該描述包括一個(gè)或多個(gè)流對值,每一對標(biāo)識了所預(yù)測的流以及要替換所預(yù)測的流的所選擇的流。作為再一示例,該描述可以是所有媒體流的列表以及對于這些媒體流是否被選中用于流傳送到客戶機(jī)設(shè)備102的標(biāo)識。作為還有一個(gè)示例,該描述可以是“否定”描述(例如,列出客戶機(jī)設(shè)備102不期望的所有媒體流,并由此內(nèi)在地標(biāo)識了客戶機(jī)設(shè)備102所期望的媒體流)。
服務(wù)器設(shè)備104接收Select請求,并開始將所選擇的流流傳送到客戶機(jī)設(shè)備102。服務(wù)器設(shè)備104停止向客戶機(jī)設(shè)備102流傳送被所選擇的流替換的任何預(yù)測的流,但是繼續(xù)流傳送不被所選擇的流替換的任何預(yù)測的流。
預(yù)測性播放請求所標(biāo)識的資源可以與單媒體或多媒體演示或者多個(gè)這樣的演示相關(guān)聯(lián)。例如,資源可標(biāo)識是單個(gè)多媒體演示的影片,即使該影片具有多個(gè)視頻、音頻和/或字幕流。作為另一示例,資源可標(biāo)識影片以及不同影片的商業(yè)廣告和宣傳片。在該示例中,影片可以是一個(gè)多媒體演示,商業(yè)廣告可以是第二個(gè)多媒體演示,宣傳片可以是第三個(gè)多媒體演示。
當(dāng)資源與多個(gè)多媒體演示相關(guān)聯(lián)時(shí),服務(wù)器設(shè)備104可預(yù)測客戶機(jī)設(shè)備102期望哪些演示,并預(yù)測那些演示內(nèi)的哪些媒體流是客戶機(jī)設(shè)備102所期望的。例如,假定與資源相關(guān)聯(lián)的兩個(gè)不同的商業(yè)廣告,一個(gè)商業(yè)廣告是以西班牙觀眾為目標(biāo)的,而另一個(gè)是以中國觀眾為目標(biāo)的。如果預(yù)測性播放請求指示默認(rèn)的語言是西班牙語,則服務(wù)器設(shè)備104可預(yù)測以西班牙觀眾為目標(biāo)的商業(yè)廣告是客戶機(jī)設(shè)備102所期望的,而非以中國觀眾為目標(biāo)的商業(yè)廣告。
應(yīng)當(dāng)注意,在某些情況下,服務(wù)器設(shè)備104可選擇不做出預(yù)測。例如,當(dāng)做出不正確的預(yù)測的可能性太大時(shí)會發(fā)生這一情況。在這些情況下,服務(wù)器設(shè)備104發(fā)送對所請求的資源而言哪些媒體流是可用的指示,但是不啟動對任何預(yù)測的媒體流的流傳送。相反,服務(wù)器設(shè)備104等待,直到客戶機(jī)設(shè)備做出對可用媒體流的一個(gè)或多個(gè)的選擇,并且當(dāng)接收到播放所選擇的媒體流的請求時(shí)啟動對所選擇的媒體流的流傳送。
圖4是示出示例預(yù)測性啟動過程200的流程圖。圖4示出了由客戶機(jī)設(shè)備102(例如,圖1、2和3)以及服務(wù)器設(shè)備104(例如,圖1、2和3)執(zhí)行的動作。由客戶機(jī)設(shè)備102執(zhí)行的動作在圖4的左側(cè)示出,而由服務(wù)器設(shè)備104執(zhí)行的動作在圖4的右側(cè)示出。
最初,客戶機(jī)設(shè)備102生成預(yù)測性播放請求(動作202)。預(yù)測性播放請求標(biāo)識了期望被流傳送到客戶機(jī)設(shè)備102的一個(gè)或多個(gè)媒體或多媒體演示,被表示為服務(wù)器設(shè)備104的資源。客戶機(jī)設(shè)備102向服務(wù)器設(shè)備104發(fā)送預(yù)測性播放請求(動作204),服務(wù)器設(shè)備104接收該預(yù)測性播放請求(動作206)。
響應(yīng)于預(yù)測性播放請求,服務(wù)器設(shè)備104預(yù)測客戶機(jī)設(shè)備102所期望的一個(gè)或多個(gè)媒體流(動作208)。如上所述,該預(yù)測可基于不同的因素,諸如包括在預(yù)測性播放請求中的信息、服務(wù)器設(shè)備104的默認(rèn)設(shè)置、與所請求的資源相關(guān)聯(lián)的信息、對流媒體的先前的請求等等。所預(yù)測的媒體流然后被流傳送到客戶機(jī)設(shè)備102(動作210)。作為動作210中該流傳送的一部分,對所預(yù)測的媒體流以及對所請求的資源可用的媒體流的指示也被發(fā)送到客戶機(jī)設(shè)備102。或者,如上所述,對所預(yù)測的媒體流以及對所請求的資源可用的媒體流的指示可以用包括非流傳送方式的其它方式被傳遞到客戶機(jī)設(shè)備102。
客戶機(jī)設(shè)備102接收所預(yù)測的媒體流(動作212),并分析所接收的對所預(yù)測的媒體流以及對所請求的資源可用的媒體流的指示。過程200然后基于客戶機(jī)設(shè)備102是否期望將一個(gè)或多個(gè)與所預(yù)測的媒體流不同的媒體流流傳送到其上來繼續(xù)。如上所述,對于這一不同媒體流的選擇可以用不同的方式來做出,諸如通過客戶機(jī)設(shè)備102上的應(yīng)用程序或客戶機(jī)設(shè)備102的用戶輸入。如果不選擇不同的媒體流(動作214),則客戶機(jī)設(shè)備102的確期望服務(wù)器設(shè)備104所預(yù)測的的媒體流,并且繼續(xù)對所接收的媒體流的處理(動作216)。該處理可包括,例如,在客戶機(jī)設(shè)備102處緩沖所接收的媒體流和/或呈現(xiàn)(例如,回放)所接收的媒體流。
然而,如果選擇了不同的媒體流,則客戶機(jī)設(shè)備102向服務(wù)器設(shè)備104發(fā)送對那些所選擇的媒體流的指示(動作218)。服務(wù)器設(shè)備104接收對所選擇的媒體流的指示(動作220),并標(biāo)識要發(fā)送到客戶機(jī)102的媒體流(動作222)。如上所述,客戶機(jī)設(shè)備102所選擇的流可以是除所預(yù)測的媒體流之外的流,或者可以替代一個(gè)或多個(gè)所預(yù)測的媒體流。服務(wù)器設(shè)備104在動作222所標(biāo)識的流包括被指示為客戶機(jī)設(shè)備102所選擇的流(在動作220接收),并且還可包括服務(wù)器設(shè)備104在動作208預(yù)測的一個(gè)或多個(gè)流。
服務(wù)器設(shè)備104然后對流傳送到客戶機(jī)102的所標(biāo)識的媒體流進(jìn)行流傳送(動作204)。通常,所標(biāo)識的媒體流是從當(dāng)前回放位置開始流傳送的(例如,當(dāng)接收到選擇請求時(shí),標(biāo)識當(dāng)前流傳送的媒體流的時(shí)間位置,然后確定所標(biāo)識的媒體流的對應(yīng)的時(shí)間位置,并且所標(biāo)識的媒體流的流傳送在該確定的位置處開始)。或者,可使用其它起始點(diǎn),諸如所標(biāo)識的媒體流的開始。客戶機(jī)設(shè)備102從服務(wù)器設(shè)備103接收所標(biāo)識的媒體流(動作226),并處理所接收的媒體流(動作216)。該處理可包括,例如在客戶機(jī)設(shè)備102處緩沖媒體流和呈現(xiàn)(例如,回放)媒體流。
返回到圖2,此處所討論的快速啟動還包括在流傳送期間切換傳送信道的過程。傳輸協(xié)議152可使用各種不同的傳送信道。通常,每一媒體流是使用不同的傳送信道從服務(wù)器設(shè)備104發(fā)送到客戶機(jī)設(shè)備102的。用于不同媒體流的這些傳送信道通常是相同的類型,盡管可替換地,它們可以是不同的類型。兩種常用類型的傳送信道是TCP信道和UDP信道。TCP信道以被稱為TCP分組的分組來發(fā)送數(shù)據(jù),而UDP信道以被稱為UDP分組的分組來發(fā)送數(shù)據(jù)。通常,使用TCP傳送數(shù)據(jù)分組比使用UDP傳送數(shù)據(jù)分組更可靠,但更耗時(shí)。另外,可出現(xiàn)諸如防火墻位于在客戶機(jī)設(shè)備102和服務(wù)器設(shè)備104之間的情況,在這一情況下,客戶機(jī)設(shè)備102不能接收UDP分組,但客戶機(jī)設(shè)備102能夠接收TCP分組。
圖5是更詳細(xì)地示出示例客戶機(jī)和服務(wù)器設(shè)備以及傳送信道切換過程的框圖。在某些實(shí)施例中,圖2的協(xié)議150、152和154包括在圖5的客戶機(jī)和服務(wù)器設(shè)備中,但未示出。此外,盡管未在圖5中示出,一個(gè)或多個(gè)其它設(shè)備(例如,防火墻、路由器、網(wǎng)關(guān)、網(wǎng)橋等)可位于客戶機(jī)設(shè)備102和服務(wù)器設(shè)備104之間。此處所討論的傳送信道切換允許媒體內(nèi)容源使用一種傳送信道(例如,TCP)開始媒體流的傳送,然后檢查另一傳送信道(例如,UDP)是否起作用,并且如果該傳送信道起作用,則切換到該另一傳送信道。
最初,客戶機(jī)設(shè)備102向服務(wù)器設(shè)備104發(fā)送播放請求252,請求將一個(gè)或多個(gè)媒體流流傳送到客戶機(jī)設(shè)備102。播放請求252可以是如上所述的預(yù)測性播放請求,或者可以是請求將一個(gè)或多個(gè)媒體流流傳送到客戶機(jī)設(shè)備102的任何其它請求(或多個(gè)請求的組合)。例如,該播放請求252可以是具有Select請求的HTTP Post命令,它標(biāo)識了所期望的媒體流。響應(yīng)于播放請求,服務(wù)器設(shè)備104使用TCP將所請求的媒體流流傳送(254)到客戶機(jī)設(shè)備102。該響應(yīng)包括以多個(gè)TCP分組形式的所請求的媒體流的數(shù)據(jù)。
在使用TCP從服務(wù)器設(shè)備104向客戶機(jī)設(shè)備102流傳送媒體的同時(shí),客戶機(jī)設(shè)備102向服務(wù)器設(shè)備104發(fā)送UDP探測分組256。在某些實(shí)施例中,這是通過服務(wù)器設(shè)備104在使用TCP流傳送媒體的同時(shí)打開UDP端口并將打開的UDP端口的標(biāo)識發(fā)送給客戶機(jī)設(shè)備102來實(shí)現(xiàn)的254??蛻魴C(jī)設(shè)備102接收該UDP端口標(biāo)識,然后向服務(wù)器設(shè)備104的該端口發(fā)送UDP分組?;蛘?,服務(wù)器設(shè)備104可具有用于UDP探測分組的公知的UDP端口,并且客戶機(jī)設(shè)備102可向該公知的UDP端口發(fā)送UDP探測分組256,而無需服務(wù)器設(shè)備104首先向客戶機(jī)設(shè)備102發(fā)送打開的UDP端口的標(biāo)識??蛻魴C(jī)設(shè)備102也可打開其可向服務(wù)器設(shè)備104標(biāo)識的UDP端口,作為UDP探測分組256的一部分,作為它可接收UDP分組的UDP端口。
服務(wù)器設(shè)備104接收UDP探測分組256,并生成和向客戶機(jī)設(shè)備102發(fā)送UDP探測響應(yīng)分組258。UDP探測響應(yīng)分組258是對客戶機(jī)設(shè)備102的指示,它指示UDP探測分組256被服務(wù)器設(shè)備104接收。UDP探測響應(yīng)分組258可任選地包括UDP探測分組256的標(biāo)識符的某些種類,諸如包括在UDP探測分組256中的標(biāo)識符?;蛘撸瑑H在同一連接上存在響應(yīng)本身可將響應(yīng)分組257與探測分組256相關(guān)聯(lián)。例如,如果單個(gè)請求和相關(guān)聯(lián)的響應(yīng)是通過連接發(fā)送的僅有兩個(gè)消息,則響應(yīng)258可被視為對探測分組256的響應(yīng)。
應(yīng)當(dāng)注意,盡管在某些實(shí)施例中客戶機(jī)設(shè)備102發(fā)送單個(gè)UDP探測分組256,然而在其它實(shí)施例中,客戶機(jī)設(shè)備102發(fā)送多個(gè)UDP探測分組256,并且服務(wù)器設(shè)備104對每一這樣的UDP探測分組256返回一個(gè)UDP探測響應(yīng)分組258。多個(gè)UPD探測分組256可由客戶機(jī)設(shè)備102同時(shí)發(fā)送,或者可在不同的時(shí)刻發(fā)送(例如,客戶機(jī)設(shè)設(shè)備102可在發(fā)送另一UDP探測分組256之前等待對一個(gè)UDP探測分組256返回UDP探測響應(yīng)分組258)。例如,在傳輸協(xié)議152包括RTP和RTCP協(xié)議的實(shí)施例中,RTP數(shù)據(jù)是使用一個(gè)傳送信道或傳送流來發(fā)送的,且RTCP數(shù)據(jù)是使用不同的傳送信道或傳送流來發(fā)送的。UDP探測分組256可以對這兩種傳送信道或傳送流的每一種發(fā)送。作為另一示例,可由客戶機(jī)設(shè)備102對多個(gè)媒體流的每一個(gè)(例如,對客戶機(jī)設(shè)備102期望切換到使用UDP來進(jìn)行流傳送的每一媒體流,對當(dāng)前使用TCP被流傳送到客戶機(jī)設(shè)備102的每一媒體流等等)發(fā)送不同的UDP探測分組256。這兩個(gè)示例也可以被組合(例如,兩個(gè)UDP探測分組256(一個(gè)用于RTP流,而另一個(gè)用于RTCP流)可由客戶機(jī)設(shè)備102對多個(gè)媒體流的每一個(gè)發(fā)送)。
當(dāng)客戶機(jī)設(shè)備102接收UDP探測響應(yīng)分組258時(shí),客戶機(jī)設(shè)備102知道UDP分組可從服務(wù)器設(shè)備104發(fā)送到客戶機(jī)設(shè)備102。因此,客戶機(jī)設(shè)備102向服務(wù)器設(shè)備104發(fā)送切換到使用UDP從服務(wù)器設(shè)備104向客戶機(jī)設(shè)備102流傳送媒體流的請求260。通常,客戶機(jī)設(shè)備102向服務(wù)器設(shè)備104發(fā)送所有媒體流被切換到使用UDP來流傳送的請求,盡管可替換地,客戶機(jī)設(shè)備102可在請求中標(biāo)識僅要被切換到使用UDP來流傳送的特定的媒體流(剩余的媒體流仍使用TCP來流傳送)?;蛘?,多個(gè)請求可以從客戶機(jī)設(shè)備102發(fā)送到服務(wù)器設(shè)備104,每一請求標(biāo)識應(yīng)當(dāng)使用UDP流傳送到客戶機(jī)設(shè)備192的特定的一個(gè)或多個(gè)媒體流。
響應(yīng)于該請求,服務(wù)器設(shè)備104開始使用UDP向客戶機(jī)102流傳送播放請求252中所請求的媒體流(262)。在某些實(shí)施例中,由于使用TCP的媒體流的流傳送已經(jīng)開始,因此服務(wù)器設(shè)備104不在媒體流的開始處使用UDP開始流傳送。相反,服務(wù)器設(shè)備104停止使用TCP來流傳送數(shù)據(jù),并在停止使用TCP流傳送的任一點(diǎn)處開始使用UDP流傳送。或者,在分組之間可以有某一重疊(例如,在發(fā)生切換到UDP的點(diǎn)處,已經(jīng)使用TCP發(fā)送的某些分組可以使用UDP重新發(fā)送)。
切換到使用UDP從服務(wù)器設(shè)備104向客戶機(jī)設(shè)備102流傳送媒體流的請求可以是各種不同格式中的任一種。在某些實(shí)施例中,該請求可以是Select請求,它可以作為HTTP Post命令被發(fā)送到服務(wù)器設(shè)備104。或者,請求可以用其它方式來傳送,諸如使用RTSP命令。Select請求包括將請求標(biāo)識為Select請求的標(biāo)識符、零個(gè)或多個(gè)頭部以及可任選的消息主體。在某些實(shí)施例中,請求服務(wù)器設(shè)備切換到使用UDP來流傳送媒體流的信息包括在Select請求的一個(gè)或多個(gè)頭部中,盡管請求服務(wù)器設(shè)備切換到使用UDP來流傳送媒體流的信息可以可替換地被包括在消息主體中,或者可替換地,切換到使用UDP來流傳送媒體流的請求可以是請求中固有的。在某些實(shí)施例中,Pragmastraam-switch-entry頭部(參考表I討論)和/或X-Transport頭部(參考表II討論)的存在用作將請求標(biāo)識為Select請求的標(biāo)識符。表II示出了可包括在Select請求中的頭部的一個(gè)示例。
表II
在某些實(shí)施例中,即使標(biāo)識媒體流的實(shí)際內(nèi)容的數(shù)據(jù)(例如,標(biāo)識在客戶機(jī)設(shè)備102處回放的視頻或音頻的數(shù)據(jù))是使用UDP分組從服務(wù)器設(shè)備104發(fā)送到客戶機(jī)設(shè)備102的,控制信息(例如,RTCP分組)也使用TCP分組從服務(wù)器設(shè)備104發(fā)送到客戶機(jī)設(shè)備102。在其它實(shí)施例中,所有數(shù)據(jù),包括控制信息(例如,RTCP分組)都是使用UDP分組從服務(wù)器104發(fā)送到客戶機(jī)102的。
應(yīng)當(dāng)注意,如果UDP分組不能用于將數(shù)據(jù)從服務(wù)器設(shè)備104流傳送到客戶機(jī)設(shè)備102,則UDP探測分組256不會到達(dá)服務(wù)器設(shè)備104(因此,服務(wù)器設(shè)備104永遠(yuǎn)不會發(fā)送UDP探測響應(yīng)分組258),或者UDP探測響應(yīng)分組258不會到達(dá)客戶機(jī)設(shè)備102。因此,如果客戶機(jī)設(shè)備102未接收對UDP探測分組256的響應(yīng),則客戶機(jī)設(shè)備102知道UDP分組不能用于從服務(wù)器設(shè)備104向客戶機(jī)設(shè)備102流傳送數(shù)據(jù)??扇芜x地,如果客戶機(jī)設(shè)備102未接收對UDP探測分組256的響應(yīng),則客戶機(jī)設(shè)備102可重新發(fā)送UDP探測分組一次或多次,以驗(yàn)證UDP分組不能用于從服務(wù)器設(shè)備104向客戶機(jī)設(shè)備102流傳送數(shù)據(jù)。
另外,應(yīng)當(dāng)注意,在發(fā)送多個(gè)UDP探測分組256的情況下(例如,對于多個(gè)媒體流或多個(gè)流),UDP探測響應(yīng)分組256可以響應(yīng)于某些探測分組256而不響應(yīng)于其它分組來接收,指示UDP分組可對于某些流或流量(對其接收到UDP探測響應(yīng)分組258的那些流)從服務(wù)器設(shè)備104流傳送到客戶機(jī)設(shè)備102,但對于其它流或流量(對于未接收UDP探測響應(yīng)分組的那些流)則不能進(jìn)行流傳送。
應(yīng)當(dāng)注意,對UDP分組是否能用于從服務(wù)器設(shè)備104向客戶機(jī)設(shè)備102流傳送數(shù)據(jù)的探測在所請求的媒體流使用TCP被流傳送到客戶機(jī)設(shè)備102(254)時(shí)發(fā)生。由此,客戶機(jī)設(shè)備102開始接收所請求的媒體流,而無需等待對數(shù)據(jù)是否能使用UDP分組流傳送到客戶機(jī)設(shè)備102的確定。
還應(yīng)當(dāng)注意,UDP探測分組256和UDP探測響應(yīng)分組258可包括各種信息中的任一種。關(guān)于媒體流的信息無需使用UDP探測分組256和UDP探測響應(yīng)分組258在客戶機(jī)設(shè)備102和服務(wù)器設(shè)備104之間發(fā)送。UDP探測和UDP探測響應(yīng)分組的重要性僅僅是分組是否到達(dá)其預(yù)期的目標(biāo),而非包括在分組中的關(guān)于流媒體的任何特定信息。
圖6是示出示例傳送信道切換過程300的流程圖。圖6示出了由客戶機(jī)設(shè)備102(例如,圖1、2和5)和服務(wù)器設(shè)備104(例如,圖1、2和5)執(zhí)行的動作。
最初,客戶機(jī)設(shè)備102向服務(wù)器設(shè)備104發(fā)送對流傳送媒體的請求(動作302)。服務(wù)器設(shè)備104接收該請求,并開始使用TCP向客戶機(jī)設(shè)備102流傳送所請求的媒體流(動作304)。服務(wù)器設(shè)備104繼續(xù)使用TCP流傳送媒體流,并且客戶機(jī)設(shè)備102接收并處理該媒體流(動作306)。該處理可包括,例如,在客戶機(jī)設(shè)備102處緩沖和/或呈現(xiàn)(例如,回放)媒體流。
在動作306使用TCP流傳送所請求的媒體流的同時(shí),探測客戶機(jī)設(shè)備102和服務(wù)器設(shè)備104之間的鏈路以確定數(shù)據(jù)是否可使用UDP從服務(wù)器設(shè)備104傳送到客戶機(jī)設(shè)備102(動作308)。如上所述,該探測可涉及在客戶機(jī)設(shè)備102和服務(wù)器設(shè)備104之間發(fā)送信息和分組。
過程300然后基于探測是否指示數(shù)據(jù)可使用UDP從服務(wù)器設(shè)備104流傳送到客戶機(jī)設(shè)備102來繼續(xù)(動作310)。如果數(shù)據(jù)不能使用UDP從服務(wù)器設(shè)備104流傳送到客戶機(jī)設(shè)備102,則服務(wù)器設(shè)備104繼續(xù)使用TCP流傳送所請求的媒體流,并且客戶機(jī)設(shè)備102接收并處理使用TCP所接收到的媒體流(動作306)。然而,如果數(shù)據(jù)可以使用UDP從服務(wù)器設(shè)備104流傳送到客戶機(jī)設(shè)備102,則服務(wù)器設(shè)備104切換到使用UDP而非TCP來流傳送所請求的媒體流,并且客戶機(jī)設(shè)備102接收并處理使用UDP所接收到的媒體流(動作312)。通常,服務(wù)器設(shè)備104響應(yīng)于從客戶機(jī)設(shè)備102所發(fā)送的、請求切換到UDP的請求(例如,Select請求),切換到使用UDP而非TCP來流傳送所請求的媒體流。另外,應(yīng)當(dāng)注意,并非所有的流都需要被切換到使用UDP來流傳送。相反,客戶機(jī)設(shè)備102可請求僅特定的一個(gè)或多個(gè)媒體流被切換到使用UDP來流傳送,并且一個(gè)或多個(gè)其它媒體流保持使用TCP來流傳送。
此處所描述的快速啟動可包括預(yù)測性啟動技術(shù)和/或傳送通道切換技術(shù)。以上圖3和4討論了預(yù)測性啟動基礎(chǔ)的示例實(shí)施例。以上圖5和6討論了傳送信道切換技術(shù)的示例實(shí)施例。
圖7是示出包括預(yù)測性啟動和傳送信道切換兩者的示例快速啟動過程350的流程圖。圖7示出了由客戶機(jī)設(shè)備102(例如,圖1、2和5)和服務(wù)器設(shè)備104(例如,圖1、2和5)執(zhí)行的動作。
最初,客戶機(jī)設(shè)備102向服務(wù)器設(shè)備104發(fā)送預(yù)測性播放請求(動作352)。服務(wù)器設(shè)備104接收預(yù)測性播放請求,并預(yù)測客戶機(jī)設(shè)備102所期望的媒體流(動作354)。服務(wù)器設(shè)備104然后開始使用TCP向客戶機(jī)設(shè)備102流傳送所預(yù)測的媒體流(動作356)。
然后探測客戶機(jī)設(shè)備102和服務(wù)器設(shè)備104之間的鏈路以確定數(shù)據(jù)是否可使用UDP從服務(wù)器設(shè)備104流傳送到客戶機(jī)設(shè)備102(動作358)。如果探測指示數(shù)據(jù)可使用UDP從服務(wù)器設(shè)備104流傳送到客戶機(jī)設(shè)備102,則服務(wù)器設(shè)備104切換到使用UDP而非TCP流傳送媒體流(動作360);否則,服務(wù)器設(shè)備104繼續(xù)使用TCP流傳送媒體流。通常,服務(wù)器設(shè)備104響應(yīng)于從客戶機(jī)設(shè)備102發(fā)送的、請求切換到UDP的請求(例如,Select請求),切換到使用UDP而非TCP流傳送所請求的媒體流。另外,應(yīng)當(dāng)注意,并非所有的流都需要被切換到使用UDP來流傳送。相反,客戶機(jī)102可請求僅特定的一個(gè)或多個(gè)媒體流被切換到使用UDP來流傳送,并且一個(gè)或多個(gè)其它媒體流保持使用TCP來流傳送。
另外,在動作356使用TCP流傳送預(yù)測的媒體流開始之后,客戶機(jī)設(shè)備102確定它是否期望除所預(yù)測的媒體流之外的媒體流(動作362)。如果是,選擇除所預(yù)測的媒體流之外的一個(gè)或多個(gè)媒體流(除所預(yù)測的媒體流之外和/或作為對預(yù)測的媒體流的替代),并且客戶機(jī)設(shè)備102向服務(wù)器設(shè)備104發(fā)送對所選擇的媒體流的指示(動作364)。服務(wù)器設(shè)備104從客戶機(jī)設(shè)備102接收該指示,并將所選擇的媒體流流傳送到客戶機(jī)設(shè)備102(動作366)。
應(yīng)當(dāng)注意,在動作360流傳送的媒體流可包括在動作354預(yù)測的媒體流和/或在動作364所選擇的媒體流。在動作360流傳送的媒體流是否為在動作354預(yù)測的媒體流和/或在動作364所選擇的媒體流取決于在動作364是否選擇了任何媒體流,以及服務(wù)器104是在動作360的切換之前還是之后開始流傳送在動作366選中的任何媒體流。
在某些實(shí)施例中,動作358和360的傳送信道切換可與動作362、364和366的媒體流選擇同時(shí)執(zhí)行。在其它實(shí)施例中,動作358和360的傳送信道切換可在動作362、364和366的媒體流選擇之后或之前執(zhí)行。
圖8示出了可用于實(shí)現(xiàn)此處所描述的技術(shù)的通用計(jì)算機(jī)環(huán)境400。計(jì)算系統(tǒng)環(huán)境400僅為計(jì)算環(huán)境的一個(gè)示例,并非對計(jì)算機(jī)和網(wǎng)絡(luò)體系結(jié)構(gòu)的使用范圍或功能提出任何局限。也不應(yīng)將計(jì)算環(huán)境400解釋為對示例性計(jì)算機(jī)環(huán)境400中示出的任一組件或其組合具有任何依賴或需求。
計(jì)算機(jī)環(huán)境400包括計(jì)算機(jī)402形式的通用計(jì)算設(shè)備。計(jì)算機(jī)402可以是,例如圖1、2、3和5的客戶機(jī)設(shè)備102或服務(wù)器設(shè)備104。計(jì)算機(jī)402也可以是作為多媒體演示的源的編碼器設(shè)備。計(jì)算機(jī)402的組件可包括但不限于,一個(gè)或多個(gè)處理器或處理單元404、系統(tǒng)存儲器406以及將包括處理器404的各類系統(tǒng)組件耦合至系統(tǒng)存儲器506的系統(tǒng)總線408。
系統(tǒng)總線408表示若干種總線結(jié)構(gòu)類型的一種或多種,包括存儲器總線或存儲器控制器、外圍總線、加速圖形端口、以及使用各類總線體系結(jié)構(gòu)的處理器或局部總線。作為示例,這類體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(VESA)局部總線以及外圍部件互連(PCI)總線,也稱為Mezzanine總線。
計(jì)算機(jī)402通常包括各種計(jì)算機(jī)可讀介質(zhì)。這類計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算機(jī)402訪問的任一可用介質(zhì),包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。
系統(tǒng)存儲器406包括諸如隨機(jī)存取存儲器(RAM)410等易失性存儲器,和/或諸如只讀存儲器(ROM)412等非易失性存儲器形式的計(jì)算機(jī)存儲介質(zhì)。基本輸入/輸出系統(tǒng)(BIOS)414包括如在啟動時(shí)幫助在計(jì)算機(jī)402內(nèi)的元件之間傳輸信息的基本例程,通常儲存在ROM 412中。RAM 410通常包含處理單元404立即可訪問或者當(dāng)前正在操作的數(shù)據(jù)和/或程序模塊。
計(jì)算機(jī)402也可包括其它可移動/不可移動、易失性/非易失性計(jì)算機(jī)存儲介質(zhì)。作為示例,圖8示出了對不可移動、非易失性磁介質(zhì)(未示出)進(jìn)行讀寫的硬盤驅(qū)動器416、對可移動、非易失性磁盤420(如,“軟盤”)進(jìn)行讀寫的磁盤驅(qū)動器418以及對可移動、非易失性光盤424,如CD-ROM、DVD-ROM或其它光介質(zhì)進(jìn)行讀寫的光盤驅(qū)動器422。硬盤驅(qū)動器416、磁盤驅(qū)動器418和光盤驅(qū)動器422的每一個(gè)通過一個(gè)或多個(gè)數(shù)據(jù)介質(zhì)接口425連接到系統(tǒng)總線408。或者,硬盤驅(qū)動器416、磁盤驅(qū)動器418和光盤驅(qū)動器422可通過一個(gè)或多個(gè)接口(未示出)連接到系統(tǒng)總線408。
盤驅(qū)動器及其相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為計(jì)算機(jī)402提供了計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失性存儲。盡管示例示出了硬盤416、可移動磁盤420和可移動光盤424,然而可以理解,可儲存可由計(jì)算機(jī)訪問的數(shù)據(jù)的其它類型的計(jì)算機(jī)可讀介質(zhì),如磁帶盒或其它磁存儲設(shè)備、閃存卡、CD-ROM、數(shù)字多功能盤(DVD)或其它光存儲、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)等,也可用于實(shí)現(xiàn)示例性計(jì)算系統(tǒng)和環(huán)境。
任意數(shù)量的程序模塊可儲存在硬盤416、磁盤420、光盤424、ROM 412和/或RAM 410中,作為示例,包括操作系統(tǒng)426、一個(gè)或多個(gè)應(yīng)用程序428、其它程序模塊430以及程序數(shù)據(jù)432。這些操作系統(tǒng)426、一個(gè)或多個(gè)應(yīng)用程序428、其它程序模塊430和程序數(shù)據(jù)432(或其某一組合)的每一個(gè)可實(shí)現(xiàn)支持分布式文件系統(tǒng)的常駐組件的所有或部分。
用戶可以通過諸如鍵盤434和定位設(shè)備436(如,“鼠標(biāo)”)等輸入設(shè)備向計(jì)算機(jī)402輸入命令和信息。其它輸入設(shè)備438(未具體示出)可包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀和/或其類似物。這些和其它輸入設(shè)備通常通過耦合至系統(tǒng)總線408的輸入/輸出接口440連接到處理單元404,但也可以通過其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。
監(jiān)視器442或其它類型的顯示設(shè)備也通過接口,如視頻適配器444連接到系統(tǒng)總線408。除監(jiān)視器442之外,其它輸出外圍設(shè)備可包括諸如揚(yáng)聲器(未示出)和打印機(jī)446等組件,它們可通過輸入/輸出接口440連接到計(jì)算機(jī)402。
計(jì)算機(jī)402可以在使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算設(shè)備448的邏輯連接的網(wǎng)絡(luò)化環(huán)境中操作。作為示例,遠(yuǎn)程計(jì)算設(shè)備可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)計(jì)算機(jī)、對等設(shè)備或其它普通網(wǎng)絡(luò)節(jié)點(diǎn)等等。遠(yuǎn)程計(jì)算設(shè)備448被示出為可包括此處相對于計(jì)算機(jī)402所描述的許多或所有元件和特征的便攜式計(jì)算機(jī)。
計(jì)算機(jī)402和遠(yuǎn)程計(jì)算機(jī)448之間的邏輯連接被描述為局域網(wǎng)(LAN)450和通用廣域網(wǎng)(WAN)452。這類網(wǎng)絡(luò)環(huán)境常見于辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)時(shí),計(jì)算機(jī)402通過網(wǎng)絡(luò)接口或適配器454連接至局域網(wǎng)450。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)402通常包括調(diào)制解調(diào)器456或用于通過廣域網(wǎng)452建立通信的其它裝置。調(diào)制解調(diào)器456可以對計(jì)算機(jī)402是內(nèi)置或外置的,通過輸入/輸出接口440或其它適當(dāng)?shù)臋C(jī)制連接至系統(tǒng)總線408??梢岳斫?,示出的網(wǎng)絡(luò)連接是示例性的,也可以使用在計(jì)算機(jī)402和448之間建立通信鏈路的其它裝置。
在諸如用計(jì)算環(huán)境400示出的網(wǎng)絡(luò)化環(huán)境中,相對于計(jì)算機(jī)402描述的程序模塊或其部分可儲存在遠(yuǎn)程存儲器存儲設(shè)備中。作為示例,遠(yuǎn)程應(yīng)用程序458駐留在遠(yuǎn)程計(jì)算機(jī)448的存儲器設(shè)備中。為說明目的,應(yīng)用程序和諸如操作系統(tǒng)等其它可執(zhí)行程序組件在此處被示出為離散的框,盡管可以認(rèn)識到,這些程序和組件在不同的時(shí)刻駐留在計(jì)算設(shè)備402的不同存儲組件中,并由計(jì)算機(jī)的數(shù)據(jù)處理器執(zhí)行。
各種模塊和技術(shù)可在諸如由一個(gè)或多個(gè)計(jì)算機(jī)或其它設(shè)備執(zhí)行的程序模塊等計(jì)算機(jī)可執(zhí)行指令的一般上下文環(huán)境中描述。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。通常,程序模塊的功能可如各實(shí)施例中所需的組合或分布。
這些模塊和技術(shù)的實(shí)現(xiàn)可被儲存在某一形式的計(jì)算機(jī)可讀介質(zhì)上,或通過其傳輸。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算機(jī)訪問的任一可用介質(zhì)。作為示例而非局限,計(jì)算機(jī)可讀介質(zhì)包括“計(jì)算機(jī)存儲介質(zhì)”和“通信介質(zhì)”。
“計(jì)算機(jī)存儲介質(zhì)”包括以用于儲存諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任一方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性,可移動和不可移動介質(zhì)。計(jì)算機(jī)存儲介質(zhì)包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁盒、磁帶、磁盤存儲或其它磁存儲設(shè)備、或可以用來儲存所期望的信息并可由計(jì)算機(jī)訪問的任一其它介質(zhì)。
“通信介質(zhì)”通常具體化為諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”指以對信號中的信息進(jìn)行編碼的方式設(shè)置或改變其一個(gè)或多個(gè)特征的信號。作為示例而非局限,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接連線連接,以及無線介質(zhì),如聲學(xué)、RF、紅外和其它無線介質(zhì)。上述任一的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
盡管以上描述使用了對結(jié)構(gòu)特征和/或方法動作專用的語言,但是可以理解,所附權(quán)利要求書中所定義的本發(fā)明不限于所描述的具體特征或動作。相反,揭示了具體特征和動作作為實(shí)現(xiàn)本發(fā)明的示例性形式。
權(quán)利要求
1.一種方法,包括從客戶機(jī)設(shè)備發(fā)送要將一個(gè)或多個(gè)媒體流流傳送到所述客戶機(jī)設(shè)備的請求;在服務(wù)器設(shè)備處接收所述請求;使用TCP(傳輸控制協(xié)議)開始將所述一個(gè)或多個(gè)媒體流從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備;在將所述一個(gè)或多個(gè)媒體流從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備的同時(shí),探測數(shù)據(jù)是否可使用UDP(用戶數(shù)據(jù)報(bào)協(xié)議)從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備;以及如果所述探測指示數(shù)據(jù)可使用UDP從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備,則切換到使用UDP將所述一個(gè)或多個(gè)媒體流從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備,否則,繼續(xù)使用TCP將所述一個(gè)或多個(gè)媒體流從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備。
2.如權(quán)利要求1所述的方法,其特征在于,所述探測包括從所述客戶機(jī)設(shè)備向所述服務(wù)器設(shè)備發(fā)送一個(gè)或多個(gè)UDP探測分組;響應(yīng)于所述一個(gè)或多個(gè)UDP探測分組中的每一個(gè),從所述服務(wù)器設(shè)備向所述客戶機(jī)設(shè)備發(fā)送UDP響應(yīng)分組;以及如果所述UDP響應(yīng)分組中的至少一個(gè)由所述客戶機(jī)設(shè)備接收,則確定至少某些數(shù)據(jù)可使用UDP從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備,否則確定數(shù)據(jù)不能使用UDP從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備。
3.一個(gè)或多個(gè)其上儲存有多個(gè)指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)所述指令由一個(gè)或多個(gè)處理器執(zhí)行時(shí),使所述一個(gè)或多個(gè)處理器從請求者接收要將媒體內(nèi)容流傳送到所述請求者的請求;使用傳輸控制協(xié)議(TCP)分組將所述媒體內(nèi)容的至少一部分流傳送到所述請求者;在所述內(nèi)容的至少一部分被流傳送到所述請求者的同時(shí),接收改為使用用戶數(shù)據(jù)報(bào)協(xié)議(UDP)分組的請求;以及使用UDP分組而非TCP分組將所述媒體內(nèi)容的一個(gè)或多個(gè)其它部分流傳送到所述請求者。
4.如權(quán)利要求5所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,在探測之后接收的所述改為使用UDP分組的請求被執(zhí)行以確定媒體內(nèi)容是否可使用UDP分組流傳送到所述請求者,并確定媒體內(nèi)容可使用UDP分組被流傳送到所述請求者,所述探測在所述媒體內(nèi)容的至少一部分使用TCP分組被流傳送到所述請求者的同時(shí)發(fā)生。
5.如權(quán)利要求3所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,使用UDP分組將所述媒體內(nèi)容的一個(gè)或多個(gè)其它部分流傳送到所述請求者包括所述媒體內(nèi)容的至少一部分中的沒有一個(gè)是使用TCP分組被流傳送到所述請求者。
6.如權(quán)利要求3所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述指令還使所述一個(gè)或多個(gè)處理器在接收改為使用UDP分組的所述請求之后,使用TCP分組將表示控制信息的數(shù)據(jù)發(fā)送到所述請求者。
7.如權(quán)利要求3所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,使所述一個(gè)或多個(gè)處理器使用UDP分組而非TCP分組將所述媒體內(nèi)容的一個(gè)或多個(gè)其它部分流傳送到所述請求者的指令包括使所述一個(gè)或多個(gè)處理器使用UDP分組而非TCPO分組將所述媒體內(nèi)容中僅選擇的媒體流的一個(gè)或多個(gè)其它部分流傳送到所述請求者的指令。
8.如權(quán)利要求3所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述改為使用UDP分組的請求包括具有指示所述媒體內(nèi)容要使用UDP分組被流傳送到所述請求者的一個(gè)或多個(gè)頭部的Select請求。
9.如權(quán)利要求8所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述一個(gè)或多個(gè)頭部包括具有RTP/UDP傳輸參數(shù)的X-Transport頭部。
10.如權(quán)利要求3所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述請求者包括客戶機(jī)設(shè)備。
11.如權(quán)利要求3所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述一個(gè)或多個(gè)處理器是服務(wù)器設(shè)備的一部分。
12.一種其上儲存有多個(gè)指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)所述指令由設(shè)備的一個(gè)或多個(gè)處理器執(zhí)行時(shí),使所述一個(gè)或多個(gè)處理器使用傳輸控制協(xié)議(TCP)分組從媒體內(nèi)容源接收媒體內(nèi)容的至少一部分;在使用TCP分組接收所述媒體內(nèi)容的至少一部分期間,確定所述媒體內(nèi)容是否可使用用戶數(shù)據(jù)報(bào)協(xié)議(UDP)分組被流傳送到所述設(shè)備;以及如果所述媒體內(nèi)容可使用UDP分組被流傳送到所述設(shè)備,則向所述媒體內(nèi)容源發(fā)送使用UDP分組將所述媒體內(nèi)容流傳送到所述設(shè)備的請求。
13.如權(quán)利要求12所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述指令還使所述一個(gè)或多個(gè)處理器在發(fā)送所述請求之后,使用UDP分組接收表示所述媒體內(nèi)容的數(shù)據(jù)并使用TCP分組接收表示控制信息的數(shù)據(jù)。
14.如權(quán)利要求12所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,使所述一個(gè)或多個(gè)處理器向所述媒體內(nèi)容源發(fā)送所述請求的指令包括使所述一個(gè)或多個(gè)處理器向所述媒體內(nèi)容源發(fā)送使用UDP分組僅流傳送所述媒體內(nèi)容的所選擇的媒體流的請求的指令。
15.如權(quán)利要求12所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,使所述一個(gè)或多個(gè)處理器確定所述媒體內(nèi)容是否可使用UDP分組被流傳送到所述設(shè)備的指令包括使所述一個(gè)或多個(gè)處理器執(zhí)行以下動作的指令向所述媒體內(nèi)容源發(fā)送UDP探測分組;以及如果響應(yīng)于所述UDP探測分組從所述媒體內(nèi)容源接收到UDP響應(yīng)分組,則確定所述媒體內(nèi)容可使用UDP分組被流傳送到所述設(shè)備,否則,確定所述媒體內(nèi)容不能使用UDP分組被流傳送到所述設(shè)備。
16.如權(quán)利要求12所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述媒體內(nèi)容源包括服務(wù)器設(shè)備。
17.如權(quán)利要求12所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述請求包括具有X-Transport頭部的Select請求,所述X-Transport頭部具有指示所述媒體內(nèi)容要使用UDP分組來流傳送到所述設(shè)備的RTP/UDP傳輸參數(shù)。
18.如權(quán)利要求12所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述請求包括超文本傳輸協(xié)議(HTTP)Post命令。
19.如權(quán)利要求12所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述請求包括超文本傳輸協(xié)議(HTTP)Get命令。
20.一種方法,包括從客戶機(jī)設(shè)備向服務(wù)器設(shè)備發(fā)送預(yù)測性播放請求;響應(yīng)于所述預(yù)測性播放請求,在所述服務(wù)器設(shè)備處預(yù)測所述客戶機(jī)設(shè)備期望的一個(gè)或多個(gè)媒體流;至少將所預(yù)測的一個(gè)或多個(gè)媒體流從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備;在所述客戶機(jī)設(shè)備處確定是否選擇了與所預(yù)測的一個(gè)或多個(gè)媒體流不同的至少一個(gè)媒體流來流傳送到所述客戶機(jī)設(shè)備;以及如果選擇了與所預(yù)測的一個(gè)或多個(gè)媒體流不同的至少一個(gè)媒體流來流傳送到所述客戶機(jī)設(shè)備,則向所述服務(wù)器設(shè)備發(fā)送對于所選擇的至少一個(gè)媒體流的標(biāo)識,并且將所選擇的至少一個(gè)媒體流從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備。
21.如權(quán)利要求20所述的方法,其特征在于,與所預(yù)測的一個(gè)或多個(gè)媒體流不同的所述至少一個(gè)媒體流被選中來替代所預(yù)測的一個(gè)或多個(gè)流中的至少一個(gè)。
22.如權(quán)利20所述的方法,其特征在于,將所選擇的至少一個(gè)媒體流從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備包括將除所預(yù)測的一個(gè)或多個(gè)媒體流之外的所選擇的至少一個(gè)媒體流從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備。
23.一個(gè)或多個(gè)其上儲存有多個(gè)指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)所述指令由設(shè)備的一個(gè)或多個(gè)處理器執(zhí)行時(shí),使所述一個(gè)或多個(gè)處理器從請求者接收預(yù)測性播放請求;響應(yīng)于所述預(yù)測性播放請求,預(yù)測要流傳送到所述請求者的一個(gè)或多個(gè)媒體流;以及將所預(yù)測的一個(gè)或多個(gè)媒體流流傳送到所述請求者。
24.如權(quán)利要求23所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述預(yù)測性播放請求包括具有“PragmaPredStart=1”頭部的請求。
25.如權(quán)利要求23所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述指令還使所述一個(gè)或多個(gè)處理器從所述請求者接收流傳送與所預(yù)測的一個(gè)或多個(gè)媒體流之一不同的媒體流的請求;停止向所述請求者流傳送所預(yù)測的一個(gè)或多個(gè)媒體流之一;以及開始向所述請求者流傳送所述不同的媒體流。
26.如權(quán)利要求25所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述流傳送與所預(yù)測的一個(gè)或多個(gè)媒體流之一不同的媒體流的請求包括具有“pragmastream-switch-entry”頭部的Select請求,所述頭部具有指示所述不同媒體流的一個(gè)或多個(gè)參數(shù)。
27.如權(quán)利要求23所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述指令還使所述一個(gè)或多個(gè)處理器向所述請求者傳遞對于所預(yù)測的一個(gè)或多個(gè)流的標(biāo)識以及對于可被流傳送到所述請求者的一個(gè)或多個(gè)其它流的標(biāo)識。
28.如權(quán)利要求23所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述請求者包括客戶機(jī)設(shè)備。
29.如權(quán)利要求23所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,使所述一個(gè)或多個(gè)處理器預(yù)測要流傳送到所述請求者的一個(gè)或多個(gè)媒體流的所述指令包括使所述一個(gè)或多個(gè)處理器至少部分地基于包括在所述預(yù)測性播放請求中的信息來預(yù)測要流傳送到所述請求者的一個(gè)或多個(gè)媒體流的指令。
30.如權(quán)利要求29所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,包括在所述預(yù)測性播放請求中的信息包括對所述請求者和所述設(shè)備之間的連接速度的標(biāo)識。
31.如權(quán)利要求29所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,包括在所述預(yù)測性播放請求中的信息包括對所述請求者期望的語言的標(biāo)識。
32.如權(quán)利要求23所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,使所述一個(gè)或多個(gè)處理器預(yù)測要流傳送到所述請求者的一個(gè)或多個(gè)媒體流的所述指令包括使所述一個(gè)或多個(gè)處理器至少部分地基于除包括在所述預(yù)測性播放請求中的信息之外的、對所述設(shè)備可用的信息來預(yù)測要流傳送到所述請求者的一個(gè)或多個(gè)媒體流的指令。
33.一個(gè)或多個(gè)其上儲存有多個(gè)指令的計(jì)算機(jī)可讀介質(zhì),當(dāng)所述指令由設(shè)備的一個(gè)或多個(gè)處理器執(zhí)行時(shí),使所述一個(gè)或多個(gè)處理器向媒體內(nèi)容源發(fā)送預(yù)測性播放請求;以及響應(yīng)于所述預(yù)測性播放請求,接收由所述媒體內(nèi)容源預(yù)測為所述設(shè)備所期望的一個(gè)或多個(gè)媒體流。
34.如權(quán)利要求33所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述預(yù)測性播放請求包括具有“PragmaPredStart=1”頭部的請求。
35.如權(quán)利要求33所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,使所述一個(gè)或多個(gè)處理器接收由所述媒體內(nèi)容源預(yù)測為所述設(shè)備所期望的一個(gè)或多個(gè)媒體流的所述指令使所述一個(gè)或多個(gè)處理器接收由所述媒體內(nèi)容源預(yù)測為所述設(shè)備所期望的一個(gè)或多個(gè)媒體流,而所述設(shè)備無需選擇所述一個(gè)或多個(gè)媒體流中的任一個(gè)。
36.如權(quán)利要求33所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述指令還使所述一個(gè)或多個(gè)處理器選擇與所述媒體內(nèi)容源預(yù)測為所述設(shè)備所期望的一個(gè)或多個(gè)媒體流之一不同的媒體流;向所述媒體內(nèi)容源發(fā)送對所述不同媒體流的指示;以及響應(yīng)于所述指示,從所述媒體內(nèi)容源接收替代所述媒體內(nèi)容源預(yù)測為所述設(shè)備所期望的一個(gè)或多個(gè)媒體流之一的所述不同媒體流。
37.如權(quán)利要求36所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,對所述不同媒體流的指示包括具有“pragmastream-switch-entry”頭部的Select請求,所述頭部具有指示所述不同媒體流的一個(gè)或多個(gè)參數(shù)。
38.如權(quán)利要求33所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述指令還使所述一個(gè)或多個(gè)處理器選擇與所述媒體內(nèi)容源預(yù)測為所述設(shè)備所期望的一個(gè)或多個(gè)媒體流不同的媒體流;向所述媒體內(nèi)容源發(fā)送對所述不同媒體流的指示;以及響應(yīng)于所述指示,從所述媒體內(nèi)容源接收除所述媒體內(nèi)容源預(yù)測為所述設(shè)備所期望的一個(gè)或多個(gè)媒體流之外的所述不同媒體流。
39.如權(quán)利要求38所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,對所述不同媒體流的指示包括具有“pragmastream-switch-entry”頭部的Select請求,所述頭部具有指示所述不同媒體流的一個(gè)或多個(gè)參數(shù)。
40.如權(quán)利要求33所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,所述指令還使所述一個(gè)或多個(gè)處理器在所述預(yù)測性播放請求中包括要由所述媒體內(nèi)容源用于預(yù)測所述一個(gè)或多個(gè)媒體流的信息。
41.如權(quán)利要求40所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,包括在所述預(yù)測性播放請求中的信息包括對所述設(shè)備和所述媒體內(nèi)容源之間的連接速度的標(biāo)識。
42.如權(quán)利要求40所述的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì),其特征在于,包括在所述預(yù)測性播放請求中的信息包括對所述設(shè)備期望的語言的標(biāo)識。
43.一種方法,包括從客戶機(jī)設(shè)備向服務(wù)器設(shè)備發(fā)送預(yù)測性播放請求;響應(yīng)于所述預(yù)測性播放請求,在所述服務(wù)器設(shè)備處預(yù)測所述客戶機(jī)設(shè)備期望的一個(gè)或多個(gè)媒體流;至少將所預(yù)測的一個(gè)或多個(gè)媒體流從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備;在所述客戶機(jī)設(shè)備處確定與所預(yù)測的一個(gè)或多個(gè)媒體流不同的至少一個(gè)媒體流被選中來流傳送到所述客戶機(jī)設(shè)備;如果與所預(yù)測的一個(gè)或多個(gè)媒體流不同的至少一個(gè)媒體流被選中來流傳送到所述客戶機(jī)設(shè)備,則向所述服務(wù)器設(shè)備發(fā)送對所選中的至少一個(gè)媒體流的指示,并將所選擇的至少一個(gè)媒體流而非所預(yù)測的一個(gè)或多個(gè)媒體流中的至少一個(gè)從所述服務(wù)器設(shè)備發(fā)送到所述客戶機(jī)設(shè)備;使用TCP(傳輸控制協(xié)議)開始將所述一個(gè)或多個(gè)媒體流從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備;在將所述一個(gè)或多個(gè)媒體流從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備的同時(shí),探測數(shù)據(jù)是否可使用UDP(用戶數(shù)據(jù)報(bào)協(xié)議)從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備;以及如果所述探測指示數(shù)據(jù)可使用UDP從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備,則切換到使用UDP將所述一個(gè)或多個(gè)媒體流從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備,否則,繼續(xù)使用TCP將所述一個(gè)或多個(gè)媒體流從所述服務(wù)器設(shè)備流傳送到所述客戶機(jī)設(shè)備。
全文摘要
一種用于流傳送媒體的快速啟動包括用于預(yù)測性啟動的技術(shù)和用于在流傳送期間切換傳送信道的技術(shù)中的一種或兩者。預(yù)測性啟動允許媒體內(nèi)容源預(yù)測哪一(些)媒體流是做出請求的客戶機(jī)設(shè)備所期望的,并開始將那些所預(yù)測的媒體流流傳送到所述客戶機(jī)設(shè)備。傳送信道切換技術(shù)允許媒體內(nèi)容源使用一種傳送信道(例如,使用傳輸控制協(xié)議(TCP)開始流傳送媒體流,然后檢查另一種傳送信道(例如,使用用戶數(shù)據(jù)報(bào)協(xié)議(UDP))是否起作用,并且如果起作用則切換到該另一種傳送信道。
文檔編號H04L29/02GK1784674SQ200480012358
公開日2006年6月7日 申請日期2004年7月23日 優(yōu)先權(quán)日2004年5月3日
發(fā)明者A·E·克萊蒙茨, E·P·奧利維拉, S·巴特, T·L·懷恩 申請人:微軟公司