視頻轉(zhuǎn)碼技術(shù)及轉(zhuǎn)碼實現(xiàn)詳解
本文簡單介紹了視頻轉(zhuǎn)碼技術(shù)的定義、分類及實現(xiàn)手段,重點分析了如何在視頻工程中使用轉(zhuǎn)碼技術(shù),包括轉(zhuǎn)碼技術(shù)的使用方式及其優(yōu)勢所在。分析了在流方式和文件方式下如何使用轉(zhuǎn)碼技術(shù)。通過對移動非線性編輯系統(tǒng)遠(yuǎn)程傳輸視頻數(shù)據(jù)和節(jié)目制作網(wǎng)絡(luò)素材集中上載兩個工程實例的分析,探討了轉(zhuǎn)碼系統(tǒng)工作的靈活性和通用性。闡明了作者對在專業(yè)視頻領(lǐng)域內(nèi),配合計算機設(shè)備及網(wǎng)絡(luò)架構(gòu),使用轉(zhuǎn)碼技術(shù)前景的看法。
1 引言
從一個簡單的問題開始我們的討論:對于一個視頻工程技術(shù)人員而言,工作中所需面對的視音頻編碼方式有多少種?
以編碼和壓縮方式的大類而言,我們需要面對 MoTIon-JPEG 、 MPEG 、 DV 、 H.261H.263 等不同系列的壓縮編碼方式;每一種編碼方式我們又需面對不同的子類或子級,如討論 DVB ,經(jīng)常就要涉及 MPEG-2 MP@ML 和 MP@HL ;不同廠商的視頻產(chǎn)品,也根據(jù)各自情況采用不同的 幀內(nèi)、幀間編碼關(guān)系及不同的碼流; GOP 長度、 I 、 B 、 P 幀、 50 、 25 Mbps 等名詞現(xiàn)在已經(jīng)成為視頻產(chǎn)品技術(shù)參數(shù)的重要組成部分;每個廠商在視頻數(shù)據(jù)的封裝上也有各自的編碼方式,不同廠商開發(fā)的視頻服務(wù)器,如 Grass Valley 的 Profile 系列服務(wù)器和 SONY 的 MAV 系列的服務(wù)器,雖然可以支持以相同 GOP 長度、相同碼流的編碼方式產(chǎn)生 MPEG-2 視頻文件,但由于在文件封裝上的不同,二者產(chǎn)生的視頻文件是無法相互直接使用的,這種情況在數(shù)字視頻領(lǐng)域相當(dāng)普遍,有時甚至在同一廠商所開發(fā)的不同系列的視頻產(chǎn)品中,數(shù)據(jù)流或文件也是無法相互識別的。
我們不想在這里探討哪一種編碼壓縮方式更好、更優(yōu)秀,本文想要討論的是:在采用不同壓縮編碼方式的視頻設(shè)備之間如何高質(zhì)量、高效效率的共享和交換視音頻數(shù)據(jù)。
現(xiàn)在交換視頻數(shù)據(jù)的普遍做法是將編碼完成的視頻數(shù)據(jù)解壓縮為基帶信號,根據(jù)情況進行再編碼,并加以適當(dāng)?shù)姆庋b,使用相同的接口協(xié)議,以流的方式,在不同的視頻產(chǎn)品之間進行傳輸共享。如在不同的視頻產(chǎn)品間使用 SDI 連接,不論設(shè)備內(nèi)部使用何種編碼方式,均通過內(nèi)置的 SDI 編解碼器將視頻數(shù)據(jù)編解碼為標(biāo)準(zhǔn)的 SDI 數(shù)據(jù)流,進行傳輸。
無論設(shè)備 A 內(nèi)部的采用何種壓縮編碼方式,在向設(shè)備 B 傳輸視頻數(shù)據(jù)時,首先通過其內(nèi)置的數(shù)據(jù)解碼單元將視頻數(shù)據(jù)解碼送至 SDI 編碼器,封裝轉(zhuǎn)換成 SDI 數(shù)據(jù)流,再通過 SDI 接口傳輸給設(shè)備 B 的 SDI 接口,設(shè)備 B 將其通過 SDI 解碼器,送至其本身的數(shù)據(jù)編碼單元,對視頻數(shù)據(jù)重新編碼進行處理或存儲。
這種數(shù)據(jù)交換的前提,是不同的設(shè)備存在遵從相同協(xié)議的接口,如 SDI 接口,并具備相應(yīng)的編解碼硬件設(shè)備,使用一種可以共同識別的數(shù)據(jù)流作為中介進行視音頻數(shù)據(jù)的交換。
我們換一個角度來看,這種方式本身可以看成是一個編碼方式轉(zhuǎn)換,即轉(zhuǎn)碼的過程。它將設(shè)備 A 中編碼處理的視頻數(shù)據(jù)解碼,通過 SDI 編解碼器轉(zhuǎn)換成 SDI 流,傳輸給設(shè)備 B ,再將其傳換成為設(shè)備 B 所使用的數(shù)據(jù)編碼方式進行處理和存儲。
在這種情況下,如果我們可以使用直接的轉(zhuǎn)碼手段,將基于設(shè)備 A 編碼方式的視頻數(shù)據(jù)轉(zhuǎn)換為設(shè)備 B 可以識別并使用的數(shù)據(jù)編碼格式,為設(shè)備 B 處理或存儲,可以減少重復(fù)編解碼所帶來的設(shè)備開銷和信號質(zhì)量下降,并且可以利用多種的傳輸通道,而不局限于指定的接口通道,可以大大的提高工作效率。
這正是本文想要和大家探討的,如何靈活的利用轉(zhuǎn)碼方式,在基于不同編碼方式的設(shè)備間共享視頻數(shù)據(jù),提高工作效率,同時討論在工程方面的可能會遇到的問題及解決方案。
2 視頻轉(zhuǎn)碼技術(shù)
視頻轉(zhuǎn)碼技術(shù),顧名思義就是在通過某種手段改變現(xiàn)有視頻數(shù)據(jù)的編碼方式。視頻轉(zhuǎn)碼技術(shù)使用的目的不同,其實現(xiàn)的手段也各不相同。大致上可以分為兩類:
一、不同編碼格式之間的視頻數(shù)據(jù)轉(zhuǎn)碼
不同編碼格式之間的數(shù)據(jù)轉(zhuǎn)碼,指通過轉(zhuǎn)碼方法改變視頻數(shù)據(jù)的編碼格式。通常這種數(shù)據(jù)轉(zhuǎn)碼會改變視頻數(shù)據(jù)的現(xiàn)有碼流和分辨率。
例如我們可以將基于 MPEG-2 格式的視頻數(shù)據(jù)轉(zhuǎn)換為 DV 、 MPEG-4 或其它編碼格式,同時根據(jù)其轉(zhuǎn)碼目的,指定轉(zhuǎn)碼產(chǎn)生視頻數(shù)據(jù)的碼流和分辨率。我們可以將 MPEG-2 全 I 幀 50Mbps 的視頻源數(shù)據(jù)轉(zhuǎn)換為 25Mbps 碼流的 DV 格式數(shù)據(jù),用于筆記本移動編輯系統(tǒng),同時產(chǎn)生一個 300*200 低分辨率的 MPEG-4 文件,使用 REAL 或者微軟的 WMV 格式進行封裝,通過互聯(lián)網(wǎng)絡(luò)傳輸至主管領(lǐng)導(dǎo)處用于審看。
這種轉(zhuǎn)碼方式設(shè)計的算法較為復(fù)雜,其實質(zhì)上是一個重新編碼的過程,涉及的算法復(fù)雜度和系統(tǒng)開銷,是由轉(zhuǎn)碼所需圖像質(zhì)量要求及轉(zhuǎn)碼前后兩種編碼方式的相關(guān)度所決定的。
二、相同編碼格式之間的視頻數(shù)據(jù)轉(zhuǎn)碼
相同編碼格式的數(shù)據(jù)轉(zhuǎn)碼,指不改變壓縮格式,只通過轉(zhuǎn)碼手段改變其碼流或頭文件信息。根據(jù)其使用目的,可分為改變碼流和不改變碼流兩種。
如我們可以將 MPEG-2 全 I 幀 50Mbps 碼流的視頻數(shù)據(jù)轉(zhuǎn)碼為 MPEG-2 IBBP 幀 8Mbps 碼流的視頻數(shù)據(jù),直接用于播出服務(wù)器用于播出?;蛘呶覀儗⒒?SONY 視頻服務(wù)器頭文件封裝的 MPEG-2 全 I 幀 50Mbps 碼流的視頻文件,改變其頭文件和封裝形式,使之可以在給予 MATROX 板卡的編輯系統(tǒng)上直接編輯使用。
這種轉(zhuǎn)碼方式的復(fù)雜度要小于不同編碼格式轉(zhuǎn)碼的復(fù)雜度,而且對視頻工程上而言,更加具有可操作性。
3 視頻數(shù)據(jù)轉(zhuǎn)碼的實現(xiàn)
視頻數(shù)據(jù)不同編碼之間的相互轉(zhuǎn)化有很多算法可以實現(xiàn),許多運動圖像專家對此也作了深入的研究,針對不同的編碼方式提出了相當(dāng)多可行的方案。這些方案共同的特點就是充分利用所需相互轉(zhuǎn)換編碼之間的共同特征,盡量減少編解碼所帶來的圖像質(zhì)量損失,同時達到時間和資源消耗的平衡。
如我們將一個 MPEG-2 的視頻數(shù)據(jù)轉(zhuǎn)換成 MPEG-4 的視頻數(shù)據(jù),當(dāng)然可以采用的方法是先將 MPEG-2 的視頻解壓縮成單 幀的圖像序列,再將其重新壓縮編碼成為 MPEG-4 的視頻數(shù)據(jù)
但這種轉(zhuǎn)碼方式的運算復(fù)雜度的使用 SDI 數(shù)據(jù)流作為中介的運算復(fù)雜度并沒有什么區(qū)別。我們可以通過一些方法提高轉(zhuǎn)碼的效率,降低運算復(fù)雜度,比如 MPEG-2 和 MPEG-4 在其編碼算法上有很多相通的地方,在 DCT 變換, MC 運動補償, MV 運動補償?shù)确矫嬗性S多可以公用的地方,我們并不需要將其完全解碼成獨立的圖像序列,可利用不同編碼方式間的相關(guān)性進行轉(zhuǎn)碼工作
MPEG-2 視頻數(shù)據(jù)中所有的頭信息被解碼后都直接送到 MPEG -4 編碼器中進行編碼,其中少數(shù)頭信息需要調(diào)整,以適應(yīng)新的編碼格式。而 DCT 系數(shù)和 MV 信息被重用,省去了運動估計和 DCT 的系統(tǒng)消耗。同時 MPEG -4 做運動補償?shù)臅r候,也可以直接利用 MPEG -2 解碼器解碼得出的運動矢量的信息。
我們可以看出,使用不同的轉(zhuǎn)碼算法在不同需求的編碼轉(zhuǎn)換時,可以得到不同的時間及系統(tǒng)消耗復(fù)雜度。這些不同復(fù)雜度算法的是否采用取決于用戶對工作任務(wù)的要求。比如工作任務(wù)需要實時獲得轉(zhuǎn)碼結(jié)果,要求高可靠性,并且對轉(zhuǎn)碼前后的數(shù)據(jù)的編碼方式及碼流指定不變。那么我們可以采用高效的轉(zhuǎn)碼算法,必要時犧牲一些圖像質(zhì)量,將算法固化在硬件芯片板卡上,從而滿足任務(wù)需求。如果工作任務(wù)對轉(zhuǎn)碼同步性要求并不高,不要求實時輸出,但對圖像質(zhì)量有很高的要求,我們可以采用一些效率較低,但圖像質(zhì)量損失較小的轉(zhuǎn)碼算法??梢詫⑺惴ü潭ㄔ谟布酒校部梢允褂猛ㄓ玫挠嬎銠C運算系統(tǒng)、存儲系統(tǒng)和數(shù)據(jù)交換系統(tǒng),使用軟件算法進行轉(zhuǎn)碼工作,這些方式的具體應(yīng)用方式在本文的后半部分會詳細(xì)介紹。
下面來看一下這些轉(zhuǎn)碼工作是如何實現(xiàn)的。
一、傳統(tǒng)面向流方式的視頻轉(zhuǎn)碼
由于視頻數(shù)據(jù)自身的特點,數(shù)據(jù)量的龐大和線性的存儲格式,長期以來傳統(tǒng)的視頻編碼轉(zhuǎn)換都是面向數(shù)據(jù)流進行操作。其工作原理如一個制式轉(zhuǎn)換器一樣,輸入端輸入連續(xù)的 NTSC 制信號,同時在輸出端輸出實時的 PAL 制信號。
這種方式的優(yōu)點是可以以實時或者接近實時的方式輸出轉(zhuǎn)碼結(jié)果,轉(zhuǎn)碼算法固化在板卡芯片上,轉(zhuǎn)碼工作基本上是由硬件完成,穩(wěn)定性好。但其缺點也是顯而易見的,轉(zhuǎn)碼單元針對特定的源編碼方式和目標(biāo)編碼方式,用戶基本無法對碼流的大小和附加信息進行控制,靈活性較差。而為了滿足實時處理的要求,有時必須需要犧牲一些圖像的質(zhì)量。另外的缺點就是這種基于流方式的視頻轉(zhuǎn)碼,輸入和輸出基本同步,不能以快于實時的速度進行編碼轉(zhuǎn)換。
隨著計算機技術(shù)的日益進步,非線性存儲手段日益完善,我們可以通過文件的方式存儲視頻數(shù)據(jù)。這樣就為視頻數(shù)據(jù)提供了新的,更加靈活高效的轉(zhuǎn)碼手段。
二、使用計算機及其相關(guān)設(shè)備面向文件方式進行視頻轉(zhuǎn)碼
使用計算機設(shè)備改變單幅圖像的編碼方式已經(jīng)是一個非常成熟的技術(shù),但受到計算機運算能力和存儲能力的限制,很長一段時間內(nèi),對于符合廣播級要求的專業(yè)視頻數(shù)據(jù)的編碼轉(zhuǎn)換處理一直沒有什么好的解決方案。但隨著計算機設(shè)備運算能力的增強和存儲容量的日益擴大、其數(shù)據(jù)接口已經(jīng)可以滿足視頻數(shù)據(jù)處理的需求,使用計算機及其相關(guān)設(shè)備處理視頻數(shù)據(jù)已經(jīng)成為現(xiàn)在的主流,同時也給視頻轉(zhuǎn)碼提供了更好性價比的平臺。我們可以使用計算機設(shè)備,利用軟件手段,進行靈活高效的轉(zhuǎn)碼工作。