一種基于h264的多路視頻會(huì)議系統(tǒng)的抗誤碼方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于信息技術(shù)領(lǐng)域,特別是涉及一種多路網(wǎng)絡(luò)視頻會(huì)議中的抗誤碼視頻處理方法及系統(tǒng)。
【背景技術(shù)】
[0002]近年來,互聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)、多媒體技術(shù)等都獲得了快速發(fā)展,具有較好實(shí)時(shí)性和交互性的網(wǎng)絡(luò)視頻會(huì)議也得到了越來越廣泛的應(yīng)用。視頻會(huì)議終端擴(kuò)展到了手機(jī)、平板電腦、個(gè)人計(jì)算機(jī)等多種類型,視頻質(zhì)量面臨著越來越高的要求,并且正逐漸成為各個(gè)廠商相互比拼的熱點(diǎn)之一。
[0003]在網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)中,各個(gè)終端一般處于不同的地點(diǎn),終端之間的視頻通話要經(jīng)過互聯(lián)網(wǎng)或移動(dòng)互聯(lián)網(wǎng)進(jìn)行傳輸。然而網(wǎng)絡(luò)通信一般都不能保證傳輸過程完全可靠,這就需要依靠一些技術(shù)手段來保證視頻通信質(zhì)量。目前,在視頻編解碼層面、碼流傳輸層面、應(yīng)用層面等都出現(xiàn)了很多新技術(shù)和新方法。
[0004]在編解碼層面,H264編碼器采用了數(shù)據(jù)分割、幀內(nèi)編碼、宏塊級(jí)幀場自適應(yīng)MBAFF、宏塊重排FM0、長參考幀以及SP/SI幀技術(shù)等。當(dāng)誤碼錯(cuò)誤無法恢復(fù)時(shí),可以使用錯(cuò)誤隱藏技術(shù)來改善解碼后的圖像質(zhì)量,但是這種改善無法恢復(fù)到原有的圖像質(zhì)量。另外,網(wǎng)絡(luò)視頻會(huì)議的特性限制了很多延遲大、復(fù)雜度高的抗誤碼技術(shù)的使用。
[0005]在碼流傳輸層面,網(wǎng)絡(luò)視頻會(huì)議大多采用基于UDP協(xié)議的RTP/RTCP傳輸視頻流,并采用冗余傳輸、錯(cuò)誤檢測和重傳等技術(shù)來保證傳輸?shù)目煽啃浴?br>[0006]近來,為了適應(yīng)更加復(fù)雜的網(wǎng)絡(luò)傳輸環(huán)境,滿足網(wǎng)絡(luò)視頻會(huì)議的低延遲等特性,把視頻編解碼和視頻碼流傳輸結(jié)合起來設(shè)計(jì)整體抗誤碼方案,可以獲得較好的效果。例如,在碼流丟包時(shí)插入關(guān)鍵幀的實(shí)時(shí)流媒體丟包處理方案,根據(jù)解碼器宏塊錯(cuò)誤信息反饋來靈活選擇編碼宏塊的參考圖像的方案,使用多個(gè)子序列并行獨(dú)立編碼和傳輸?shù)姆桨?,均獲得了一定效果。
[0007]現(xiàn)有的技術(shù)方案或產(chǎn)品一般存在如下的問題:
[0008](I)在工程應(yīng)用中,直接解碼帶有錯(cuò)誤的視頻碼流,容易導(dǎo)致沒有容錯(cuò)能力的視頻解碼器崩潰;網(wǎng)絡(luò)視頻會(huì)議的終端一般要支持多種不同的軟件解碼器、硬件解碼器。逐個(gè)開發(fā)解碼器的容錯(cuò)功能,一方面開發(fā)成本較高,另一方面將很難使用終端平臺(tái)的通用硬件解碼器來降低終端功耗和解碼時(shí)間。
[0009](2)現(xiàn)有H264協(xié)議所述的抗誤碼機(jī)制和算法并不能保證碼流傳輸?shù)目煽啃?,他們只是為緩解碼流傳輸錯(cuò)誤出現(xiàn)幾率提供了一些可選的工具和算法,并且很多工具和算法的實(shí)現(xiàn)復(fù)雜度較高,對(duì)編碼處理器要求較高。
[0010](3)網(wǎng)絡(luò)視頻會(huì)議對(duì)延時(shí)比較敏感。如果在解碼器模塊處理碼流錯(cuò)誤并反饋錯(cuò)誤信息,會(huì)增加會(huì)議系統(tǒng)的整體延時(shí)。
[0011](4)對(duì)于RTP層的視頻碼流錯(cuò)誤檢測和重傳機(jī)制,如果重傳次數(shù)太多則會(huì)加重網(wǎng)絡(luò)負(fù)載和系統(tǒng)延時(shí);如果重傳次數(shù)少很難保證碼流的完整性,只能依靠插入關(guān)鍵幀來保證視頻幀的連續(xù)性,但是插入關(guān)鍵幀會(huì)導(dǎo)致碼率突然增大,惡化網(wǎng)絡(luò)傳輸環(huán)境。
[0012]因此,有必要提出一種新的技術(shù)方案。
【發(fā)明內(nèi)容】
[0013]針對(duì)上述問題,本發(fā)明提出一種基于H264的多路視頻會(huì)議系統(tǒng)抗誤碼方法及系統(tǒng),把視頻編解碼和RTP傳輸統(tǒng)一考慮,降低了抗誤碼功能對(duì)視頻解碼器的依賴性和開發(fā)成本,降低了會(huì)議整體延時(shí),避免了插入關(guān)鍵幀的碼率增大。
[0014]本發(fā)明提供一種基于H264的多路視頻會(huì)議系統(tǒng)的抗誤碼方法,所述抗誤碼方法包括如下步驟:
[0015]S1、把H264視頻編碼器配置成N個(gè)線程并行編碼模式,將每幀待編碼圖像劃分為N個(gè)Slice圖像,把H264視頻解碼器緩存的參考幀數(shù)設(shè)置為M;
[0016]S2、在發(fā)送方客戶端建立參考圖像標(biāo)志位列表,所述參考圖像標(biāo)志位列表與編碼器輸出的Ι/P幀參考圖像對(duì)應(yīng),每個(gè)H264視頻編碼器對(duì)應(yīng)一個(gè)唯一的長度為MXN的參考圖像標(biāo)志位列表;
[0017]S3、所述參考圖像標(biāo)志位列表接收H264視頻編碼器輸出的編碼碼流和參考信息,所述參考信息為IP幀的幀號(hào)和SI i Ce圖像;
[0018]S4、發(fā)送方客戶端把包括編碼碼流和參考信息的視頻碼流打包成RTP包進(jìn)行發(fā)送,每個(gè)RTP包最多包含一個(gè)slice圖像的碼流數(shù)據(jù),并建立圖像幀號(hào)、slice圖像號(hào)和RTP包序號(hào)之間的關(guān)系唯一對(duì)應(yīng)關(guān)系列表,所述對(duì)應(yīng)關(guān)系列表最多保存M幀圖像的對(duì)應(yīng)關(guān)系;
[0019]S5、接收方客戶端接收RTP包并判斷RTP包序號(hào)是否連續(xù)、CRC校驗(yàn)是否正確,將序號(hào)連續(xù)、CRC校驗(yàn)正確的RTP包的視頻碼流發(fā)送給H264視頻編碼器,否則將RTP包的錯(cuò)誤信息反饋給發(fā)送方客戶端,所述H264視頻解碼器接收正確視頻碼流,并對(duì)視頻碼流進(jìn)行解碼。
[0020]進(jìn)一步的,所述H264視頻編碼器把編碼碼流和參考信息輸入至所述參考圖像標(biāo)志位列表,所述H264視頻編碼器開始編碼P/B幀類型的圖像前,從所述參考圖像標(biāo)志位列表中讀取當(dāng)前可用的參考圖像的slice圖像信息,更新至H264視頻編碼器的參考圖像列表中。
[0021]進(jìn)一步的,步驟S3中,所述參考圖像標(biāo)志位列表收到編碼碼流和參考信息后,若是IDR幀則清空參考圖像標(biāo)志位列表,否則按照幀號(hào)和slice圖像信息插入到參考圖像標(biāo)志位列表,為每個(gè)s I ice圖像設(shè)立一個(gè)標(biāo)志位,并設(shè)置為“可參考”。
[0022]進(jìn)一步的,步驟S5中,若接收方客戶端判斷RTP包錯(cuò)誤,則將錯(cuò)誤信息反饋到發(fā)送方客戶端,發(fā)送方客戶端可重傳對(duì)應(yīng)的RTP包,重傳次數(shù)達(dá)到最大,則丟棄該RTP包,并根據(jù)圖像幀號(hào)、sI ice圖像號(hào)和RTP包序號(hào),更新參考圖像標(biāo)志位列表中的sI ice圖像為“不可參考,其中,重傳次數(shù)最大可設(shè)置為2次。
[0023]進(jìn)一步的,發(fā)送方客戶端的參考圖像標(biāo)志位列表接收RTP包錯(cuò)誤信息,并將錯(cuò)誤信息反饋到H264視頻編碼器。
[0024]進(jìn)一步的,根據(jù)權(quán)利要求1或2所述的基于H264的多路視頻會(huì)議系統(tǒng)抗誤碼方法,步驟S5中,若H264視頻解碼器解碼出的是Ι/P幀,則緩存該參考圖像,根據(jù)系統(tǒng)延時(shí)要求,最大緩存可設(shè)置M= 15幀。
[0025]本發(fā)明還提供一種基于H264的多路視頻會(huì)議系統(tǒng)的抗誤碼系統(tǒng),所述抗誤碼系統(tǒng)包括發(fā)送方客戶端和接收方客戶端;
[0026]發(fā)送方客戶端包括H264視頻編碼器、參考圖像標(biāo)志位列表模塊和RTP包發(fā)送模塊;
[0027]接收方客戶端包括H264視頻解碼器和RTP包接收模塊;
[0028]所述H264視頻編碼器用于輸出編碼碼流和參考信息,所述參考信息為IP幀的幀號(hào)和slice圖像,其中,所述H264視頻編碼器采用N個(gè)線程并行編碼模式,將每幀待編碼圖像劃分為N個(gè)Slice圖像;
[0029]所述參考圖像標(biāo)志位列表模塊,其用于建立參考圖像標(biāo)志位列表,所述參考圖像標(biāo)志位列表與H264視頻編碼器輸出的Ι/P幀參考圖像對(duì)應(yīng),所述參考圖像標(biāo)志位列表模塊接收H264視頻編碼器輸出的編碼碼流和參考信息,其中,每個(gè)H264視頻編碼器對(duì)應(yīng)一個(gè)唯一的長度為MXN的參考圖像標(biāo)志位列表,M為解碼器緩存的參考幀數(shù);
[0030]所述RTP包發(fā)送模塊,用于將參考圖像標(biāo)志位列表模塊輸出的包括編碼碼流和參考信息的視頻碼流打成RTP包發(fā)送,其中,每個(gè)RTP包最多包含一個(gè)slice圖像的碼流數(shù)據(jù),并建立圖像幀號(hào)、si ice圖像號(hào)和RTP包序號(hào)之間的唯一對(duì)應(yīng)關(guān)系列表,該對(duì)應(yīng)關(guān)系列表最多保存M幀圖像的對(duì)應(yīng)關(guān)系;
[0031]所述RTP包接收模塊,用于接收所述RTP包發(fā)送模塊發(fā)送的RTP包,并判斷RTP包序號(hào)是否連續(xù)、CRC校驗(yàn)是否正確;
[0032]所述H264視頻解碼器,用于解碼RTP包接收模塊發(fā)送序號(hào)連續(xù)、CRC校驗(yàn)正確的RTP包的視頻碼流,H264視頻解碼器緩存的參考幀數(shù)為M。
[0033]進(jìn)一步的,所述H264視頻編碼器把編碼碼流和參考信息輸入至所述參考圖像標(biāo)志位列表模塊,所述H264視頻編碼器開始編碼P/B幀類型的圖像前,從所述參考圖像標(biāo)志位列表模塊中讀取當(dāng)前可用的參考圖像的slice圖像信息,更新至H264視頻編碼器的參考圖像列表中。
[0034]進(jìn)一步的,所述參考圖像標(biāo)志位列表模塊收到編碼碼流和參考信息后,若是IDR幀則清空參考圖像標(biāo)志位列表,否則按照幀號(hào)和slice圖像信息插入到參考圖像標(biāo)志位列表,為每個(gè)slice圖像設(shè)立一個(gè)標(biāo)志位,并設(shè)置為“可參考”。
[00