亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        MPEG-2音視頻編輯軟件的實現(xiàn)方案

        2009-08-13 06:18:04陳志峰田裕鵬王珊珊
        現(xiàn)代電子技術(shù) 2009年10期
        關(guān)鍵詞:信息

        陳志峰 田裕鵬 王珊珊

        摘 要:MPEG-2文件標(biāo)準(zhǔn)出現(xiàn)得比較早,MPEG-2作為DVD標(biāo)準(zhǔn),現(xiàn)存的許多視頻資源中就保留了很多這種格式的文件。如何對現(xiàn)有資源文件進(jìn)行整理再編輯,成為一個現(xiàn)實應(yīng)用中常見的問題。在此提出兩種針對MPEG-2文件的剪輯方案,分別基于MPEG-2格式標(biāo)準(zhǔn)字節(jié)流分析和DirectShow的DES技術(shù)兩方面說明了視頻文件的編輯方法,并從上述兩方面著手,既指出了各自的實現(xiàn)細(xì)節(jié),又將這兩種方法進(jìn)行比較,分析它們各自的優(yōu)缺點,最后指出DirectShow技術(shù)在音視頻編輯應(yīng)用方面有它獨到的優(yōu)勢。綜合當(dāng)前主流的音視頻編輯軟件實現(xiàn)方案,為音視頻編輯應(yīng)用指出實踐的方法。

        關(guān)鍵詞:MPEG-2;視頻編輯;Directshow;DES;時間線

        中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A

        文章編號:1004-373X(2009)10-100-04

        Implementation of MPEG-2 Audio and Video Edit Software

        CHEN Zhifeng,TIAN Yupeng,WANG Shanshan

        (College of Information Science and Technology,Nanjing University of Aeronautics and Astronautics,Nanjing,210016,China)

        Abstract:MPEG-2 format appears much more earlier.MPEG-2 is used as DVD standard and many media files use this format.How to edit these resources becomes a common problem.This article lists two ways to edit MPEG-2 format files:one is based on analyzing MPEG-2 file format through packet stream,and the other is based on directshow′s DES technology.This article first points out some details of each way,and then compares them,points out each characteristic,at last conclude that directshow technology has unique advantage.This article combines common ways of implementation of audio and video edit software,and shows a practice way to it.

        Keywords:MPEG-2;video edit;Directshow;DES;timeline

        MPEG是運動圖像專家組(Moving Picture Experts Group)的簡稱,其任務(wù)是制定世界通用的視音頻編碼標(biāo)準(zhǔn)。MPEG組織于1994年推出MPEG-2壓縮標(biāo)準(zhǔn),用以實現(xiàn)視/音頻服務(wù)與應(yīng)用互操作的可能性。MPEG-2標(biāo)準(zhǔn)是針對標(biāo)準(zhǔn)數(shù)字電視和高清晰度電視在各種應(yīng)用下的壓縮方案和系統(tǒng)層的詳細(xì)規(guī)定,標(biāo)準(zhǔn)的正式規(guī)范定義在ISO/IEC13818中。MPEG-2特別適用于廣播級數(shù)字電視的編碼和傳送,被認(rèn)定為SDTV和HDTV的編碼標(biāo)準(zhǔn)。

        MPEG-2圖像壓縮的原理是利用圖像中的兩種特性:空間相關(guān)性和時間相關(guān)性。這兩種相關(guān)性使得圖像中存在大量的冗余信息。通過去除冗余信息,只保留少量非相關(guān)信息進(jìn)行傳輸,可以大大節(jié)省傳輸頻帶,而接收方利用這些非相關(guān)信息,按照一定解碼算法,可以在保證一定的圖像質(zhì)量的前提下重建原始圖像。

        1 MPEG-2編碼方法

        MPEG-2視頻流可分為視頻序列層、圖像組層、圖像層、宏塊條層、宏塊層和像塊層共6個層次。各層之間的作用與關(guān)系如下:

        (1) 視頻序列層(Sequence):一系列圖像組構(gòu)成一個視頻序列。包含圖像尺寸、寬高比、圖像速率等信息。

        (2) 圖像組層(GOP):由相互關(guān)聯(lián)的一組I,B,P幀組成,I幀為第一幀。GOP頭包括時間信息。

        (3) 圖像層(Picture):一系列像條可以構(gòu)成一幅圖像,圖像分為I,B,P三類,包括圖像編碼類型和時間參考信息。

        (4) 宏塊條層(Slice):一連串的宏塊構(gòu)成一個宏塊條,包括一定數(shù)量的宏塊,其順序與掃描順序一致。

        (5) 宏塊層(MacroBlock):在4∶2∶2取樣中,一個宏塊由4個亮度像塊,2個Cr像塊和2個Cb像塊構(gòu)成;另外還有4∶2∶0,4∶4∶4的取樣方式。MPEG-2定義3種宏塊結(jié)構(gòu),代表構(gòu)成一個宏塊的亮點像塊和色差像塊的數(shù)量關(guān)系。

        (6) 像塊層(Block):由8×8個像素點構(gòu)成的DCT變化基本單元。

        MPEG-2的編碼圖像被分為三類,分別稱為I幀,P幀和B幀。I幀圖像采用幀內(nèi)編碼方式,只利用單幀圖像內(nèi)的空間相關(guān)性,而沒有利用連續(xù)幀之間的時間相關(guān)性。P幀和B幀圖像采用幀間編碼方式,同時利用了空間和時間上的相關(guān)性。P幀圖像只采用前向時間預(yù)測,可以提高壓縮效率和圖像質(zhì)量。P幀圖像中可以包含幀內(nèi)編碼的部分,即P幀中的每一個宏塊可以是前向預(yù)測,也可以是幀內(nèi)編碼。B幀圖像采用雙向時間預(yù)測,可以大大提高壓縮倍數(shù)。

        2 基于MPEG-2視頻流的剪輯方案

        2.1 MPEG-2視頻流的構(gòu)成

        MPEG-2視頻流分為程序流和傳輸流兩種編碼方式。通常用于存儲的視頻文件都是由程序流構(gòu)成的。程序流由組首部、系統(tǒng)首部和PES分組構(gòu)成,程序流的構(gòu)成如圖1所示。

        組以一個32位(0x00-00-01-BA)碼字開始。組首部包含系統(tǒng)參考時的(SCR)數(shù)據(jù),表明了程序流中最后一個解碼單元到達(dá)解碼器的預(yù)定時間。系統(tǒng)首部僅存在于第一個圖像組中。PES分組由分組首部與分組數(shù)據(jù)組成。分組的頭部包含有分組長度、時間戳PTS,DTS等關(guān)鍵信息。

        2.2 剪切點的選擇

        一個視頻序列由一個或多個圖像組連接而成。一個圖像組內(nèi)的編碼序列可能是 I1 B2 B3 P4 B5 B6 P7 B8 B9 I10,而輸出的解碼序列是I1 P4 B2 B3 P7 B5 B6 I10 B8 B9。因此,若當(dāng)前選取的剪切點在一個圖像組內(nèi)部,則牽涉到源視頻序列的解碼再編碼過程。一個簡便的方法是將剪切點的起始位置移至一個圖像組的起始處,也就是尋找一個I幀作為程序的切入點。因此一對起終點的選擇方法如下:

        (1) 從當(dāng)前文件之處讀取4個字節(jié),與圖組頭關(guān)鍵字group_start_code(0x00-00-01-b3)或序列頭關(guān)鍵字(0x00-00-01-ba)進(jìn)行比較,若相同,則記為合適的剪切點。

        (2) 若不相同且當(dāng)前點為剪切的起點,則從文件中向上讀取一個字節(jié),重復(fù)(1)的過程,直到找到一個合適的切入點。

        (3) 若不相同且當(dāng)前點為剪切的終點,則從文件中向下讀取一個字節(jié),重復(fù)(1)的過程,直到找到一個合適的切入點。

        經(jīng)過如上的過程,就能夠找到一系列的起終點,使得在每一對起終點的區(qū)間內(nèi)包含完整的圖像信息,可以獨立地從現(xiàn)有幀序列中得到所有的視頻信息。避免了因幀之間存在依賴關(guān)系,導(dǎo)致圖像不能正確解碼而生成的馬賽克與拖幀現(xiàn)象。

        2.3 時間戳的修正

        得到圖像的信息后,由于已經(jīng)將不需要的圖像信息丟棄,剪輯下來的圖像信息已經(jīng)不能用原有的時間標(biāo)記回放,所以要修正保留下來的圖像的時間戳。

        PTS,DTS,SCR被用于解碼器中的同步操作。其中PTS(Presentation Timestamp)是一個33位的字節(jié)流。表明此分組中第一個訪問單元在系統(tǒng)目標(biāo)解碼器中的預(yù)定顯示時間;DTS(Decoding Time Stamp)也是一個33位的字節(jié)流,表示在分組中開始的第一個訪問單元預(yù)計在系統(tǒng)目標(biāo)解碼器中的解碼時間;SCR(System Clock Reference)也是一個33位的字節(jié)流,表示系統(tǒng)目標(biāo)解碼器SCR域最后字節(jié)到達(dá)所需要的時間,編碼器用數(shù)據(jù)碼率和90 kHz的時鐘頻率把SCR字節(jié)域轉(zhuǎn)換為SCR值。

        將剪切前視頻流首部的時間標(biāo)志(SCR0,PTS0,DTS0)提取出來,替換剪切后第一段文件相對應(yīng)的數(shù)據(jù),依次修改該段文件中的所有SCR,PTS,DTS,并記下最后一組SCR1,PTS1,DTS1,將它們與SCR0,PTS0,DTS0對應(yīng)相加,作為剪切后第二段文件的起始SCR,PTS,DTS。重復(fù)此過程,直到修改完所有的時間戳標(biāo)記位。

        最后,先將源文件的第一個分組中的系統(tǒng)首部等相關(guān)信息提取出來,拼接到剪切后的文件頭部,再給剪切后的文件尾加上結(jié)束碼字(0x00-00-01-b9)。

        經(jīng)過以上的過程,一段MPEG-2文件的剪切過程完成。

        3 基于DirectShow技術(shù)的剪輯方案

        3.1 DirectShow簡介

        DirectX軟件開發(fā)包是微軟公司提供的在Windows操作平臺上開發(fā)高性能圖形、聲音、輸入、輸出和網(wǎng)絡(luò)游戲的一套編程接口。DirectX被定義為“硬件設(shè)備無關(guān)性”,可以用與設(shè)備無關(guān)的方法提供設(shè)備相關(guān)的高性能。

        DirectShow是DirectX中的一套組件,用來處理各種格式媒體文件的回放、音視頻采集等多媒體應(yīng)用。DirectShow的設(shè)計初衷是盡量要讓應(yīng)用程序開發(fā)人員從復(fù)雜的數(shù)據(jù)傳輸、硬件差異、同步性等工作中解脫出來,總體應(yīng)用框架和底層工作由DirectShow來完成。DirectShow的構(gòu)成如圖2所示。

        3.2 非線性編輯DES

        DES(DirectShow Editing Services)是一套基于DirectShow核心框架的編程接口,它的出現(xiàn)簡化了視頻編輯任務(wù)。DES的系統(tǒng)結(jié)構(gòu)如圖3所示。

        基于時間線的模型如圖4所示。

        3.3 實現(xiàn)方法

        運用DirectShow的DES方法,實現(xiàn)方案如下:

        (1) 首先選定待剪切文件上的起點與終點。以時間為標(biāo)記,記為startpoint,endpoint。

        (2) 為目標(biāo)文件生成一個時間線對象(TimeLine):

        IAMTimeline*pTL=NULL;

        CoCreatelnstance(CLSID_IAMTimeline,NULL,CLSCTX_INPROC_SERVER,IID_IAMTimeline,(void* *)&pTL;);

        接下來要將時間線上的視頻組和音頻組的信息填寫完整。

        (3) 為時間線對像生成一個組,以視頻組為例,首先生成一個視頻組(video group):

        IAMTimelineGroup *pVideoGroup=NULL;

        IAMTimelineObj *pVideoGroupObj=NULL;

        pTL->CreateEmptyNode(&pVideoGroupObj;,TIMELINE_MAJOR_TYPE_GROUP);

        pGroupObj->Querylnterface(IID_IAMTimelineGroup,(void **)&pVideoGroup;);

        組是由軌道組成的,所以接下來要為視頻組添加軌道(Track):

        pVideoComp->VTracklnsBefore(pVideoTrackObj,-1);

        pVideoTrackObj->Querylnterface(IID_IAMTimelineTrack,(void **)&pVideoTrack;)

        (4) 為軌道添加視頻時間點和文件信息:

        首先,設(shè)置時間線上的時間,這個時間是源文件中的時間點在剪切后的文件中出現(xiàn)的時間:

        pVideoSrcObj->SetStartStop(startpoint1,endpoint1);

        接下來要設(shè)置源媒體的時間,這個時間就是想得到的源媒體文件中的視頻信息出現(xiàn)的時間:

        pVideoSrcObj->SetMediaTimes(startpoint.endpoint);

        還要設(shè)置源媒體文件的名字:

        pVideoSrcObj->SetMediaName(源媒體文件名)

        將信息加入的軌道中:

        pVideoTrack->SrcAdd(pVideoSrcObj);

        (5) 把時間線對象放入DirectShow回放控制引擎中:

        IRenderEngine *pRenderEngine = NULL;

        CoCreatelnstance(CLSID_RenderEngine,NULL,CLSCTX_INPROC_SERVER,IID_IRenderEngine,(void**)&pRenderEngine;);

        pRender->SetTimelineObject(pTL);

        pRenderEngine->ConnectFrontEnd( );

        (6) 為時間線對象指定輸出信息的壓縮方法。DirectShow默認(rèn)只支持AVI格式的輸出,因此,要指定一個自己定義的輸出格式,這里選擇一個MPEG-2的壓縮器:

        IGraphBuilder *pGraph=NULL;

        IMediaControl *pControl=NULL;

        pRender->GetFilterGraph(&pGraph;);

        AddFilterByCLSID(pGraph,LSID_VIDEO_ENCODER,L"MPE-2",&pVideoEncoder;);

        long NumGroups;

        pTL->GetGroupCount(&NumGroups;);

        IPin *pPin;

        for (i=0;i

        if (pRenderEngine->GetGroupOutputPin(i,&pPin;)==S_OK){

        ConnectFilters(pGraph,pPin,pVideoEncoder,

        TRUE);

        }

        }

        (7) 為時間線對象指定輸出文件:

        AddFilterByCLSID(pGraph,LSID_VIDEO_WRITER,Writer' ',&pfilewriter;);

        ConnectFilters(pGraph,pVideoEncoder,pMux,TRUE);

        ConnectFilters(pGraph,pMux,pfilewriter,TRUE);

        IFileSinkFilter *pSin= 0;

        pfilewriter->QueryInterface(IID_IFileSinkFilter,(void**)&pSink;);

        pSink->SetFileName(剪切后的文件名,NULL);

        (8) 啟動回放功能:

        pGraph->QueryInterface(IID_IMediaControl,(void **)&pControl;);

        pControl->Run();

        回放時,DirectShow會把輸出的數(shù)據(jù)以MPEG-2的形式輸出到指定的文件中去。

        最后,當(dāng)時間線對象的數(shù)據(jù)流回放完畢后,所生成的就是剪輯完畢的文件了。

        4 結(jié) 語

        通過對比上述兩種實現(xiàn)方案,可以得出如下結(jié)論:

        (1) 基于解析MPEG-2文件視頻文件的剪輯方案需要對MPEG-2格式內(nèi)容進(jìn)行深入的了解,程序的設(shè)計與實現(xiàn)的復(fù)雜度很高,而通過DirectShow技術(shù)則大大簡化了這種復(fù)雜性。

        (2) DirectShow本身的開放性框架使得它可以處理更多更復(fù)雜的媒體內(nèi)容,通過給它接上不同的目標(biāo)輸出控制單元,可以處理更多格式類型媒體文件。

        (3) 通過DirectShow框架,設(shè)計人員可以從繁雜的背景知識的學(xué)習(xí)中解脫出來,從而更加專注于視頻的應(yīng)用處理中,這無疑使它更容易為應(yīng)用人員所掌握。

        參考文獻(xiàn)

        [1]陸其明.DirectShow開發(fā)指南[M].北京:清華大學(xué)出版社,2003.

        [2]Microsoft Corporation.DirectX 9.0 Programmerps Reference[CP/DK].2002.

        [3]余兆明.MPEG標(biāo)準(zhǔn)及其應(yīng)用[M].北京:北京郵電大學(xué)出版社,2002.

        [4]陸其明.DirectShow 實務(wù)精選[M].北京:科學(xué)出版社,2004.

        [5]張勇,羅靜.基于DirectShow的多媒體文件音視頻的重新壓縮[J].現(xiàn)代電視技術(shù),2005(5):87-91.

        [6]楊欣穎.非線性視頻編輯技術(shù)在多媒體課件制作中的處理與應(yīng)用[J].文教資料,2006(21):183-184.

        [7]胡春華,曹元大,張磊.基于DirectShow的視頻流媒體存儲系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2003(11):31-33.

        [8]胡海峰,陳喜,張文淵,等.DirectShow非線性音頻-視頻編輯應(yīng)用的實現(xiàn)[J].微計算機應(yīng)用,2004,25(1):58-63.

        [9]徐燃,潘接林.DirectShow技術(shù)在音頻格式轉(zhuǎn)換及音視頻分離方面的應(yīng)用[J].計算機應(yīng)用,2005(Z1):269-272.

        [10]豐偉偉.DirectShow播放視頻和MP3[J].電腦編程技巧與維護(hù),2006(12):15-17.

        猜你喜歡
        信息
        訂閱信息
        中華手工(2017年2期)2017-06-06 23:00:31
        展會信息
        中外會展(2014年4期)2014-11-27 07:46:46
        信息超市
        展會信息
        展會信息
        展會信息
        展會信息
        展會信息
        信息
        健康信息
        祝您健康(1987年3期)1987-12-30 09:52:32
        97se在线观看| 国产高清a| 思思99热| 国产精品人成在线观看| 日本女同av在线播放| 91国产精品自拍在线观看| 欲求不満の人妻松下纱荣子| 无码中文字幕日韩专区视频| 亚洲视频1区| 亚洲天堂色婷婷一区二区| 人妻少妇精品视频专区vr| 99在线精品免费视频| 中文字幕无线码| 狠干狠爱无码区| 日韩女优中文字幕在线| 亚洲中文字幕综合网站| 亚洲 日韩 激情 无码 中出| 国产丶欧美丶日本不卡视频| 日本边添边摸边做边爱的网站| 国产男女插插一级| 国产激情视频在线观看首页| 久久精品国产亚洲av无码偷窥| 中文乱码字慕人妻熟女人妻| 狠狠色噜噜狠狠狠狠888奇禾| 无码成人片一区二区三区| 中文无码制服丝袜人妻AV| 国产精品国产三级国a| h视频在线播放观看视频| 人人鲁人人莫人人爱精品| 无码人妻精品丰满熟妇区| 欧美高大丰满freesex| 99JK无码免费| 国产中文字幕一区二区视频| 中文字幕亚洲欧美在线不卡| 激情偷乱人伦小说视频在线| 国产精品天天看大片特色视频| 国产在线视频一区二区三区不卡| 青青草精品在线视频观看| 国产乱子伦农村叉叉叉| 初高中生精品福利视频| 亚洲综合国产成人丁香五月小说|