主頁(yè)(http://www.130131.com):轉(zhuǎn)碼技術(shù)在視頻領(lǐng)域內(nèi)的應(yīng)用分析(2) MPEG-2 視頻數(shù)據(jù)中所有的頭信息被解碼后都直接送到 MPEG -4 編碼器中進(jìn)行編碼,其中少數(shù)頭信息需要調(diào)整,以適應(yīng)新的編碼格式。而 DCT 系數(shù)和 MV 信息被重用,省去了運(yùn)動(dòng)估計(jì)和 DCT 的系統(tǒng)消耗。同時(shí) MPEG -4 做運(yùn)動(dòng)補(bǔ)償?shù)臅r(shí)候,也可以直接利用 MPEG -2 解碼器解碼得出的運(yùn)動(dòng)矢量的信息。 我們可以看出,使用不同的轉(zhuǎn)碼算法在不同需求的編碼轉(zhuǎn)換時(shí),可以得到不同的時(shí)間及系統(tǒng)消耗復(fù)雜度。這些不同復(fù)雜度算法的是否采用取決于用戶對(duì)工作任務(wù)的要求。比如工作任務(wù)需要實(shí)時(shí)獲得轉(zhuǎn)碼結(jié)果,要求高可靠性,并且對(duì)轉(zhuǎn)碼前后的數(shù)據(jù)的編碼方式及碼流指定不變。那么我們可以采用高效的轉(zhuǎn)碼算法,必要時(shí)犧牲一些圖像質(zhì)量,將算法固化在硬件芯片板卡上,從而滿足任務(wù)需求。如果工作任務(wù)對(duì)轉(zhuǎn)碼同步性要求并不高,不要求實(shí)時(shí)輸出,但對(duì)圖像質(zhì)量有很高的要求,我們可以采用一些效率較低,但圖像質(zhì)量損失較小的轉(zhuǎn)碼算法?梢詫⑺惴ü潭ㄔ谟布酒,也可以使用通用的計(jì)算機(jī)運(yùn)算系統(tǒng)、存儲(chǔ)系統(tǒng)和數(shù)據(jù)交換系統(tǒng),使用軟件算法進(jìn)行轉(zhuǎn)碼工作,這些方式的具體應(yīng)用方式在本文的后半部分會(huì)詳細(xì)介紹。 下面來(lái)看一下這些轉(zhuǎn)碼工作是如何實(shí)現(xiàn)的。 一、傳統(tǒng)面向流方式的視頻轉(zhuǎn)碼 由于視頻數(shù)據(jù)自身的特點(diǎn),數(shù)據(jù)量的龐大和線性的存儲(chǔ)格式,長(zhǎng)期以來(lái)傳統(tǒng)的視頻編碼轉(zhuǎn)換都是面向數(shù)據(jù)流進(jìn)行操作。其工作原理如一個(gè)制式轉(zhuǎn)換器一樣,輸入端輸入連續(xù)的 NTSC 制信號(hào),同時(shí)在輸出端輸出實(shí)時(shí)的 PAL 制信號(hào)。 這種方式的優(yōu)點(diǎn)是可以以實(shí)時(shí)或者接近實(shí)時(shí)的方式輸出轉(zhuǎn)碼結(jié)果,轉(zhuǎn)碼算法固化在板卡芯片上,轉(zhuǎn)碼工作基本上是由硬件完成,穩(wěn)定性好。但其缺點(diǎn)也是顯而易見的,轉(zhuǎn)碼單元針對(duì)特定的源編碼方式和目標(biāo)編碼方式,用戶基本無(wú)法對(duì)碼流的大小和附加信息進(jìn)行控制,靈活性較差。而為了滿足實(shí)時(shí)處理的要求,有時(shí)必須需要犧牲一些圖像的質(zhì)量。另外的缺點(diǎn)就是這種基于流方式的視頻轉(zhuǎn)碼,輸入和輸出基本同步,不能以快于實(shí)時(shí)的速度進(jìn)行編碼轉(zhuǎn)換。 隨著計(jì)算機(jī)技術(shù)的日益進(jìn)步,非線性存儲(chǔ)手段日益完善,我們可以通過(guò)文件的方式存儲(chǔ)視頻數(shù)據(jù)。這樣就為視頻數(shù)據(jù)提供了新的,更加靈活高效的轉(zhuǎn)碼手段。 二、使用計(jì)算機(jī)及其相關(guān)設(shè)備面向文件方式進(jìn)行視頻轉(zhuǎn)碼 使用計(jì)算機(jī)設(shè)備改變單幅圖像的編碼方式已經(jīng)是一個(gè)非常成熟的技術(shù),但受到計(jì)算機(jī)運(yùn)算能力和存儲(chǔ)能力的限制,很長(zhǎng)一段時(shí)間內(nèi),對(duì)于符合廣播級(jí)要求的專業(yè)視頻數(shù)據(jù)的編碼轉(zhuǎn)換處理一直沒有什么好的解決方案。但隨著計(jì)算機(jī)設(shè)備運(yùn)算能力的增強(qiáng)和存儲(chǔ)容量的日益擴(kuò)大、其數(shù)據(jù)接口已經(jīng)可以滿足視頻數(shù)據(jù)處理的需求,使用計(jì)算機(jī)及其相關(guān)設(shè)備處理視頻數(shù)據(jù)已經(jīng)成為現(xiàn)在的主流,同時(shí)也給視頻轉(zhuǎn)碼提供了更好性價(jià)比的平臺(tái)。我們可以使用計(jì)算機(jī)設(shè)備,利用軟件手段,進(jìn)行靈活高效的轉(zhuǎn)碼工作。 我們來(lái)看一看如何使用計(jì)算機(jī)系統(tǒng)進(jìn)行轉(zhuǎn)碼工作。 這種利用計(jì)算機(jī)設(shè)備進(jìn)行轉(zhuǎn)碼的工作方式具有非常大的靈活性,可以對(duì)以文件方式或以流方式存在的視頻數(shù)據(jù)進(jìn)行處理。其本質(zhì)均是在計(jì)算機(jī)設(shè)備的存儲(chǔ)器內(nèi)開設(shè)足夠大數(shù)據(jù)的緩存地帶,將所需處理的視頻數(shù)據(jù)文件或流分成許多大小適合的片段,放入其中。由軟件提供轉(zhuǎn)碼算法,并控制計(jì)算機(jī)系統(tǒng)進(jìn)行轉(zhuǎn)碼工作。圖 -7 中所示的數(shù)據(jù)接口的概念也非常的靈活,它可以使計(jì)算機(jī)設(shè)備的外部接口,如千兆以太、 Fiber Channel 通道,也可以是其本身的內(nèi)置存儲(chǔ)通道接口。我們來(lái)看一下他們是如何工作的。 計(jì)算機(jī)設(shè)備先將需轉(zhuǎn)換編碼方式的視頻數(shù)據(jù)文件放入外部存儲(chǔ)或本地存儲(chǔ)設(shè)備中。然后將該視頻文件拆分成適合計(jì)算機(jī)設(shè)備處理的數(shù)據(jù)片段,放入高速緩存中,由軟件提供轉(zhuǎn)碼算法,利用計(jì)算機(jī)設(shè)備的處理能力對(duì)數(shù)據(jù)片段進(jìn)行編碼轉(zhuǎn)換。轉(zhuǎn)換完成后將數(shù)據(jù)片段送入指定區(qū)域存儲(chǔ),同時(shí)高速緩存區(qū)獲取新的數(shù)據(jù)片段。循環(huán)這種方式直到所有的拆分?jǐn)?shù)據(jù)片段均得到了轉(zhuǎn)碼處理,合并轉(zhuǎn)碼完成的視頻數(shù)據(jù)文件片段,輸出我們所需要得到的視頻數(shù)據(jù)。 這種拆分?jǐn)?shù)據(jù)的方式同樣也適合于以流方式存在的視頻數(shù)據(jù),比如我們可以使用數(shù)據(jù)接口直接與數(shù)字視頻數(shù)據(jù)流連接,不經(jīng)過(guò)任何的編解碼將其存儲(chǔ)到計(jì)算機(jī)轉(zhuǎn)碼設(shè)備的指定緩存區(qū)域,變線性的數(shù)據(jù)流存在方式為非線性的數(shù)據(jù)存儲(chǔ)方式,然后可以使用圖— 8 所示的數(shù)據(jù)拆分方式進(jìn)行轉(zhuǎn)碼處理,經(jīng)合并后,可以選擇文件方式或依然保持流方式的數(shù)據(jù)輸出。 采用這種方式的轉(zhuǎn)碼工作,具有很強(qiáng)的靈活性,數(shù)字信號(hào)接口并不需要識(shí)別接收到的數(shù)據(jù)流為何種格式編碼、封裝如何。只需將數(shù)據(jù)如實(shí)記錄到緩存區(qū),由轉(zhuǎn)碼軟件決定采用何種轉(zhuǎn)碼手段,針對(duì)何種數(shù)據(jù)流的編碼格式和封裝方法進(jìn)行編碼轉(zhuǎn)換工作。如我們?cè)诮涌谟布䴓?biāo)準(zhǔn)相同的情況下,可以對(duì) DV 流、 TS 流、 FTP 文件流等多種方式的數(shù)據(jù)流輸入進(jìn)行編碼轉(zhuǎn)換,并不需要更換硬件接口和編解碼設(shè)備,只需更改轉(zhuǎn)碼軟件的轉(zhuǎn)碼處理手段及控制手段即可 我們看一下轉(zhuǎn)碼軟件究竟是如何進(jìn)行工作的。 不同的轉(zhuǎn)碼軟件有其各自特點(diǎn),但不外乎有以下幾個(gè)功能模塊組成:數(shù)據(jù)接口模塊、硬件接口模塊、存儲(chǔ)管理模塊、轉(zhuǎn)碼算法模塊、數(shù)據(jù)處理模塊、控制管理模塊和用戶界面模塊。 每個(gè)模塊各自負(fù)責(zé)軟件工作的一個(gè)或幾個(gè)方面:數(shù)據(jù)接口模塊負(fù)責(zé)處理數(shù)據(jù)的輸入和輸出,硬件接口模塊負(fù)責(zé)與計(jì)算機(jī)硬件驅(qū)動(dòng)程序通信,存儲(chǔ)管理模塊負(fù)責(zé)內(nèi)村等存儲(chǔ)空間的分配,轉(zhuǎn)碼算法模塊提供轉(zhuǎn)碼處理工作的算法手段,數(shù)據(jù)處理模塊進(jìn)行轉(zhuǎn)碼的具體數(shù)據(jù)處理,控制管理模塊進(jìn)行整個(gè)轉(zhuǎn)碼工作的控制和信息處理,用戶界面模塊提供用戶與轉(zhuǎn)碼軟件的交互,提供用戶對(duì)轉(zhuǎn)碼的編碼方式、碼流及其它的一些軟件提供的選項(xiàng)進(jìn)行控制。 轉(zhuǎn)碼算法模塊可以固化到轉(zhuǎn)碼軟件中,也可以以插件的方式存在。當(dāng)轉(zhuǎn)碼軟件處理不同的編碼轉(zhuǎn)換任務(wù)時(shí),根據(jù)需要使用不同的轉(zhuǎn)碼算法插件,可以在不改變其它功能模塊配置的情況下,靈活的擴(kuò)展軟件功能。 使用計(jì)算機(jī)設(shè)備配合轉(zhuǎn)碼軟件,進(jìn)行專業(yè)視頻編碼轉(zhuǎn)換工作,具有以下一些優(yōu)點(diǎn): ? 硬件設(shè)施相對(duì)簡(jiǎn)單 使用計(jì)算機(jī)設(shè)備及軟件進(jìn)行轉(zhuǎn)碼工作,無(wú)需使用專用的編解碼芯片或板卡。對(duì)數(shù)據(jù)的處理完全由軟件來(lái)控制完成。 ? 轉(zhuǎn)碼范圍廣、靈活性好 使用軟件轉(zhuǎn)碼,可以由用戶根據(jù)需求對(duì)轉(zhuǎn)碼設(shè)置進(jìn)行控制。包括目標(biāo)碼流的的大小、級(jí)別、壓縮方式、封裝方式等方面均可以由用戶來(lái)指定,根據(jù)不同的需求直接使用相應(yīng)的轉(zhuǎn)碼算法,轉(zhuǎn)碼算法可以作為插件存在于軟件中,便于隨時(shí)更新或升級(jí),而無(wú)需對(duì)整個(gè)系統(tǒng)進(jìn)行改動(dòng)。
|




