康旭豐
內(nèi)蒙古新聞出版廣電局微波傳輸總站 內(nèi)蒙古 呼和浩特市010050
隨著數(shù)字視頻拍攝設(shè)備、多媒體技術(shù)及互聯(lián)網(wǎng)的高速發(fā)展,人們可以方便的使用如手機(jī)、DV、運(yùn)動(dòng)相機(jī)、無人機(jī)等設(shè)備拍攝數(shù)字視頻,與此同時(shí)也催生了人們視頻分享及存儲(chǔ)的需求。人們在拍攝原始視頻素材時(shí)往往會(huì)選擇高分辨率、高碼率的編碼參數(shù)用來保證素材質(zhì)量,從而導(dǎo)致原始文件占用較多的存儲(chǔ)空間,在利用這些素材進(jìn)行剪輯時(shí)也將消耗更多的硬件資源。同時(shí),在線視頻分享網(wǎng)站往往對上傳的視頻文件尺寸及編碼參數(shù)有限制,不滿足要求的視頻文件可能被視頻網(wǎng)站的自動(dòng)壓縮功能二次壓縮,導(dǎo)致視頻質(zhì)量的損失。MeGUI可以方便的滿足對數(shù)字視頻進(jìn)行編碼壓縮的需求。
MeGUI通過利用AviSynth的AVS腳本實(shí)現(xiàn)對視頻的處理[1],比如視頻的縮放、裁切、降噪等。AVS腳本將處理后的結(jié)果提交給MeGUI進(jìn)行編碼。AviSynth是一種幀服務(wù)器,在處理數(shù)字視頻文件的過程期間不產(chǎn)生中間文件,可以顯著減少編碼時(shí)間。MeGUI內(nèi)置了多種開源視、音頻編碼器,如X264、X265等視頻編碼器,F(xiàn)Fmpeg AAC/AC-3、Flac、LAME MP3等 音 頻 編 碼器。它支持并行、可編輯的隊(duì)列任務(wù)功能,支持同時(shí)處理多個(gè)編碼壓縮任務(wù),提高任務(wù)處理速度;支持自動(dòng)分析輸入視頻原文件,判斷其掃描方式、場序并進(jìn)行反交錯(cuò);支持為視頻流添加內(nèi)嵌字幕及視頻水??;支持抽取封裝容器中的音視頻流;支持封裝容器的轉(zhuǎn)換。
MeGUI可在其SourceForge上的開源項(xiàng)目[2]首頁處下載最新版本的發(fā)行包,下載完成后直接解壓縮即可。但是要正常運(yùn)行使用MeGUI,還可能需要配置以下運(yùn)行環(huán)境:
2.1.1 運(yùn)行環(huán)境要求
Microsoft.NET framework 2.0或包含2.0功能組件的.NET framework 3.5版本。MeGUI是依賴于.net運(yùn)行環(huán)境的應(yīng)用程序,需要.net運(yùn)行環(huán)境才能正常工作。
2.1.2 解碼器
MeGUI本身提供了X264、X265等數(shù)款視、音頻編碼器,但本機(jī)操作系統(tǒng)可能缺少對應(yīng)的解碼器。推薦選擇完美解碼或KLite Codec解碼包進(jìn)行安裝。
2.1.3 可選的外部AAC音頻編碼器
為滿足特殊需求,也可以有選擇的安裝NeroAAC或FDKAAC音頻編碼器,并在MeGUI的設(shè)置項(xiàng)中啟用這些可選的編碼器。
在運(yùn)行環(huán)境配置完成后,啟動(dòng)MeGUI文件夾中的MeGUI.exe文件即可啟動(dòng)MeGUI。其主界面如圖1。
初次運(yùn)行MeGUI時(shí),軟件會(huì)提示開啟每次啟動(dòng)時(shí)自動(dòng)檢查更新的功能,建議啟用該功能,以保證最新版本的軟件更新。啟動(dòng)完成后,利用菜單欄Tools中的Updater工具進(jìn)行MeGUI工具組件的安裝與更新,建議在使用前將所有組件安裝并更新至服務(wù)端最新版本,即Local Date與Server Date相同,Status均 為no update available。如圖2所示。
圖1 MeGUI主界面
圖2 MeGUI Updater工具
圖3 AVS Script Creator界面
為滿足本地存儲(chǔ)及視頻在線分享等不同需求,我們在使用MeGUI時(shí)可以按需選擇視音頻流的編碼器的具體配置及封裝格式,并利用MeGUI所包含的工具進(jìn)行操作。
運(yùn)行MeGUI軟件,點(diǎn)擊Tools菜單欄中的AVS Script Creator項(xiàng),打開AVS Script Creator的界面,如圖2所示。該界面的三個(gè)選項(xiàng)卡頁面分別對應(yīng)輸入/輸出、濾鏡及腳本功能頁。
在I/O頁面點(diǎn)擊Input欄中的Video Input右側(cè)的“…”按鈕選擇視頻輸入源,之后在MeGUI彈出的對話窗口中選擇File Indexer工具來創(chuàng)建索引文件。在File Indexer工具界面點(diǎn)擊Queue按鈕,開始創(chuàng)建視頻索引文件。索引創(chuàng)建完成后MeGUI將打開視頻預(yù)覽窗口,并自動(dòng)回到AVS Script Creator工具界面。
在I/O(輸入/輸出)面板上我們可以選擇在編碼時(shí)對視頻進(jìn)行Crop(裁切)、Resize(縮放)操作,在對應(yīng)項(xiàng)前方的復(fù)選框打鉤并填寫對應(yīng)數(shù)值即可。裁切中的四項(xiàng)數(shù)值分別對應(yīng)從視頻左、右、上、下起分別裁切掉的像素值??s放項(xiàng)中兩項(xiàng)數(shù)值分別對應(yīng)編碼輸出結(jié)果的橫向像素值與縱向像素值。
在Filters(濾鏡)面板上我們可以利用Deinterlacing(反交錯(cuò))功能對隔行掃描視頻進(jìn)行反交錯(cuò)操作。點(diǎn)擊Analyse按鈕分析視頻的掃描方式,得到視頻源的掃描方式及上下場優(yōu)先信息。勾選Deinterlace項(xiàng)前方的復(fù)選框并選擇Filed Deinterlace,即可設(shè)置編碼時(shí)進(jìn)行反交錯(cuò)。
在Script(腳本)面板中我們可以瀏覽自動(dòng)生成的AVS腳本,也可以對腳本進(jìn)行手動(dòng)編輯,調(diào)用其他dll擴(kuò)展濾鏡以實(shí)現(xiàn)特定功能。
(1)添加視頻內(nèi)嵌字幕,我們需要在創(chuàng)建AVS腳本時(shí)手動(dòng)編輯AVS腳本,在AVS Script Creator的Script界面添加如下腳本內(nèi)容,其中的擴(kuò)展dll及視頻源路徑需按實(shí)際修改:
LoadPlugin (“D:MeGUI oolsavisynth_pluginVSFilter.dll”)
TextSub(“D:SampleSubtitle.ass”)
腳本解釋:加載硬壓字幕擴(kuò)展,并指定字幕源文件路徑。
(2)添加視頻圖片水印,我們需要在創(chuàng)建AVS腳本時(shí)手動(dòng)編輯AVS腳本,在AVS Script Creator的Script界面對腳本進(jìn)行編輯:
LoadPlugin (“D:MeGUI oolslsmashLSMASH -Source.dll”)
LSMASHVideoSource(“D:Sample Video.mp4”)
ConvertToRGB32()
LoadPlugin(“D:CompressMeGUI oolsavspluginsImageSeq.dll”)
Img=ImageSource(“D:Watermark.png”,pixel_type=“rgb32”).LanczosResize(250,250)
Layer(Img,“add”,255,16,16)
ConvertToYV12()
腳本解釋:由于MeGUI僅能處理YUV色彩空間的視頻,在添加色彩空間為RGB模式的圖片作為水印時(shí)需要先將視頻的色彩空間轉(zhuǎn)換為RGB32模式,之后再調(diào)用圖片源擴(kuò)展,創(chuàng)建變量名為Img的圖片來源,并定義圖片的色彩空間及縮放尺寸。接著在視頻之上增加包含Img的圖層,定義其不透明度及橫縱位置。最后將視頻的色彩空間轉(zhuǎn)換回YV12交由MeGUI編碼。
腳本編輯完成后,點(diǎn)擊界面下方的Save按鈕,完成創(chuàng)建視頻處理的AVS腳本。與此同時(shí),MeGUI會(huì)自動(dòng)創(chuàng)建音頻處理的AVS腳本。
AVS腳本創(chuàng)建完成后,MeGUI在Input界面上會(huì)按AVS腳本內(nèi)容及軟件的默認(rèn)配置各項(xiàng)內(nèi)容,之后我們便可按照不同需求選擇合適的視、音頻編碼器,在MeGUI主界面上點(diǎn)選Enccoder Settings下拉欄選擇合適的編碼器。
3.2.1 儲(chǔ)存
在進(jìn)行本地存儲(chǔ)時(shí),我們一般要求在盡量保證盡量少的畫質(zhì)損失前提下減少文件占用空間?;谝陨闲枨螅覀兛梢赃x擇X265或X264視頻編碼器中的Const.Quality(恒定質(zhì)量)模式進(jìn)行視頻文件的編碼,它是一種根據(jù)實(shí)際畫面需要自動(dòng)分配碼率的編碼方式,使得視頻保持幾乎一致的目測質(zhì)量。Const.Quality模式是一次編碼,速度較快。
首先在編碼器的設(shè)置頁面中,Encoding Mode選擇Const.Quality并在右側(cè)Quality欄填寫合適的視頻質(zhì)量量化值,Quality的數(shù)值越小,畫質(zhì)越高,碼率越高。我們可以在保證視頻質(zhì)量可接受的前提下選擇較大的量化值來換取更小的存儲(chǔ)空間占用。推薦取值一般在18-26之間,通常Quality值取18時(shí)基本可以認(rèn)為視覺上是無損的。如圖4。
接下來選擇一個(gè)Preset(預(yù)設(shè)),預(yù)設(shè)作為一系列參數(shù)的集合,可以在不同的編碼質(zhì)量和壓縮效率之前取得平衡。預(yù)設(shè)按照編碼速度快慢可表示為:Ultra-Fast、SuperFast、VeryFast、Faster、Fast、Medium、Slow、Slower、VerySlow、Placebo。通 常 可以選擇Slow至VerySlow即可,Placebo預(yù)設(shè)消耗的大量編碼時(shí)間帶來的質(zhì)量提升并不明顯。
音頻部分可以選擇保留原始素材的音頻資源,待視頻部分編碼完成后利用菜單Tools-Muxer中的Adaptive Muxer工具將視頻流與音頻流重新封裝即可。
3.2.2 在線視頻分享
在進(jìn)行在線視頻分享時(shí),用來上傳的視頻往往需要受到網(wǎng)站的各種限制,以某視頻網(wǎng)站為例,其要求:
最大分辨率1920x1080的逐行掃描視頻,視頻平均碼率最高6000Kbps(H264/AVC編 碼),High-Profile 4.1,視頻峰值碼率不超過24000kbps,平均至少10秒一個(gè)關(guān)鍵幀,色彩位深8bit;音頻碼率最高320kbps(AAC編碼),聲道數(shù)小于等于2,音頻采樣率44.1Khz。
圖4 X265編碼器Const.Quality編碼模式
圖5 X264編碼器自動(dòng)二次編碼模式配置
圖6 X264編碼器幀格式及碼率控制配置
圖7 AAC音頻編碼器配置
為滿足在碼率限制內(nèi)取得最佳的視頻質(zhì)量,我們可以選擇視頻編碼器中的Automated 2Pass(自動(dòng)二次編碼)模式進(jìn)行視頻編碼。在二次編碼模式中,編碼器首先將對視頻文件進(jìn)行分析,得到視頻的復(fù)雜度統(tǒng)計(jì)信息文件,然后在二次編碼時(shí)利用該信息在碼率限制下盡可能的合理分配碼率,從而獲得基本平穩(wěn)的全片視頻質(zhì)量。
首先,在X264編碼器配置界面鉤選Show Advanced Settings復(fù)選框,顯示高級設(shè)置。按照編碼參數(shù)限制,Encoding編碼模式選用Automated 2Pass模式,Bitrate平均碼率填寫6000,AVC Profile選 擇High Profile,AVC Level選擇4.1。編碼預(yù)設(shè)選擇Very Slow。如圖5。
其次,在Frame-Type選項(xiàng)卡的GOP Size項(xiàng)中,GOP的值應(yīng)為10*FPS。以上傳30FPS視頻為例,將Maximum GOP Size的值設(shè)置為300。在Rate Control選項(xiàng)卡中,將VBV Buffer Size及VBV Maximum Bitrate的值設(shè)為24000。至此視頻編碼器配置完畢。如圖6。
圖8自動(dòng)編碼配置
在MeGUI主界面的Audio Encoding項(xiàng)中選擇FFmpeg AAC或其他AAC音頻編碼器,點(diǎn)擊右側(cè)Config打開音頻編碼器界面。Output Channels選擇Downmix multichannel to Stereo,Sample Rate選 擇Change to 44100 Hz,根據(jù)不同AAC編碼器配置區(qū)別,選擇CBR編碼模式,滑動(dòng)滑塊將音頻碼率調(diào)整到320kbps。至此音頻編碼器配置完畢。如圖7。
編碼器分別配置完成后,回到MeGUI主界面,點(diǎn)擊下方的AutoEncode按鈕,打開自動(dòng)編碼界 面,Container選 擇MP4,Splitting選 擇No Splitting,Size and Bitrate選 擇No Target Size,點(diǎn)擊Queue將編碼任務(wù)加入序列進(jìn)行編碼。如圖8。待編碼任務(wù)完成后,用于上傳分享的視頻文件便編碼、封裝完成了。
利用MeGUI提供的豐富工具,我們可以輕松完成數(shù)字視頻的編碼壓制,滿足不同的編碼需求,有效提高工作效率。