專利名稱:一種碼流傳輸控制方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字電視領(lǐng)域,尤其涉及一種碼流傳輸控制方法和裝置。
背景技術(shù):
現(xiàn)有的視頻編碼標(biāo)準(zhǔn)包括MPEG-2、MPEG-4以及H. 264等,編碼后的視頻幀包括I、 P和B三種主要的類型,其中I幀為幀內(nèi)編碼幀,即利用當(dāng)前幀信息進(jìn)行編碼的視頻幀,P幀和B幀采用幀間編碼方式進(jìn)行編碼,即在編碼時(shí)利用了當(dāng)前幀和其他幀的信息進(jìn)行編碼的視頻幀。在目前的數(shù)字電視領(lǐng)域中,可以通過(guò)周期性插入I幀的方法,保證終端視頻解碼設(shè)備能隨機(jī)接入視頻信號(hào),并立即開(kāi)始解碼顯示,如圖1所示在P幀中周期性插入I幀。在這種編碼方式中,I幀采用幀內(nèi)編碼方式,在解碼時(shí),不需要相鄰幀的信息,可獨(dú)立解碼;P 幀(預(yù)測(cè)幀)或B幀(反向預(yù)測(cè)幀)采用幀間編碼方式,解碼該幀時(shí),需要利用相鄰幀的信息,均不可獨(dú)立解碼。盡管這種周期性插入I幀的方法可增加碼流的通用性和容錯(cuò)性,但是,如果I幀插入的過(guò)多,由于通常情況下I幀的大小遠(yuǎn)遠(yuǎn)大于平均幀大小,例如I幀大小是相鄰P幀大小的3到5倍,因此將會(huì)增加時(shí)延或丟包的概率,但是I幀插入的太少,又無(wú)法保證碼流的通用性和容錯(cuò)性,對(duì)于其他的利用當(dāng)前幀信息進(jìn)行編碼的視頻幀也同樣存在上述問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種碼流傳輸控制方法和裝置,用于解決現(xiàn)有技術(shù)中利用當(dāng)前幀信息進(jìn)行編碼的視頻幀加入過(guò)多造成的視頻傳輸延時(shí),或者加入過(guò)少造成的碼流通用性和容錯(cuò)性較差的問(wèn)題。本發(fā)明實(shí)施例提供了一種碼流傳輸控制方法,所述方法包括接收終端視頻解碼設(shè)備發(fā)送的解碼器的運(yùn)行狀態(tài);判斷所述解碼器的運(yùn)行狀態(tài)是否滿足第一預(yù)設(shè)條件,如果滿足所述第一預(yù)設(shè)條件,則針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送,否則,針對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送。本發(fā)明實(shí)施例還提供了一種服務(wù)端設(shè)備,包括編碼器,所述編碼器用于生成視頻幀,所述服務(wù)端設(shè)備還包括第一接收單元,用于接收終端視頻解碼設(shè)備發(fā)送的解碼器的運(yùn)行狀態(tài);第一控制單元,判斷所述解碼器的運(yùn)行狀態(tài)是否滿足第一預(yù)設(shè)條件,如果滿足所述第一預(yù)設(shè)條件,則針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送,否則, 針對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送。通過(guò)本發(fā)明實(shí)施例的方法和裝置,服務(wù)端設(shè)備可以根據(jù)終端視頻解碼設(shè)備解碼器的運(yùn)行狀態(tài)確定相應(yīng)的編碼方式,使得終端視頻解碼設(shè)備的解碼器的運(yùn)行狀態(tài)滿足第一預(yù)設(shè)條件時(shí),可以使解碼器從錯(cuò)誤中很快的恢復(fù)正常,并且也不會(huì)因?yàn)槔卯?dāng)前幀的信息進(jìn)行編碼的視頻幀加入的過(guò)多造成視頻傳輸?shù)难訒r(shí)。
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,并不構(gòu)成對(duì)本發(fā)明的限定。在附圖中圖1為碼流傳輸過(guò)程中周期性插入I幀的示意圖;圖2為本發(fā)明一實(shí)施例的方法流程圖;圖3為本發(fā)明另一實(shí)施例的方法流程圖;圖4為本發(fā)明實(shí)施例的方法的應(yīng)用示意圖;圖5為圖4所示實(shí)施例的一個(gè)實(shí)施方式的示意圖;圖6為本發(fā)明實(shí)施例的終端視頻解碼設(shè)備的組成框圖;圖7為本發(fā)明實(shí)施例的服務(wù)端的組成框圖;圖8為圖6和圖7所示實(shí)施例的應(yīng)用示意圖。
具體實(shí)施例方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實(shí)施例和附圖,對(duì)本發(fā)明實(shí)施例做進(jìn)一步詳細(xì)說(shuō)明。在此,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,但并不作為對(duì)本發(fā)明的限定。圖2為本發(fā)明實(shí)施例提供的一種碼流傳輸控制方法的流程圖,該方法應(yīng)用于包括解碼器的終端視頻解碼設(shè)備,例如機(jī)頂盒、手機(jī)、個(gè)人計(jì)算機(jī)等。請(qǐng)參照?qǐng)D2,該方法包括步驟201 監(jiān)測(cè)所述解碼器的運(yùn)行狀態(tài)。其中,所述解碼器將其運(yùn)行狀態(tài)向終端視頻解碼設(shè)備的監(jiān)測(cè)單元反饋,或者監(jiān)測(cè)單元可以從解碼器獲取解碼器的運(yùn)行狀態(tài)。步驟202 將所述運(yùn)行狀態(tài)發(fā)送給服務(wù)端設(shè)備,以便所述服務(wù)端設(shè)備根據(jù)所述解碼器的運(yùn)行狀態(tài)確定針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼,或者針對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送。步驟203,接收所述服務(wù)端設(shè)備發(fā)送的視頻幀。步驟204,根據(jù)接收到的視頻幀進(jìn)行視頻解碼。其中,步驟203和204可以使用現(xiàn)有技術(shù)中的方式實(shí)施,例如終端視頻解碼設(shè)備可以根據(jù)服務(wù)端設(shè)備發(fā)送的I幀或者P幀,又或者發(fā)送的B幀等視頻幀進(jìn)行識(shí)別解碼。在本實(shí)施例中,解碼器的運(yùn)行狀態(tài)可以是啟動(dòng)狀態(tài)、可以是正常運(yùn)行狀態(tài),還可以是出錯(cuò)停止?fàn)顟B(tài)。在一個(gè)實(shí)施例中,當(dāng)終端視頻解碼設(shè)備開(kāi)機(jī)啟動(dòng)時(shí),其解碼器處于啟動(dòng)狀態(tài),根據(jù)本實(shí)施例的方法,該終端視頻解碼設(shè)備將該運(yùn)行狀態(tài)發(fā)送到服務(wù)端設(shè)備,服務(wù)端設(shè)備在收到解碼器處于啟動(dòng)狀態(tài)的信息后,向其編碼器發(fā)送針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼的命令,其編碼器將一個(gè)或一定數(shù)量的當(dāng)前待編碼的視頻幀利用該當(dāng)前幀的信息進(jìn)行編碼,例如采用I幀方式進(jìn)行編碼,并發(fā)送到終端視頻解碼設(shè)備,終端視頻解碼設(shè)備收到該I幀后開(kāi)始解碼。在另外一個(gè)實(shí)施例中,當(dāng)終端視頻解碼設(shè)備的解碼器在解碼過(guò)程中,如果碼流出錯(cuò),則解碼器會(huì)處于出錯(cuò)停止?fàn)顟B(tài),具體的在本實(shí)施例中解碼器只要不能正常解碼,解碼器就處于出錯(cuò)停止?fàn)顟B(tài)。根據(jù)本實(shí)施例的方法,該終端視頻解碼設(shè)備將解碼器的運(yùn)行狀態(tài)發(fā)送到服務(wù)端設(shè)備,服務(wù)端設(shè)備在收到解碼器處于出錯(cuò)停止?fàn)顟B(tài)的信息后,向其編碼器發(fā)送針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼的命令,其編碼器根據(jù)該命令將一個(gè)或一定數(shù)量的當(dāng)前待編碼的視頻幀利用該當(dāng)前幀的信息進(jìn)行編碼,例如采用I幀方式進(jìn)行編碼,并發(fā)送到終端視頻解碼設(shè)備,終端視頻解碼設(shè)備收到該I幀后解碼器重新開(kāi)始解碼,由此使得終端視頻解碼設(shè)備的解碼器能夠迅速?gòu)腻e(cuò)誤狀態(tài)中恢復(fù)過(guò)來(lái)。在另外一個(gè)實(shí)施例中,當(dāng)終端視頻解碼設(shè)備開(kāi)機(jī)啟動(dòng)后,其解碼器處于正常運(yùn)行狀態(tài)時(shí),或者解碼器從出錯(cuò)停止?fàn)顟B(tài)進(jìn)入正常運(yùn)行狀態(tài)后,根據(jù)本實(shí)施例的方法,該終端視頻解碼設(shè)備將其解碼器的運(yùn)行狀態(tài)發(fā)送到服務(wù)端設(shè)備,服務(wù)端設(shè)備在收到解碼器處于正常運(yùn)行狀態(tài)的信息后,向其編碼器發(fā)送針對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送,例如采用P幀或者B幀編碼方式進(jìn)行編碼,其編碼器利用當(dāng)前幀和其他幀的信息進(jìn)行編碼,例如按照P幀(B幀)的方式對(duì)視頻流進(jìn)行編碼并發(fā)送到終端視頻解碼設(shè)備。由于在實(shí)際的運(yùn)行過(guò)程中,只要終端視頻解碼設(shè)備的解碼器從啟動(dòng)狀態(tài)或出錯(cuò)停止?fàn)顟B(tài)進(jìn)入正常運(yùn)行狀態(tài)后,會(huì)長(zhǎng)時(shí)間處于正常運(yùn)行狀態(tài),因此當(dāng)服務(wù)端設(shè)備接收到終端視頻解碼設(shè)備發(fā)送的解碼器的運(yùn)行狀態(tài),并判斷該運(yùn)行狀態(tài)為正常運(yùn)行狀態(tài),不滿足第一預(yù)設(shè)條件時(shí),服務(wù)端設(shè)備控制其編碼器對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送,即服務(wù)端設(shè)備的編碼器會(huì)將待編碼的每幀編碼為P幀或B幀并發(fā)送,直到服務(wù)端設(shè)備接收到滿足第一預(yù)設(shè)條件的解碼器的運(yùn)行狀態(tài),才對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送,即針對(duì)當(dāng)前待編碼的至少一幀編碼為I幀并發(fā)送。在本實(shí)施例中,為了保證碼流傳輸?shù)恼#瑴p小碼流的丟包率或錯(cuò)包率,本實(shí)施例的終端視頻解碼設(shè)備還可以監(jiān)測(cè)網(wǎng)絡(luò)連接狀況,并向服務(wù)端設(shè)備報(bào)告網(wǎng)絡(luò)狀態(tài)信息,例如丟包率信息、錯(cuò)包率信息等,以便服務(wù)端設(shè)備根據(jù)該網(wǎng)絡(luò)狀態(tài)信息按照預(yù)先設(shè)定的條件調(diào)整其編碼器的編碼方式,例如向編碼器發(fā)出迫使I幀命令。其中,預(yù)先設(shè)定的條件包括設(shè)定的閾值,例如,當(dāng)丟包率大于第一閾值時(shí),則令編碼器針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼,以便所述編碼器將當(dāng)前幀或者多個(gè)幀編碼為I幀并發(fā)送到所述終端視頻解碼設(shè)備;再例如,當(dāng)錯(cuò)包率大于第二閾值時(shí),則令編碼器針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼,以便所述編碼器將當(dāng)前幀或者多個(gè)幀編碼為 I幀并發(fā)送到所述終端視頻解碼設(shè)備。通過(guò)本實(shí)施例的方法,終端視頻解碼設(shè)備將解碼器的運(yùn)行狀態(tài)上傳到服務(wù)端設(shè)備,使得服務(wù)端設(shè)備可以根據(jù)終端視頻解碼設(shè)備的解碼器的運(yùn)行狀態(tài)確定相應(yīng)的編碼方式,當(dāng)終端視頻解碼設(shè)備的解碼器的運(yùn)行狀態(tài)為啟動(dòng)狀態(tài)或出錯(cuò)停止?fàn)顟B(tài)時(shí),服務(wù)端設(shè)備可以向終端視頻解碼設(shè)備發(fā)送利用當(dāng)前幀的信息進(jìn)行編碼的視頻幀,以使終端視頻解碼設(shè)備的解碼器可以開(kāi)始工作,并且能夠快速的從錯(cuò)誤中恢復(fù)。另外,服務(wù)器端設(shè)備發(fā)送的利用當(dāng)前幀的信息進(jìn)行編碼的視頻幀的數(shù)量,是根據(jù)終端視頻解碼設(shè)備的解碼器的運(yùn)行狀態(tài)確定的,即發(fā)送的利用當(dāng)前幀的信息進(jìn)行編碼的視頻幀是終端視頻設(shè)備的解碼器所必須的, 因此不會(huì)造成視頻傳輸?shù)难訒r(shí)。在本實(shí)施例中還充分考慮了網(wǎng)絡(luò)狀態(tài)信息,因?yàn)楫?dāng)網(wǎng)絡(luò)狀態(tài)較差時(shí),影響解碼器解碼的視頻資源的清晰度,因此在本實(shí)施例中終端視頻解碼設(shè)備監(jiān)控自身的丟包率和錯(cuò)包率中的至少一個(gè)網(wǎng)絡(luò)狀態(tài)信息,并將該網(wǎng)絡(luò)狀態(tài)信息上報(bào)服務(wù)端設(shè)備,使得服務(wù)端設(shè)備在確定該網(wǎng)絡(luò)狀態(tài)信息滿足設(shè)定的第二預(yù)設(shè)條件時(shí),向終端視頻解碼設(shè)備發(fā)送至少一幀利用當(dāng)前幀信息進(jìn)行編碼的視頻幀,從而可以使終端視頻解碼設(shè)備的解碼器能夠解碼得到清晰的視頻幀,提高用戶的滿意度。圖3為本發(fā)明實(shí)施例提供的一種碼流傳輸控制方法的流程圖,該方法應(yīng)用于包括編碼器的服務(wù)端設(shè)備,與圖2所示實(shí)施例的方法對(duì)應(yīng),其中與圖2所示實(shí)施例相同的內(nèi)容不再贅述。請(qǐng)參照?qǐng)D3,該方法包括步驟301 接收終端視頻解碼設(shè)備發(fā)送的解碼器的運(yùn)行狀態(tài);步驟302 判斷所述解碼器的運(yùn)行狀態(tài)是否滿足第一預(yù)設(shè)條件,如果滿足所述第一預(yù)設(shè)條件,則進(jìn)入步驟303,否則進(jìn)入步驟304。步驟303 針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送。步驟304 針對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送。其中,該第一預(yù)設(shè)條件包括解碼器的運(yùn)行狀態(tài)為出錯(cuò)停止?fàn)顟B(tài)或啟動(dòng)狀態(tài),在步驟302中還包括,當(dāng)所述解碼器的運(yùn)行狀態(tài)為出錯(cuò)停止?fàn)顟B(tài)滿足所述第一預(yù)設(shè)條件時(shí),則在步驟303中向所述編碼器發(fā)送針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼的命令,例如使用I幀進(jìn)行編碼的命令,以便所述編碼器將至少一個(gè)當(dāng)前幀編碼為I幀;當(dāng)所述解碼器的運(yùn)行狀態(tài)為啟動(dòng)狀態(tài)滿足所述第一預(yù)設(shè)條件時(shí),則在步驟303中向所述編碼器發(fā)送針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼的命令,例如使用I幀進(jìn)行編碼的命令,以便所述編碼器將至少一個(gè)當(dāng)前幀編碼為I幀;當(dāng)所述解碼器的運(yùn)行狀態(tài)為正常狀態(tài)由于不滿足所述第一預(yù)設(shè)條件,因此在步驟 304中向所述編碼器發(fā)送針對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼的命令, 例如采用P幀或者B幀編碼的命令,以便所述編碼器將每幀編碼為P幀或者B幀。在本實(shí)施例中,服務(wù)端設(shè)備在確定終端視頻解碼設(shè)備的解碼器的運(yùn)行狀態(tài)為啟動(dòng)狀態(tài)或出錯(cuò)停止?fàn)顟B(tài)時(shí),可以將當(dāng)前待編碼的一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼, 即將當(dāng)前一幀編碼為I幀,但是為了防止傳輸過(guò)程中的誤差,服務(wù)端設(shè)備可以將當(dāng)前待編碼的兩幀或三幀等一定數(shù)量的視頻幀編碼為I幀并發(fā)送,保證終端解碼設(shè)備的解碼器可以開(kāi)始工作或從錯(cuò)誤中恢復(fù)。其中,與圖2所示實(shí)施例的方法對(duì)應(yīng),本實(shí)施例的方法還包括Sl 接收終端視頻解碼設(shè)備發(fā)送的網(wǎng)絡(luò)狀態(tài)信息,所述網(wǎng)絡(luò)狀態(tài)信息包括丟包率信息和/或錯(cuò)包率信息;S2 判斷所述網(wǎng)絡(luò)狀態(tài)信息是否滿足第二預(yù)設(shè)條件,如果滿足則進(jìn)入步驟S3,否則進(jìn)入步驟S4。S3:針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送。S4:針對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送。在一個(gè)實(shí)施例中,所述網(wǎng)絡(luò)狀態(tài)信息滿足第二預(yù)設(shè)條件,則針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送包括,當(dāng)丟包率大于第一閾值時(shí),則針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送,例如采用I幀編碼的方式進(jìn)行編碼。在另外一個(gè)實(shí)施例中,當(dāng)錯(cuò)包率大于第二閾值時(shí),則針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送,以便所述編碼器將當(dāng)前一幀或者多個(gè)幀以I幀的方式進(jìn)行編碼并發(fā)送到所述終端視頻解碼設(shè)備。通過(guò)本實(shí)施例的方法,根據(jù)解碼器的運(yùn)行狀態(tài)控制I幀的發(fā)送,當(dāng)終端視頻解碼設(shè)備的解碼器的運(yùn)行狀態(tài)為啟動(dòng)狀態(tài)或出錯(cuò)停止?fàn)顟B(tài)時(shí),服務(wù)端設(shè)備可以向終端視頻解碼設(shè)備發(fā)送利用當(dāng)前幀的信息進(jìn)行編碼的視頻幀,以使終端視頻解碼設(shè)備的解碼器可以開(kāi)始工作,并且能夠快速的從錯(cuò)誤中恢復(fù)。另外,服務(wù)器端設(shè)備發(fā)送的利用當(dāng)前幀的信息進(jìn)行編碼的視頻幀的數(shù)量,是根據(jù)終端視頻解碼設(shè)備的解碼器的運(yùn)行狀態(tài)確定的,即發(fā)送的利用當(dāng)前幀的信息進(jìn)行編碼的視頻幀是終端視頻設(shè)備的解碼器所必須的,因此不會(huì)造成視頻傳輸?shù)难訒r(shí)。圖4為本發(fā)明實(shí)施例的方法的應(yīng)用示意圖,請(qǐng)參照?qǐng)D4,終端視頻解碼設(shè)備41可以是機(jī)頂盒、手機(jī)、個(gè)人計(jì)算機(jī)等包含解碼器的終端視頻解碼設(shè)備,該終端視頻解碼設(shè)備41 根據(jù)圖2所示實(shí)施例的方法,將解碼器的運(yùn)行狀態(tài)或者網(wǎng)絡(luò)狀態(tài)信息作為反饋信息發(fā)送到服務(wù)端設(shè)備42,服務(wù)端設(shè)備42根據(jù)圖3所示實(shí)施例的方法,根據(jù)終端視頻解碼設(shè)備提供的反饋信息決定其編碼方式,例如當(dāng)終端視頻解碼設(shè)備的解碼器出現(xiàn)出錯(cuò)停止?fàn)顟B(tài)或者啟動(dòng)狀態(tài)時(shí),服務(wù)端設(shè)備采用I幀的方式將至少一個(gè)當(dāng)前待編碼的視頻幀編碼為I幀,并將該編碼后的視頻幀發(fā)送到終端視頻解碼設(shè)備41,從而使得終端視頻解碼設(shè)備41可以隨機(jī)接入視頻信號(hào),并可立即開(kāi)始解碼視頻信號(hào),在碼流解析出錯(cuò)的情況下,終端視頻解碼設(shè)備41 的解碼器也可以快速的從錯(cuò)誤狀態(tài)中恢復(fù),在解碼器沒(méi)有出錯(cuò)的情況下減少傳送I幀,以減少網(wǎng)絡(luò)時(shí)延和丟包的概率。圖5為圖4所示實(shí)施例的碼流傳輸控制方法的一個(gè)具體實(shí)施方式
的示意圖,請(qǐng)參照?qǐng)D5,在本實(shí)施方式中,終端視頻解碼設(shè)備以客戶端52的機(jī)頂盒521為例,圖2所示實(shí)施例的方法應(yīng)用于該客戶端的機(jī)頂盒521,圖3所示實(shí)施例的方法應(yīng)用于服務(wù)端設(shè)備51。其中,服務(wù)端設(shè)備51包括應(yīng)用服務(wù)器511、視頻編碼及發(fā)送服務(wù)器512以及控制服務(wù)器513 ; 客戶端52包括機(jī)頂盒521、顯示設(shè)備522以及人機(jī)交互設(shè)備523。請(qǐng)繼續(xù)參照?qǐng)D5,應(yīng)用服務(wù)器上511運(yùn)行用戶請(qǐng)求的應(yīng)用程序,包括電腦游戲、辦公軟件等等一切適合在計(jì)算機(jī)上運(yùn)行的程序。應(yīng)用服務(wù)器511的顯示輸出直接輸出到視頻編碼器,視頻編碼器對(duì)輸入的視頻信號(hào)進(jìn)行編碼后,以碼流的形式發(fā)送給機(jī)頂盒521。機(jī)頂盒521在收到編碼后的視頻碼流后,對(duì)其進(jìn)行解碼,并將解碼后的視頻信號(hào)輸出到顯示設(shè)備 522。在本實(shí)施例中,機(jī)頂盒521負(fù)責(zé)接收用戶輸入,并將用戶輸入的內(nèi)容直接傳遞給應(yīng)用服務(wù)器,用戶輸入可以通過(guò)鼠標(biāo)、鍵盤(pán)、游戲桿等等任何人機(jī)交互設(shè)備523。另外,機(jī)頂盒521還會(huì)傳遞網(wǎng)絡(luò)狀態(tài)信息及解碼器的運(yùn)行狀態(tài),例如將解碼器的運(yùn)行狀態(tài)發(fā)送到服務(wù)端設(shè)備51的控制服務(wù)器513,控制服務(wù)器513將判斷該運(yùn)行狀態(tài)是否滿足第一預(yù)設(shè)條件,根據(jù)判斷結(jié)果決定編碼器的編碼方式,并控制編碼器進(jìn)行相應(yīng)方式的編碼。在本實(shí)施例中,服務(wù)端設(shè)備51中的應(yīng)用程序服務(wù)器511、視頻編碼及發(fā)送服務(wù)器 512以及控制服務(wù)器513可以運(yùn)行在不同計(jì)算機(jī)上,也可以運(yùn)行在同一計(jì)算機(jī)上,本實(shí)施例并不以此作為限制。下面以利用當(dāng)前幀信息進(jìn)行編碼的視頻幀為I幀為例進(jìn)行說(shuō)明。由于目前的機(jī)頂盒芯片,包括ST、m-Logic等,都是在收到完整I幀后才開(kāi)始解碼,當(dāng)解碼過(guò)程中,碼流出錯(cuò)的情況下,也必須等到下一個(gè)I幀后,才能開(kāi)始繼續(xù)解碼。本實(shí)施例的方法滿足了機(jī)頂盒對(duì) I幀的需求,當(dāng)機(jī)頂盒上電啟動(dòng),并與服務(wù)端設(shè)備建立初始鏈接后,機(jī)頂盒將其解碼器的處于啟動(dòng)狀態(tài)的信息發(fā)送到服務(wù)端設(shè)備,服務(wù)端設(shè)備開(kāi)始發(fā)送的視頻流必包含一個(gè)I幀,之后,就只發(fā)P幀(或者B幀),當(dāng)機(jī)頂盒的解碼器出錯(cuò)時(shí),機(jī)頂盒將其解碼器處于出錯(cuò)停止?fàn)顟B(tài)的信息發(fā)送到服務(wù)端設(shè)備,服務(wù)端設(shè)備再根據(jù)機(jī)頂盒的反饋發(fā)送一個(gè)I幀,使機(jī)頂盒的解碼器快速恢復(fù)解碼。在本實(shí)施例中,因?yàn)镮幀尺寸較大,在編碼I幀后,為了減小延時(shí),當(dāng)編碼了一個(gè)I
幀之后,可以跳過(guò)η幀再繼續(xù)發(fā)送P幀或者B幀,其中,"=,framesize為
{bitrate / Jps)
編碼后的一個(gè)I幀的大小,bitrate為設(shè)定的平均碼率或發(fā)送帶寬,fps為編碼器預(yù)設(shè)幀率, 也就是,在一個(gè)I幀之后的η幀將不被編碼,而是直接被掠過(guò),以避免在由于傳送I幀造成 η幀中的內(nèi)容丟失或者無(wú)法被及時(shí)解碼的問(wèn)題。圖6為本發(fā)明實(shí)施例提供的一種終端視頻解碼設(shè)備的組成框圖,該終端視頻解碼設(shè)備包括碼流傳輸控制裝置61以及解碼器62,其中,該碼流傳輸控制裝置61包括第一監(jiān)測(cè)單元611,用于監(jiān)測(cè)解碼器62的運(yùn)行狀態(tài);其中,所述解碼器將其運(yùn)行狀態(tài)向終端視頻解碼設(shè)備的第一監(jiān)測(cè)單元反饋,或者第一監(jiān)測(cè)單元可以從解碼器獲取其運(yùn)行狀態(tài)。其中,該第一監(jiān)測(cè)單元611監(jiān)測(cè)到的解碼器62的運(yùn)行狀態(tài)包括啟動(dòng)狀態(tài)、正常運(yùn)行狀態(tài)以及出錯(cuò)停止?fàn)顟B(tài)。第一發(fā)送單元612,用于當(dāng)?shù)谝槐O(jiān)測(cè)單元611監(jiān)測(cè)到解碼器62的運(yùn)行狀態(tài),將解碼器62的運(yùn)行狀態(tài)發(fā)送到服務(wù)端設(shè)備,以便所述服務(wù)端設(shè)備判斷所述運(yùn)行狀態(tài)是否滿足第一預(yù)設(shè)條件,如果滿足所述第一預(yù)設(shè)條件則針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送,否則針對(duì)當(dāng)前待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送。接收單元615,用于接收所述服務(wù)端設(shè)備發(fā)送的視頻幀。在一個(gè)實(shí)施例中,該碼流傳輸控制裝置61還包括第二監(jiān)測(cè)單元613,用于監(jiān)測(cè)網(wǎng)絡(luò)連接狀況獲得網(wǎng)絡(luò)狀態(tài)信息,所述網(wǎng)絡(luò)狀態(tài)信息包括丟包率信息和/或錯(cuò)包率信息;第二發(fā)送單元614,用于向所述服務(wù)端設(shè)備上報(bào)所述由所述第二監(jiān)測(cè)單元613獲得的網(wǎng)絡(luò)狀態(tài)信息,以便所述服務(wù)端設(shè)備判斷所述網(wǎng)絡(luò)狀態(tài)信息是否滿足第二預(yù)設(shè)條件, 如果滿足所述第二預(yù)設(shè)條件則針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送,否則針對(duì)當(dāng)前待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送。本實(shí)施例的終端視頻解碼設(shè)備的各組成部分分別用于實(shí)現(xiàn)圖2所示實(shí)施例的方法的各步驟,由于在圖2所示方法實(shí)施例中,已經(jīng)對(duì)各步驟進(jìn)行了詳細(xì)說(shuō)明,在此不再贅述。圖7為本發(fā)明實(shí)施例提供的一種服務(wù)端設(shè)備的組成框圖,該服務(wù)端設(shè)備包括碼流傳輸控制裝置71和編碼器72,其中,該碼流傳輸控制裝置71包括第一接收單元711,用于接收終端視頻解碼設(shè)備發(fā)送的解碼器運(yùn)行狀態(tài);
第一控制單元712,判斷所述解碼器的運(yùn)行狀態(tài)是否滿足第一預(yù)設(shè)條件,如果滿足所述第一預(yù)設(shè)條件,則針對(duì)當(dāng)前待編碼的至少一幀采用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送(例如編碼為I幀),否則針對(duì)當(dāng)前待編碼的每幀采用當(dāng)前幀和其他幀的信息進(jìn)行編碼(例如編碼為P幀或者B幀)并發(fā)送。其中,第一控制單元712判斷如果第一接收單元711接收到的解碼器的運(yùn)行狀態(tài)為啟動(dòng)狀態(tài)或者出錯(cuò)停止?fàn)顟B(tài),則向編碼器72發(fā)送針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼的命令,以便編碼器72將一個(gè)或者多個(gè)視頻幀利用當(dāng)前幀的信息進(jìn)行編碼,并發(fā)送到終端視頻解碼設(shè)備。在一個(gè)實(shí)施例中,該碼流傳輸控制裝置71還包括第二接收單元713,用于接收終端視頻解碼設(shè)備發(fā)送的網(wǎng)絡(luò)狀態(tài)信息,所述網(wǎng)絡(luò)狀態(tài)信息包括丟包率信息和/或錯(cuò)包率信息;第二控制單元714,用于判斷如果所述網(wǎng)絡(luò)狀態(tài)信息滿足第二預(yù)設(shè)條件,則針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)采用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送(例如編碼為I幀),否則針對(duì)當(dāng)前待編碼的每幀采用當(dāng)前幀和其它幀的信息進(jìn)行編碼(例如編碼為P幀或者B幀) 并發(fā)送。其中,第二控制單元714具體用于當(dāng)丟包率大于第一閾值時(shí),則向編碼器72發(fā)出針對(duì)當(dāng)前待編碼的至少一幀在編碼時(shí)采用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送的命令(例如編碼為I幀);或者,當(dāng)錯(cuò)包率大于第二閾值時(shí),向編碼器72發(fā)送針對(duì)當(dāng)前至少一幀在編碼時(shí)采用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送命令(例如編碼為I幀),以便編碼器72將一個(gè)或者多個(gè)視頻幀利用當(dāng)前幀的信息進(jìn)行編碼,并發(fā)送到終端視頻解碼設(shè)備。本實(shí)施例的服務(wù)端的各組成部分分別用于實(shí)現(xiàn)圖3所示實(shí)施例的方法的各步驟, 由于在圖3所示方法實(shí)施例中,已經(jīng)對(duì)各步驟進(jìn)行了詳細(xì)說(shuō)明,在此不再贅述。本發(fā)明實(shí)施例提供的服務(wù)端設(shè)備在確定終端視頻解碼設(shè)備的解碼器的運(yùn)行狀態(tài)為啟動(dòng)狀態(tài)或出錯(cuò)停止?fàn)顟B(tài)時(shí),可以將當(dāng)前待編碼的一幀在編碼時(shí)利用當(dāng)前幀的信息進(jìn)行編碼,即將當(dāng)前一幀編碼為I幀,但是為了防止傳輸過(guò)程中的誤差,服務(wù)端設(shè)備可以將當(dāng)前待編碼的兩幀或三幀等一定數(shù)量的視頻幀編碼為I幀并發(fā)送,保證終端解碼設(shè)備的解碼器可以開(kāi)始工作或從錯(cuò)誤中恢復(fù)。圖8為圖6和圖7所示實(shí)施例的終端視頻解碼設(shè)備和服務(wù)端設(shè)備的應(yīng)用示意圖, 請(qǐng)參照?qǐng)D8,在本實(shí)施例中,服務(wù)端設(shè)備81包括編碼器811和監(jiān)聽(tīng)服務(wù)進(jìn)程812,其中,監(jiān)聽(tīng)服務(wù)進(jìn)程812用于實(shí)現(xiàn)圖7所示實(shí)施例碼流傳輸控制裝置71的功能;機(jī)頂盒82包括解碼器821和請(qǐng)求服務(wù)進(jìn)程822,其中,請(qǐng)求服務(wù)進(jìn)程822用于實(shí)現(xiàn)圖6所示實(shí)施例碼流傳輸控制裝置61的功能。在本實(shí)施例中,請(qǐng)求服務(wù)進(jìn)程822將解碼器821的運(yùn)行狀態(tài)發(fā)送到服務(wù)端設(shè)備81 的監(jiān)聽(tīng)服務(wù)進(jìn)程812,該監(jiān)聽(tīng)服務(wù)進(jìn)程812根據(jù)請(qǐng)求服務(wù)進(jìn)程821發(fā)送的解碼器821的運(yùn)行狀態(tài),向編碼器811發(fā)送相應(yīng)的編碼器控制命令,編碼器811根據(jù)監(jiān)聽(tīng)服務(wù)進(jìn)程發(fā)送的編碼器控制命令,采用I幀或P幀(B幀)編碼視頻流并發(fā)送到機(jī)頂盒82的解碼器821進(jìn)行解碼。具體的處理流程已經(jīng)在前述實(shí)施例中進(jìn)行了詳細(xì)說(shuō)明,在此不再贅述。通過(guò)本發(fā)明實(shí)施例提供的服務(wù)端設(shè)備和機(jī)頂盒,可以在不增加延時(shí)的情況下,使得機(jī)頂盒隨機(jī)接入視頻信號(hào),并可立即開(kāi)始解碼視頻信號(hào);在碼流出錯(cuò)的情況下,該機(jī)頂盒可快速的從錯(cuò)誤狀態(tài)中恢復(fù)。
以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種碼流傳輸控制方法,其特征在于,所述方法包括接收終端視頻解碼設(shè)備發(fā)送的解碼器的運(yùn)行狀態(tài);判斷所述解碼器的運(yùn)行狀態(tài)是否滿足第一預(yù)設(shè)條件,如果滿足所述第一預(yù)設(shè)條件,則針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送,否則,針對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送。
2.根據(jù)權(quán)利要求1所述的一種碼流傳輸控制方法,其特征在于,所述第一預(yù)設(shè)條件包括,所述解碼器的運(yùn)行狀態(tài)為出錯(cuò)停止?fàn)顟B(tài)或者為啟動(dòng)狀態(tài)。
3.根據(jù)權(quán)利要求1所述的一種碼流傳輸控制方法,其特征在于還包括,接收終端視頻解碼設(shè)備發(fā)送的網(wǎng)絡(luò)狀態(tài)信息,所述網(wǎng)絡(luò)狀態(tài)信息包括丟包率信息和/或錯(cuò)包率信息;如果所述網(wǎng)絡(luò)狀態(tài)信息滿足第二預(yù)設(shè)條件,則針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送,否則,針對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送。
4.根據(jù)權(quán)利要求3所述的一種碼流傳輸控制方法,其特征在于,如果所述網(wǎng)絡(luò)狀態(tài)信息滿足第二預(yù)設(shè)條件,則針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送包括,當(dāng)所述丟包率大于第一閾值時(shí),則針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送;或者當(dāng)所述錯(cuò)包率大于第二閾值時(shí),則針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送。
5.如權(quán)利要求1 4任一所述的一種碼流傳輸控制方法,其特征在于,當(dāng)針對(duì)當(dāng)前待編碼的一幀利用當(dāng)前幀的信息進(jìn)行編碼時(shí),所述方法還包括什Cltfl €SIZ€跳過(guò)η幀不進(jìn)行編碼,其中,〃 ={bitrate/Jps)~l framesize為利用當(dāng)前幀的信息進(jìn)行編碼后數(shù)據(jù)幀的大小,bitrate為設(shè)定的平均碼率或發(fā)送帶寬,fps為編碼器預(yù)設(shè)幀率。
6.一種服務(wù)端設(shè)備,包括編碼器,所述編碼器用于生成視頻幀,其特征在于所述服務(wù)端設(shè)備還包括第一接收單元,用于接收終端視頻解碼設(shè)備發(fā)送的解碼器的運(yùn)行狀態(tài);第一控制單元,判斷所述解碼器的運(yùn)行狀態(tài)是否滿足第一預(yù)設(shè)條件,如果滿足所述第一預(yù)設(shè)條件,則針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送,否則,針對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送。
7.根據(jù)權(quán)利要求6所述的一種服務(wù)端設(shè)備,其特征在于所述第一控制單元,具體用于判斷所述解碼器的運(yùn)行狀態(tài)是否為出錯(cuò)停止?fàn)顟B(tài)或者為啟動(dòng)狀態(tài),如果所述解碼器的運(yùn)行狀態(tài)為出錯(cuò)停止?fàn)顟B(tài)或啟動(dòng)狀態(tài),則針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送,否則,針對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送。
8.根據(jù)權(quán)利要求6所述的一種服務(wù)端設(shè)備,其特征在于還包括,第二接收單元,用于接收終端視頻解碼設(shè)備發(fā)送的網(wǎng)絡(luò)狀態(tài)信息,所述網(wǎng)絡(luò)狀態(tài)信息包括丟包率信息和/或錯(cuò)包率信息;第二控制單元,用于判斷如果所述網(wǎng)絡(luò)狀態(tài)信息滿足第二預(yù)設(shè)條件,則針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送,否則,針對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送。
9.根據(jù)權(quán)利要求8所述的一種服務(wù)端設(shè)備,其特征在于,所述第二控制單元,用于進(jìn)一步判斷,當(dāng)所述丟包率大于第一閾值時(shí),則針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送;或者當(dāng)所述錯(cuò)包率大于第二閾值時(shí),則針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送。
10.根據(jù)權(quán)利要求6 9任意一項(xiàng)權(quán)利要求所述的一種服務(wù)端設(shè)備,其特征在于,所述第一控制單元或者第二控制單元還用于在針對(duì)當(dāng)前待編碼的一幀利用當(dāng)前幀的信息進(jìn)frQfHC SlZC行編碼后,跳過(guò)η幀不進(jìn)行編碼,其中,〃 ={bitmte/Jps)~l framesize為利用當(dāng)前幀的信息進(jìn)行編碼后數(shù)據(jù)幀的大小,bitrate為設(shè)定的平均碼率或發(fā)送帶寬,fps為編碼器預(yù)設(shè)幀率。
全文摘要
本發(fā)明實(shí)施例提供一種碼流傳輸控制方法和裝置,所述方法包括接收終端視頻解碼設(shè)備發(fā)送的解碼器的運(yùn)行狀態(tài);判斷所述解碼器的運(yùn)行狀態(tài)是否滿足第一預(yù)設(shè)條件,如果滿足所述第一預(yù)設(shè)條件,則針對(duì)當(dāng)前待編碼的至少一幀利用當(dāng)前幀的信息進(jìn)行編碼并發(fā)送,否則,針對(duì)待編碼的每幀利用當(dāng)前幀和其他幀的信息進(jìn)行編碼并發(fā)送。通過(guò)本發(fā)明實(shí)施例的方法和裝置,可以根據(jù)終端視頻解碼設(shè)備解碼器的運(yùn)行狀態(tài)確定相應(yīng)的編碼方式,使得終端視頻解碼設(shè)備的解碼器的運(yùn)行狀態(tài)滿足第一預(yù)設(shè)條件時(shí),可以使解碼器從錯(cuò)誤中很快的恢復(fù)正常,并且也不會(huì)因?yàn)槔卯?dāng)前幀的信息進(jìn)行編碼的視頻幀加入的過(guò)多造成視頻傳輸?shù)难訒r(shí)。
文檔編號(hào)H04N21/238GK102572516SQ20111043331
公開(kāi)日2012年7月11日 申請(qǐng)日期2011年12月21日 優(yōu)先權(quán)日2011年12月21日
發(fā)明者牛長(zhǎng)鋒, 韓堅(jiān) 申請(qǐng)人:北京視博云科技有限公司