多媒體實(shí)驗(yàn)指導(dǎo)書_第1頁
多媒體實(shí)驗(yàn)指導(dǎo)書_第2頁
多媒體實(shí)驗(yàn)指導(dǎo)書_第3頁
多媒體實(shí)驗(yàn)指導(dǎo)書_第4頁
多媒體實(shí)驗(yàn)指導(dǎo)書_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

PAGE27PAGE29《多媒體技術(shù)》實(shí)驗(yàn)指導(dǎo)書編寫王雅琳、王曉麗、曹躍中南大學(xué)信息科學(xué)與工程學(xué)院2015年4月目錄TOC\o"1-1"\h\z\u實(shí)驗(yàn)一圖像采集與編輯實(shí)驗(yàn)(2學(xué)時(shí)) 1實(shí)驗(yàn)二音頻信號(hào)的獲取與處理(2學(xué)時(shí)) 4實(shí)驗(yàn)三波形音頻播放器(2學(xué)時(shí)) 6實(shí)驗(yàn)四數(shù)字視頻播放器(4學(xué)時(shí)) 17實(shí)驗(yàn)五視頻編輯實(shí)驗(yàn)(2學(xué)時(shí)) 23實(shí)驗(yàn)六綜合實(shí)驗(yàn)(8學(xué)時(shí)) 27實(shí)驗(yàn)一圖像采集與編輯實(shí)驗(yàn)(2學(xué)時(shí))實(shí)驗(yàn)?zāi)康牧私鈹?shù)碼相機(jī)基本使用。熟悉PHOTOSHOP在圖像處理上的用途。掌握PHOTOSHOP一些基本的圖像操作。實(shí)驗(yàn)預(yù)備知識(shí)ADOBEPHOTOSHOP是Thomas和JohnKnoll倆兄弟設(shè)計(jì)制作,而后與Adobe公司合作,于1989年推行的一個(gè)集傳統(tǒng)的暗房技術(shù)和印前處理功能于一體的綜合圖像處理軟件,它將設(shè)計(jì)師和使用者集于一體,給圖形設(shè)計(jì)界增添了巨大的活力。在學(xué)習(xí)實(shí)驗(yàn)之前需要了解相關(guān)概念:分辨率就是單位(英寸)長度所含像素的多少,單位為dpi。分辨率可分為圖像分辨率、輸出分辨率、掃描分辨率等,分辨率是決定圖像輸入、輸出質(zhì)量高低的關(guān)鍵。位圖即點(diǎn)陣圖是由許多小方格的不同色塊組成的圖像,其中每一個(gè)小方格被稱為像素。Photoshop是一個(gè)位圖處理軟件,它可以真實(shí)的再現(xiàn)色彩豐富的世界。由于位圖文件在存儲(chǔ)時(shí)必須記錄其組成畫面中每一個(gè)像素的位置、色彩等數(shù)據(jù),因此它的文件信息量大,分辨率越高,信息量越大;位圖模式又叫黑白模式,它只能用黑色和白色表示圖像。由于位圖模式無法將色調(diào)復(fù)雜的圖像完整的表現(xiàn)出來,因此,不宜用它來表現(xiàn)色調(diào)復(fù)雜的圖像,但可以用此模式來處理黑白線稿或處理特殊的兩色調(diào)高反差圖像。在一個(gè)數(shù)字化圖像中,圖像的尺寸、分辨率和文件的大小這三項(xiàng)之間是相互聯(lián)系的。當(dāng)用戶決定了其中任意亮相,便可決定第三項(xiàng)的參數(shù):文件的大小=圖像的分辨率×圖像尺寸。在Photoshop中不能將彩色圖像直接轉(zhuǎn)化為位圖模式,必須先將此彩色圖像轉(zhuǎn)化為灰度模式,再轉(zhuǎn)化為位圖模式,轉(zhuǎn)化后有幾種不同的顯示模式:50%閥值、圖案仿色、擴(kuò)散仿色和半調(diào)網(wǎng)屏。實(shí)驗(yàn)內(nèi)容及要求通過學(xué)習(xí)PHOTOSHOP的基本操作,制作以下三種圖像編輯效果圖。1.海市蜃樓效果制作要求:用數(shù)碼照自己的照片,采用圖形合并等技術(shù),將自己的照片移植至提供的風(fēng)景圖片中,制造出海市蜃樓效果。預(yù)覽成品:2.換臉技術(shù)制作要求:選擇一張明星照片,將自己用數(shù)碼照的照片中的臉換明星的臉,得到你的臉和明星的身材的新明星組合體。預(yù)覽成品:3.特殊字體制作要求:將自己的名字、班級(jí)、學(xué)號(hào)等信息制作成如下字體中的任兩種:發(fā)光字,火焰字,霓虹字,立體字。發(fā)光字效果:立體字效果圖:燃燒字效果圖:霓虹字效果圖:實(shí)驗(yàn)驗(yàn)收要求1.將自己的照片作海市蜃樓和換臉處理,并保存圖片,寫入實(shí)驗(yàn)報(bào)告中;2.任選兩種特殊字體制作,要求含有個(gè)人信息,保存圖片,并寫入報(bào)告中。

實(shí)驗(yàn)二音頻信號(hào)的獲取與處理(2學(xué)時(shí))實(shí)驗(yàn)?zāi)康氖煜ざ嗝襟w素材聲音的采集和制作;了解多媒體聲音的基本構(gòu)成要素;練習(xí)使用多媒體聲音的錄制、編輯和合成軟件。實(shí)驗(yàn)設(shè)備安裝有CoolEditPro軟件和windows操作系統(tǒng)的微機(jī)系統(tǒng);麥克風(fēng)和耳機(jī)。實(shí)驗(yàn)內(nèi)容及步驟通過錄音機(jī)將本人聲音錄入,并用CoolEdit軟件處理聲音;去除聲音文件的噪聲;聲音文件添加混響效果;進(jìn)行淡入淡出處理;合成聲音文件。步驟:打開錄音機(jī),通過麥克風(fēng)錄制一段語音信號(hào)作為自我介紹(要求必須含有本人學(xué)號(hào),姓名,其他內(nèi)容可任意,時(shí)長10秒左右),并保存為“學(xué)號(hào)_姓名”。用CoolEdit軟件加載錄音機(jī)的聲音,并且將背景音樂“背景音樂-輕柔.MP3”也加載于其中,試聽兩個(gè)文件共同播放的效果,并且調(diào)整二者音量大小,使共同播放時(shí)二者均能聽清,具體做法:右鍵點(diǎn)擊調(diào)整音頻塊音量;對他降噪,去除其中的雜音,具體做法:進(jìn)入單軌模式,選擇部分聲音波形,再選擇效果-噪音消除-降噪器,將降噪級(jí)別調(diào)節(jié)至70,保存采樣,再全選波形,打開降噪器,加載已保存的采樣,級(jí)別調(diào)整至70,點(diǎn)確定即可完成。選擇所給出的原始錄音文件,將其與本人所錄的音樂按字剪輯,組合成一個(gè)新的音頻文件,并做降噪等處理,保存成一個(gè)新的文件。音塊的剪輯主要利用“編輯-混縮到空音軌-選擇波形”。添加一些音效,如混響效果(win7不兼容),具體做法:“單軌模式-效果”。對背景音樂進(jìn)行淡入淡出處理。生成的聲音合成,輸出一個(gè)合成文件,保留最后結(jié)果文件(以本人學(xué)號(hào)姓名保存)。小技巧:點(diǎn)擊鼠標(biāo)右鍵可以拖動(dòng)音塊;思考題1.?dāng)?shù)字音頻通常使用的采樣率為多少?2.請舉出三種多媒體音頻技術(shù)中常用的存儲(chǔ)聲音信息的文件格式?3.怎樣使用CoolEdit進(jìn)行混音處理?4.使用CoolEdit混音處理后的聲音文件如果出現(xiàn)背景音樂過大或過小的問題,如何解決此問題?實(shí)驗(yàn)驗(yàn)收要求回答思考題,寫入實(shí)驗(yàn)報(bào)告中;將做好處理的音頻文件保存,當(dāng)場驗(yàn)收音頻制作效果。

實(shí)驗(yàn)三波形音頻播放器(2學(xué)時(shí))實(shí)驗(yàn)?zāi)康牧私釽ave文件格式,并學(xué)習(xí)Windows下用MCI函數(shù)播放Wave文件。熟悉多媒體開發(fā)工具——VisualC++。制作波形音頻播放器。其運(yùn)行界面如下圖所示:要求:此播放器具有打開、播放、錄制及保存波形音頻文件的功能。實(shí)驗(yàn)預(yù)備知識(shí)VC6編程方法,MCI編程方法。Wave文件的結(jié)構(gòu)用.wav為擴(kuò)展名的文件格式稱為波形文件格式(WAVEFileFormat),它是一種資源交換文件格式(ResourceInterchangeFileFormat,RIFF),RIFF格式是面向部分(chunk)的,一個(gè)RIFF文件是由一個(gè)或多個(gè)部分組成的,其中每一個(gè)部分都指向下一個(gè)部分。下圖是一個(gè)RIFF文件結(jié)構(gòu)的示意:波形文件格式支持存儲(chǔ)各種采樣頻率和樣本精度的聲音數(shù)據(jù),并支持聲音數(shù)據(jù)的壓縮。一個(gè)WAVE文件至少包含三個(gè)塊RIFF塊是其中最大的,整個(gè)WAVE文件就是一個(gè)RIFF塊。CKsize緊跟在“RIFF”CKID之后出現(xiàn),它包含一個(gè)值,等于文件的大小減去8個(gè)字節(jié),這8個(gè)字節(jié)用來存儲(chǔ)RIFF的CKID和CKSIZE。第二和第三塊稱為子塊,包含在RIFF塊之中。這些塊的第一個(gè)塊是“fmt”塊,包含PCMWAVEFORMAT結(jié)構(gòu)所需要的信息;第二個(gè)塊“data”塊緊跟在“fmt”之后,包含所有的數(shù)據(jù)波形。RIFF的CKSIZE等于“fmt”塊和“data”塊所占用的字節(jié)之和。為了讀寫RIFF文件,用戶使用為多媒體塊信息準(zhǔn)備的叫MMCKINFO的標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu)。在VC中這個(gè)結(jié)構(gòu)定義為:typedefsruct{FOURCCckid;DWORDcksize;FOURCCfccType;DWORDdwDataOffset;DWORDdwFlags;}MMCKINFO;設(shè)計(jì)多媒體程序,關(guān)鍵是對多種多媒體設(shè)備的控制和使用,在Windows操作系統(tǒng)中,對多媒體設(shè)備進(jìn)行控制主要有三種方法:第一種方法是使用微軟公司窗口系統(tǒng)中對多媒體支持的MCI,即媒體控制接口,MCI是多媒體設(shè)備和多媒體應(yīng)用軟件之間進(jìn)行設(shè)備無關(guān)的溝通的橋梁。在VB和VC中MCI都得到了很好的支持;第二種方法,通過調(diào)用Windows的API(應(yīng)用程序接口)多媒體相關(guān)函數(shù)實(shí)現(xiàn)媒體控制;第三種方法是使用OLE(ObjectLinking&Embedding),即對象嵌入和鏈接技術(shù),它為不同數(shù)據(jù)之間共享數(shù)據(jù)和資源提供了有利的手段。實(shí)驗(yàn)內(nèi)容及要求用VC建立應(yīng)用程序框架:菜單,點(diǎn)擊新建,在彈出的對話框中選中MFCAppWizard(exe)后,選好你文件所需存儲(chǔ)的目錄,然后在工程中填入工程文件名,如下圖所示:點(diǎn)擊確定按鈕在彈出的對話框中,按下圖進(jìn)行設(shè)置后,點(diǎn)擊“完成”。編制應(yīng)用程序界面:各控件的屬性如下表所示:控件ID標(biāo)題控件ID標(biāo)題GroupBoxIDC_STATIC波形音頻信息StaticIDC_RESOLUTIONStaticIDC_STATIC波形文件:StaticIDC_WAVE_LENGTHStaticIDC_STATIC聲道:ButtonIDC_OPEN打開StaticIDC_STATIC采樣率:ButtonIDC_PLAY播放StaticIDC_STATIC音頻長度:ButtonIDC_RECORD錄制StaticIDC_WAVE_NAMEButtonIDC_SAVE保存StaticIDC_CHANNELButtonIDC_STOP停止StaticIDC_SAMPLE_RATEPictureIDC_WAVE_GRAPH點(diǎn)擊查看建立類向?qū)?,在MessageMaps中建立相應(yīng)的消息函數(shù)OnOpen(),OnPlay(),OnRecord(),OnSave(),OnStop(),點(diǎn)擊確定。建立處理波形音頻的類CWaveAudio:工程添加工程ComponentsandControls,選中WaveAudio.ogx文件插入,可重用類CWaveAudio便添加到工程中。在CWavePlayerDlg類的頭文件中將CWaveAudio的頭文件包含進(jìn)來。加入所需的功能:在CWavePlayerDlg類中加入以下成員變量CStringpath;//文件目錄 CWaveAudiom_Wave;//可重用類的對象 intINFO_WAVEWIDE;//繪圖框的寬度 intINFO_WAVEDEEP;//繪圖框的高度 boolm_bOpen;//判斷是否有波形音頻文件打開右鍵點(diǎn)擊Class中的CWavePlayerDlg,選中AddNumberFunction,如下所示,將繪圖函數(shù)voidDrawWave(HDChdc,unsignedintx,unsignedinty,char*path)加到CWavePlayerDlg中。在BOOLCWavePlayerDlg::OnInitDialog()中進(jìn)行初始化:CWnd*m_pWnd; m_pWnd=GetDlgItem(IDC_PLAY); m_pWnd->EnableWindow(false); m_pWnd=GetDlgItem(IDC_SAVE); m_pWnd->EnableWindow(false);在OnOpen(),OnPlay(),OnRecord(),OnSave(),OnStop()中添加代碼如下:voidCWavePlayerDlg::OnOpen(){ //TODO:Addyourcontrolnotificationhandlercodehere CStringFilter,str; Filter="波形音頻文件(*.WAV)|*.WAV||"; CFileDialogFileDlg(true,NULL,NULL,OFN_HIDEREADONLY,Filter); if(FileDlg.DoModal()==IDOK) { if(!m_Wave.Load(FileDlg.GetFileName())) { MessageBox("不能打開文件!","錯(cuò)誤",MB_OK|MB_ICONSTOP); } CWnd*m_pWnd; m_pWnd=GetDlgItem(IDC_PLAY); m_pWnd->EnableWindow(true); } path=FileDlg.GetPathName(); SetDlgItemText(IDC_WAVE_NAME,FileDlg.GetFileName()); str.Format("%5.3f",m_Wave.GetSampleRate()/1000.); str+=_T("kHZ"); SetDlgItemText(IDC_SAMPLE_RATE,str); str.Empty(); switch(m_Wave.GetChannel()) { case1: str="單聲道"; break; case2: str="立體聲"; break; } SetDlgItemText(IDC_CHANNEL,str); str.Empty(); str.Format("%d",m_Wave.GetResolution()); str+="位"; SetDlgItemText(IDC_RESOLUTION,str); str.Empty(); str.Format("%2.2u:%02.2f:%02.2u",m_Wave.GetWaveLength()/1000/60, m_Wave.GetWaveLength()/1000.,m_Wave.GetWaveLength()/1000/3600); SetDlgItemText(IDC_WAVE_LENGTH,str); m_bOpen=true;}voidCWavePlayerDlg::OnPlay(){ //TODO:Addyourcontrolnotificationhandlercodehere m_Wave.Play(); }voidCWavePlayerDlg::OnRecord(){ //TODO:Addyourcontrolnotificationhandlercodehere CWnd*m_pWnd; m_pWnd=GetDlgItem(IDC_PLAY); m_pWnd->EnableWindow(false); m_pWnd=GetDlgItem(IDC_OPEN); m_pWnd->EnableWindow(false); m_pWnd=GetDlgItem(IDC_SAVE); m_pWnd->EnableWindow(false); m_Wave.Record();}voidCWavePlayerDlg::OnSave(){ //TODO:Addyourcontrolnotificationhandlercodehere CStringFilter; Filter="WaveFile(*.WAV)|*.WAV||"; CFileDialogFileDlg(false,NULL,NULL,OFN_OVERWRITEPROMPT,Filter); FileDlg.m_ofn.lpstrDefExt="wav"; if(FileDlg.DoModal()==IDOK) m_Wave.Save(FileDlg.GetPathName());}voidCWavePlayerDlg::OnStop(){ //TODO:Addyourcontrolnotificationhandlercodehere CWnd*m_pWnd; m_pWnd=GetDlgItem(IDC_PLAY); m_pWnd->EnableWindow(true); m_pWnd=GetDlgItem(IDC_OPEN); m_pWnd->EnableWindow(true); m_pWnd=GetDlgItem(IDC_SAVE); m_pWnd->EnableWindow(true); m_Wave.Stop();}現(xiàn)在可以編譯運(yùn)行一下,可以發(fā)現(xiàn)你已經(jīng)實(shí)現(xiàn)了絕大多數(shù)的功能?,F(xiàn)在,我們將繪圖功能添加進(jìn)去,由于對話框的變動(dòng)都會(huì)觸發(fā)調(diào)用OnPaint()函數(shù)重繪客戶區(qū),我們在OnPaint()中加入以下代碼:voidCWavePlayerDlg::OnPaint(){ if(IsIconic()) { …… } else { CDialog::OnPaint(); if(m_bOpen) { CWnd*m_pWnd; CRectrect; m_pWnd=GetDlgItem(IDC_WAVE_GRAPH); m_pWnd->GetClientRect(rect); INFO_WAVEWIDE=rect.Width(); INFO_WAVEDEEP=rect.Height(); CClientDCdc(m_pWnd); DrawWave(dc.m_hDC,rect.left,rect.top,(char*)path.operatorLPCTSTR()); } }} 我們就在OnPaint()中調(diào)用了DrawWave函數(shù)繪制波形,DrawWave函數(shù)的代碼如下:voidCWavePlayerDlg::DrawWave(HDChdc,unsignedintx,unsignedinty,char*path){ HMMIOh; MMCKINFOmmParent,mmSub;//MMCKINFO結(jié)構(gòu)中包含了有關(guān)部分的信息 GLOBALHANDLEgh; PCMWAVEFORMATwaveformat;//fmt部分結(jié)構(gòu) char*p; unsignedlongnextsample; longafactor; unsignedinti,n,amp; int*ip;HPENOldPen=(HPEN)SelectObject(hdc,GetStockObject(BLACK_PEN)); HBRUSHOldBrush=(HBRUSH)SelectObject(hdc,GetStockObject(WHITE_BRUSH)); Rectangle(hdc,x,y,x+INFO_WAVEWIDE,y+INFO_WAVEDEEP); if((h=mmioOpen(path,NULL,MMIO_READ))==NULL) return; mmParent.fccType=mmioFOURCC('W','A','V','E'); if(mmioDescend(h,(LPMMCKINFO)&mmParent,NULL,MMIO_FINDRIFF)) { mmioClose(h,0); return; } mmSub.ckid=mmioFOURCC('f','m','t',''); if(mmioDescend(h,(LPMMCKINFO)&mmSub,(LPMMCKINFO)&mmParent,MMIO_FINDCHUNK)) { mmioClose(h,0); return; } n=min((unsignedint)mmSub.cksize,sizeof(PCMWAVEFORMAT)); if(mmioRead(h,(LPSTR)&waveformat,n)!=(int)n) { mmioClose(h,0); return; } if(waveformat.wf.wFormatTag!=WAVE_FORMAT_PCM) { mmioClose(h,0); return; } mmioAscend(h,&mmSub,0);//當(dāng)讀出一個(gè)部分的數(shù)據(jù)后,退出該部分 mmSub.ckid=mmioFOURCC('d','a','t','a'); if(mmioDescend(h,(LPMMCKINFO)&mmSub,(LPMMCKINFO)&mmParent,MMIO_FINDCHUNK)) { mmioClose(h,0); return; } if(waveformat.wBitsPerSample==8&&waveformat.wf.nChannels==1) { nextsample=mmSub.cksize/(long)INFO_WAVEWIDE; afactor=2L*(255L/(long)INFO_WAVEDEEP); } elseif(waveformat.wBitsPerSample==8&&waveformat.wf.nChannels==1) { nextsample=2L*((mmSub.cksize/2L)/(long)INFO_WAVEWIDE); afactor=2L*(255L/(long)INFO_WAVEDEEP); } elseif(waveformat.wBitsPerSample>8&&waveformat.wf.nChannels==1) { nextsample=2L*((mmSub.cksize/(long)INFO_WAVEWIDE))&0xfffffffeL; afactor=2L*(65535L/(long)INFO_WAVEDEEP); } else { nextsample=4L*((mmSub.cksize/4L)/(long)INFO_WAVEWIDE)&0xfffffffeL; afactor=2L*(65535L/(long)INFO_WAVEDEEP); } MoveToEx(hdc,x,y+INFO_WAVEDEEP/2,NULL); LineTo(hdc,x+INFO_WAVEWIDE,y+INFO_WAVEDEEP/2); if((gh=GlobalAlloc(GMEM_MOVEABLE,mmSub.cksize))!=NULL) { if((p=(char*)GlobalLock(gh))!=NULL) { if(mmioRead(h,p,mmSub.cksize)==mmSub.cksize) { for(i=0;i<INFO_WAVEWIDE;) { ip=(int*)p; if(waveformat.wBitsPerSample==8&&waveformat.wf.nChannels==1) amp=(unsignedint)max(labs(((long)p[0]-128L)/afactor),1L); elseif(waveformat.wBitsPerSample==8&&waveformat.wf.nChannels==2) amp=(unsignedint)max(labs(((long)p[0]-128L+(long)p[1]-128L)/2)*/afactor,1L); elseif(waveformat.wBitsPerSample>8&&waveformat.wf.nChannels==1) amp=(unsignedint)max(labs((long)ip[0]/afactor),1L); else amp=(unsignedint)max(labs((((long)ip[0]+(long)ip[1])/2)/afactor),1L); if(amp>(unsignedint)INFO_WAVEDEEP/2) amp=INFO_WAVEDEEP/2-3; MoveToEx(hdc,x+i,y+(INFO_WAVEDEEP/2)-amp,NULL); LineTo(hdc,x+i,y+(INFO_WAVEDEEP/2)+amp); i+=2; p+=nextsample; } } GlobalUnlock(gh); } GlobalFree(gh); }SelectObject(hdc,OldPen); (HBRUSH)SelectObject(hdc,OldBrush); mmioClose(h,0); return;} 現(xiàn)在編譯執(zhí)行你的程序,就會(huì)發(fā)現(xiàn)一個(gè)簡單的波形音頻播放器已經(jīng)完成了。實(shí)驗(yàn)注意事項(xiàng):調(diào)試程序時(shí),Ctrl+F7為Compile,Build為F7,運(yùn)行時(shí)按F5。注意可重用類CwaveAudio的設(shè)計(jì)。熟練掌握MCI多媒體函數(shù)的應(yīng)用。編譯時(shí),菜單選中“項(xiàng)目”“設(shè)置”,要在庫的鏈接中加入winmm.lib。思考題(需寫入實(shí)驗(yàn)報(bào)告中)什么是MCI接口?簡述MCI所囊括的內(nèi)容。Windows下播放波形文件可采用幾種方法?各有什么優(yōu)缺點(diǎn)?簡述Windows下多媒體程序開發(fā)的特點(diǎn)。實(shí)驗(yàn)驗(yàn)收要求1.將思考題完成,并寫入實(shí)驗(yàn)報(bào)告中;2.將制作的播放器界面截圖保存至實(shí)驗(yàn)報(bào)告中;3.完成播放器的制作,實(shí)現(xiàn)其功能,當(dāng)場驗(yàn)收程序效果。

實(shí)驗(yàn)四數(shù)字視頻播放器(4學(xué)時(shí))實(shí)驗(yàn)?zāi)康倪M(jìn)一步掌握MCI函數(shù)的應(yīng)用。制作數(shù)字視頻播放器,并具有以下功能:打開視頻播放設(shè)備,播放視頻文件,可靜態(tài)觀看每一幀視頻,并且可設(shè)置播放速度,還能在全屏播放與正常播放之間轉(zhuǎn)換。實(shí)驗(yàn)內(nèi)容及要求如實(shí)驗(yàn)3建立應(yīng)用程序框架制作應(yīng)用程序界面制作對話框(要求含有學(xué)號(hào)和姓名)對話框控件屬性表控件ID標(biāo)題控件ID標(biāo)題PictureIDC_DISPLAYStaticIDC_PLAY_SOUNDGroupBoxIDC_STATIC視頻信息StaticIDC_FRAMESStaticIDC_STATIC視頻文件名:StaticIDC_DEMENSIONStaticIDC_STATIC播放速度:ButtonIDC_OPEN打開StaticIDC_STATIC是否靜音:ButtonIDC_PLAY播放StaticIDC_STATIC視頻幀數(shù):ButtonIDC_PAUSE暫停StaticIDC_STATIC視頻尺寸:ButtonIDC_PRE上一幀StaticIDC_VIDEO_NAMEButtonIDC_NEXT下一幀StaticIDC_PLAY_SPEEDButtonIDC_STOP停止在應(yīng)用程序中插入一個(gè)對話框資源,用來設(shè)置播放速度,其ID設(shè)為IDD_SPEED:IDD_SPEED對話框控件屬性表控件ID標(biāo)題EditBoxIDC_SPEEDButtonIDOK確定ButtonIDCANCEL取消還需向應(yīng)用程序中插入一個(gè)對話框資源,用做視頻輸出窗口,ID為IDD_DISPLAY。制作菜單插入一個(gè)菜單資源,將ID設(shè)為IDR_MAINFRAME。IDR_MAINFRAME中的菜單項(xiàng)屬性表菜單標(biāo)題菜單項(xiàng)標(biāo)題ID文件打開IDC_OPEN關(guān)閉IDC_OK選項(xiàng)靜音IDC_SOUND全屏IDC_FULLSCREEN循環(huán)播放IDC_LOOP視頻速度IDC_SPEED在你的主對話框的屬性中的菜單項(xiàng)中,選中IDR_MAINFRAME現(xiàn)在編譯一下,就得到了我們所要的界面。添加消息處理函數(shù)C***Dlg中需要添加的消息處理函數(shù)表ID消息IDC_PLAYBN_CLICKEDIDC_STOPBN_CLICKEDIDC_PAUSEBN_CLICKEDIDC_PREBN_CLICKEDIDC_NEXTBN_CLICKEDIDC_OPENBN_CLICKEDIDC_SPEEDCOMMANDIDC_FULLSCREENCOMMANDIDC_LOOPCOMMANDIDC_SOUNDCOMMANDC***DlgWM_TIMER然后為IDD_SPEED對話框資源添加一個(gè)intm_speed成員變量完成應(yīng)用程序功能設(shè)計(jì)將已設(shè)計(jì)好的類Cvideo加到你的工程中來,并使C***Dlg的頭文件包含該類的頭文件,然后在C***Dlg類的聲明中加入以下代碼:protected:CVideom_Video; boolm_bIsOpen; boolm_bSound; boolm_bLoop; boolm_bFullScreen; CDialog*display;初始化你的主對話框在OnInitDlialog()中//TODO:Addextrainitializationhere后加入以下代碼:display=newCDialog;display->Create(IDD_DISPLAY);SetTimer(1,100,NULL);完成消息函數(shù)OnTimer,OnOpen,OnPlay,OnStop,OnPause,OnPre,OnNext,OnSound,OnLoop,OnFullScreen,OnSpeedvoidCVideoPlayerDlg::OnTimer(UINTnIDEvent){ //TODO:Addyourmessagehandlercodehereand/orcalldefault CWnd*m_pWnd=GetDlgItem(IDC_PLAY); m_pWnd->EnableWindow(m_bIsOpen); m_pWnd=GetDlgItem(IDC_PAUSE); m_pWnd->EnableWindow(m_bIsOpen); m_pWnd=GetDlgItem(IDC_STOP); m_pWnd->EnableWindow(m_bIsOpen); m_pWnd=GetDlgItem(IDC_NEXT); m_pWnd->EnableWindow(m_bIsOpen); m_pWnd=GetDlgItem(IDC_PRE); m_pWnd->EnableWindow(m_bIsOpen); if(m_bIsOpen) { CStringInfo; Info.Format("當(dāng)前播放幀數(shù):%d",m_Video.GetFrame()); m_pWnd=GetDlgItem(IDC_DISPLAY);//獲得靜態(tài)圖像控件位置 CClientDCdc(m_pWnd); CRectrect; CBrushbrush(COLORREF(0)),*OldBrush; OldBrush=(CBrush*)dc.SelectObject(brush); m_pWnd->GetClientRect(rect);//獲得靜態(tài)圖像控件大小 dc.SetTextColor(COLORREFRGB(0,0,255)); dc.SetBkColor(COLORREFRGB(0,0,0)); dc.FillRect(rect,&brush); CSizesize=dc.GetTextExtent(Info);//獲得文本尺寸 dc.TextOut((rect.Width()-size.cx)/2,(rect.Height()-size.cy)/2,Info); dc.SelectObject(&OldBrush); CStringstr; str.Format("%d",m_Video.GetSpeed()); SetDlgItemText(IDC_PLAY_SPEED,str); str.Format("%d",m_Video.GetFrames()); SetDlgItemText(IDC_FRAMES,str); if(m_Video.GetSound()) str=_T("否"); else str=_T("是"); SetDlgItemText(IDC_PLAY_SOUND,str); } CDialog::OnTimer(nIDEvent);}voidCVideoPlayerDlg::OnOpen(){ //TODO:Addyourcontrolnotificationhandlercodehere CStringFilter,str; Filter="視頻文件(*.AVI)|*.AVI||"; //得到窗口尺寸 CRectrect; this->GetWindowRect(rect); CFileDialogFileDlg(true,NULL,NULL,OFN_HIDEREADONLY,Filter); if(FileDlg.DoModal()==IDOK)//單擊文件選擇對話框的“確定”鍵 { if(!m_Video.Open(FileDlg.GetPathName(),display,0,0))//打開視頻文件 { MessageBox("不能打開文件!","Error",MB_OK|MB_ICONSTOP); return; } //將顯示屏幕定位在主對話框的下方,并根據(jù)視頻大小確定屏幕大小 intBorder,Caption; Border=GetSystemMetrics(SM_CXSIZEFRAME); Caption=GetSystemMetrics(SM_CYCAPTION); display->SetWindowPos(this,rect.left+30,rect.bottom+30, m_Video.GetWidth()+Border,m_Video.GetHeight()+Caption+Border, SWP_SHOWWINDOW); display->ShowWindow(true); display->SetWindowText(FileDlg.GetFileName()); SetDlgItemText(IDC_VIDEO_NAME,FileDlg.GetFileName()); str.Format("%d×%d",m_Video.GetWidth(),m_Video.GetHeight()); SetDlgItemText(IDC_DEMENSION,str); m_bIsOpen=true; }}voidCVideoPlayerDlg::OnPlay(){ //TODO:Addyourcontrolnotificationhandlercodehere m_Video.Play(m_bLoop,m_bFullScreen);}voidCVideoPlayerDlg::OnStop(){ //TODO:Addyourcontrolnotificationhandlercodehere m_Video.Stop();}voidCVideoPlayerDlg::OnPause(){ //TODO:Addyourcontrolnotificationhandlercodehere m_Video.Pause();}voidCVideoPlayerDlg::OnPre(){ //TODO:Addyourcontrolnotificationhandlercodehere m_Video.Backward(1);}voidCVideoPlayerDlg::OnNext(){ //TODO:Addyourcontrolnotificationhandlercodehere m_Video.Forward(1);}voidCVideoPlayerDlg::OnSound(){ //TODO:Addyourcommandhandlercodehere m_bSound=!m_bSound; m_Video.SetSound(m_bSound);}voidCVideoPlayerDlg::OnSpeed(){ //TODO:Addyourcommandhandlercodehere CSPeeddlg; dlg.m_speed=m_Video.GetSpeed(); if(dlg.DoModal()==IDOK) m_Video.SetSpeed(dlg.m_speed);}voidCVideoPlayerDlg::OnFullscreen(){ //TODO:Addyourcommandhandlercodehere m_bFullScreen=!m_bFullScreen;}voidCVideoPlayerDlg::OnLoop(){ //TODO:Addyourcommandhandlercodehere m_bLoop=!m_bLoop;}現(xiàn)在編譯執(zhí)行,視頻播放器便完成了。實(shí)驗(yàn)驗(yàn)收要求1.完成視頻播放器的制作,實(shí)現(xiàn)其功能,當(dāng)場驗(yàn)收程序效果;2.將制作的播放器界面截圖保存至實(shí)驗(yàn)報(bào)告中。

實(shí)驗(yàn)五視頻編輯實(shí)驗(yàn)(2學(xué)時(shí))實(shí)驗(yàn)?zāi)康氖煜REMIERE對視頻的處理(視頻的剪輯和編輯);熟悉PREMIERE的過渡效果和濾鏡效果實(shí)驗(yàn)預(yù)備知識(shí)ADOBEPREMIEREADOBEPREMIERE在視頻、音頻編輯的非線性編輯軟件中,是一個(gè)佼佼者,由它首創(chuàng)的時(shí)間線編輯、剪輯項(xiàng)目管理等概念,已經(jīng)成為事實(shí)上的工業(yè)標(biāo)準(zhǔn)。ADOBEPREMIERE除了用于非線性編輯外,還可以用來建立VideoforWindows或QuickTime影片,用于演示或制作CD-ROM。ADOBEPREMIERE的主要特點(diǎn)包括:廣泛的兼容性:ADOBEPREMIERE支持眾多的文件格式,如:JPG、TGA、TIF、FLC、WAV等,這使得ADOBEPREMIERE可以和許多軟件配合使用。視音頻實(shí)施采集PREMIERE配合計(jì)算機(jī)上的視頻卡,實(shí)現(xiàn)對模擬視音頻的實(shí)施采集,同時(shí)對于記錄在磁帶上的視音頻可以實(shí)現(xiàn)幾倍速的上載,在采集過程中,可以視音頻信號(hào)進(jìn)行調(diào)整,如果丟幀,可以指示出丟幀率。非線性編輯及后期處理PREMIERE具有99道視頻軌道和99道音頻軌道,可以精確實(shí)現(xiàn)聲、畫同步,并以幀的精度進(jìn)行編輯。迭加和字幕創(chuàng)作PREMIERE提供了多種疊加方式,已實(shí)現(xiàn)多層畫面的同屏顯示,而傳統(tǒng)方式只有色鍵和亮度鍵兩種。PREMIERE的特技效果PREMIERE給出了改變從一個(gè)剪輯到另一個(gè)剪輯變化的多種選擇,可提供紋理、漸變和特殊效果。所謂過渡指的是素材中兩個(gè)相鄰幀畫面的顯示效果,它提供了重新定義幀畫面像素顯示的算法,算法不同,兩個(gè)幀畫面過渡產(chǎn)生的效果就不同。PREMIERE提供了76種效果,可以從過渡效果調(diào)色板(TransitionsPalette)中方便選擇.濾鏡就是特技效果,是形成視覺沖擊的重要方法。與PHOTOSHOP濾鏡不同的是,PREMIERE中的大多數(shù)濾鏡,多可以隨時(shí)間產(chǎn)生動(dòng)態(tài)變化,還包含了一些音頻濾鏡。實(shí)驗(yàn)內(nèi)容及要求編輯一段視頻圖像并制作字幕效果連接幾段剪輯(test1):創(chuàng)建一個(gè)新節(jié)目選擇File>New>Project命令。在NewProjectSettings對話框中,以自己學(xué)號(hào)和姓名命名工程文件名稱。單擊Next打開NewProjectSettings對話框中的選擇中國的PAL制式,標(biāo)準(zhǔn)48KHz。導(dǎo)入原始剪輯選擇File>Import>File,打開Import對話框,選擇你的文件目錄。載入文件出現(xiàn)在Project窗口中。對于導(dǎo)入的每個(gè)文件,節(jié)目窗口都列出了它的名稱、類別、持續(xù)時(shí)間和畫面大小等信息并保存這些信息。創(chuàng)建初稿如果Timeline窗口沒有打開,則選擇Windows>Timeline.只有把導(dǎo)入的剪輯放入Timeline中,它們才能成為影像節(jié)目的一部分。再打開文件時(shí)一定要注意序列的設(shè)置和素材的相匹配,否則無法打開文件,最好利用將視頻文件拖至“新建分項(xiàng)”的圖標(biāo)上,然后在Project窗口中選擇“中南大學(xué)宣傳片.avi”剪輯,并把他拖進(jìn)Video1A軌道中。拖動(dòng)時(shí),剪輯呈現(xiàn)為一個(gè)黑框,要確保剪輯黑框左端與Video1A軌道左端對齊,然后釋放鼠標(biāo)。選擇蒲公英-無聲.avi剪輯,并把他拖進(jìn)Video1A軌道中,這次要把它正好放在中南大學(xué)宣傳片.avi后面,這樣使二者首尾連接。裁剪剪輯(test2)首先確保Timeline窗口和Monitor窗口都是可見的,而且沒有重疊,單擊Timeline窗口標(biāo)題欄激活該窗口。剪輯一個(gè)剪輯包括設(shè)置一個(gè)新的切入點(diǎn)、切出點(diǎn)或兩者都設(shè)。切入點(diǎn)就是剪輯開始的陣,切出點(diǎn)就是剪輯最后的幀。找到切入點(diǎn),在源視圖下,拖動(dòng)往復(fù)滑塊看到完成旅程,單擊切出點(diǎn)按鈕,然后使用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論