




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上南京工程學(xué)院實(shí) 驗(yàn) 報(bào) 告課程名稱 多媒體編程基礎(chǔ) 實(shí)驗(yàn)項(xiàng)目名稱 音頻和視頻 實(shí)驗(yàn)學(xué)生班級(jí) 多媒體132 實(shí)驗(yàn)學(xué)生姓名 滕超 學(xué)號(hào) 同組學(xué)生姓名 無 實(shí)驗(yàn)時(shí)間 2016 年 5 月 26 日 實(shí)驗(yàn)地點(diǎn) 信息樓A213 實(shí)驗(yàn)5 音頻/視頻處理一、實(shí)驗(yàn)?zāi)康模?理解Windows系統(tǒng)中音頻、視頻處理的方法。2理解MCI接口的概念。3了解音視頻處理技巧,以及實(shí)際應(yīng)用方法4掌握實(shí)現(xiàn)音頻播放器和視頻播放器的常用方法。 二、實(shí)驗(yàn)環(huán)境及開發(fā)工具:PC機(jī)、Windows 8.1操作系統(tǒng)、Visual C+ 2013三、實(shí)驗(yàn)要求及內(nèi)容:1)理解第9章教材例題及上課所講的參考例程。2)運(yùn)用
2、學(xué)過的知識(shí),在理解例題的基礎(chǔ)上自己編寫一個(gè)多媒體播放器應(yīng)用程序,包括:一個(gè)音頻(MP3、wma)播放器和一個(gè)視頻播放器處理(avi、wmv、asf)程序,要求具有以下功能: 可以播放本機(jī)中的音視頻媒體文件文件; 音頻播放參照課堂提供的例子, 必須創(chuàng)建一個(gè)播放類來實(shí)現(xiàn) 視頻播放可以直接使用WMP控件,適當(dāng)添加針對文件的操作功能。音頻設(shè)計(jì)流程圖:音頻界面設(shè)計(jì)如下:使用CPlayWave類/*PlayWave.h*/#pragma once#include mmsystem.hclass CPlayWave/定義保護(hù)保護(hù)成員protected:MCIDEVICEID m_DeviceID; /記錄波
3、形設(shè)備IDMCIDEVICEID m_ElementID; /記錄波形元素IDpublic:CPlayWave(void);CPlayWave(void);DWORD InitDevice(void);DWORD TeminalDevice(void);DWORD Play(HWND hWnd, LPCWSTR pFileName);DWORD Stop(void);DWORD Pause();DWORD Resume();/*PlayWave.cpp*/#include StdAfx.h#include PlayWave.hCPlayWave:CPlayWave(void)m_DeviceI
4、D = 0; /初始化設(shè)備IDm_ElementID = 0; /初始化元素IDInitDevice(); /調(diào)用InitDevice方法初始化設(shè)CPlayWave:CPlayWave(void)if (m_ElementID) /判斷波形元素是否為0Stop(); /停止波形元素if (m_DeviceID) /判斷波形設(shè)備是否為0TeminalDevice(); /停止波形設(shè)備DWORD CPlayWave:InitDevice(void)DWORD dwResult = 0; /定義一個(gè)整型變量if (m_DeviceID = 0) /如果設(shè)備ID為0MCI_OPEN_PARMS mci
5、InitParms; /定義打開參數(shù)mciInitParms.lpstrDeviceType = (LPWSTR)MCI_DEVTYPE_WAVEFORM_AUDIO;dwResult = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID| MCI_WAIT, (DWORD)(LPVOID)&mciInitParms); /打開波形設(shè)備m_DeviceID = mciInitParms.wDeviceID;return dwResult;DWORD CPlayWave:TeminalDevice(void)DWORD
6、 dwResult = 0; /定義一個(gè)整型變量if (m_DeviceID) /判斷設(shè)備ID是否為0/關(guān)閉波形設(shè)備dwResult = mciSendCommand(m_DeviceID, MCI_CLOSE, NULL, NULL);m_DeviceID = 0; /將波形設(shè)備ID設(shè)置為0return dwResult;DWORD CPlayWave:Play(HWND hWnd, LPCWSTR pFileName)MCI_OPEN_PARMS mciOpenParms; /定義打開參數(shù)memset(&mciOpenParms, 0, sizeof(MCI_OPEN_PARMS); /初
7、始化參數(shù)mciOpenParms.lpstrElementName = pFileName; /設(shè)置文件名DWORD dwResult = 0; /定義整型變量dwResult = mciSendCommand(m_DeviceID, MCI_OPEN, MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpenParms); /打開波形元素if (!dwResult)m_ElementID = mciOpenParms.wDeviceID; /獲取波形元素IDMCI_PLAY_PARMS mciPlayParms; /定義播放參數(shù)mciPlayParms.dwCallb
8、ack = (DWORD)hWnd; /設(shè)置播放參數(shù)dwResult = mciSendCommand(m_ElementID, MCI_PLAY,MCI_NOTIFY, (DWORD)(LPVOID)&mciPlayParms); /播放wav文件return dwResult;DWORD CPlayWave:Stop(void)DWORD dwResult = 0; /定義一個(gè)整型變量if (m_ElementID) /判斷波形元素ID是否為0/關(guān)閉波形元素dwResult = mciSendCommand(m_ElementID, MCI_CLOSE, NULL, NULL);m_Ele
9、mentID = 0; /設(shè)置波形元素ID為0return dwResult;DWORD CPlayWave:Pause()mciSendCommand(m_ElementID, MCI_PAUSE, 0, NULL);return 0;DWORD CPlayWave:Resume()mciSendCommand(m_ElementID, MCI_RESUME, 0, NULL);return 0;/*+*/“添加”按鈕的事件處理void CMusicDlg:OnBnClickedAddlist()/ TODO: 在此添加控件通知處理程序代碼/m_List.ResetContent(); /清
10、空列表CFileDialog flDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT| OFN_ALLOWMULTISELECT, L音頻文件|*.wav;*.mp3;*.wma|, this); /定義一個(gè)問價(jià)打開對話框if (flDlg.DoModal() = IDOK) /判斷用戶是否按OK按鈕 POSITION pos = flDlg.GetStartPosition(); /獲取文件名列表的首位置while (pos != NULL) /利用循環(huán)遍歷文件名列表 m_List.AddString(flDlg.GetN
11、extPathName(pos); /將文件名添加的列表框控件中“播放”按鈕添加事件處理void CMusicDlg:OnLbnDblclkList1()/ TODO: 在此添加控件通知處理程序代碼int selIndex = m_List.GetCurSel(); /獲取當(dāng)前選擇的列表項(xiàng)索引 if (selIndex != LB_ERR) /判斷是否有項(xiàng)目被選中/定義一個(gè)字符串對象CString str;/根據(jù)索引獲取當(dāng)前項(xiàng)目的字符串m_List.GetText(selIndex, str);/停止播放wave.Stop();wave.TeminalDevice();/開始播放歌曲wave.
12、Play(m_hWnd, str);雙擊列表框播放音樂void CMusicDlg:OnLbnDblclkList1()/ TODO: 在此添加控件通知處理程序代碼int selIndex = m_List.GetCurSel(); /獲取當(dāng)前選擇的列表項(xiàng)索引 if (selIndex != LB_ERR) /判斷是否有項(xiàng)目被選中/定義一個(gè)字符串對象CString str;/根據(jù)索引獲取當(dāng)前項(xiàng)目的字符串m_List.GetText(selIndex, str);/停止播放wave.Stop();wave.TeminalDevice();/開始播放歌曲wave.Play(m_hWnd, str)
13、;“暫?!焙汀袄^續(xù)”事件處理void CMusicDlg:OnBnClickedBstopPlay()wave.Pause();is_stop = !is_stop;GetDlgItem(IDC_BSTOP_PLAY)-SetWindowText(L繼續(xù));if (is_stop)wave.Resume();GetDlgItem(IDC_BSTOP_PLAY)-SetWindowText(L暫停);視頻播放器設(shè)計(jì)流程圖:定義變量:CWMPPlayer4 m_play;CWMPControls m_mediacontrol; /控制按鈕關(guān)聯(lián) CWMPSettings m_mediasetting
14、; /設(shè)置按鈕關(guān)聯(lián) CWMPMedia m_media; /媒體 CProgressCtrl *m_progress; /進(jìn)度條 “打開”按鈕事件處理void CVideoPlayer:OnBnClickedVideoopen()CString filename;CFileDialog dlg(TRUE, NULL, L*.*, OFN_FILEMUSTEXIST,L串流多媒體(*.asf) | *.asf |L音頻視頻交錯(cuò)格式(*.avi) | *.avi |L即時(shí)播音系統(tǒng)(*.rm) | *.rm |L波音音頻設(shè)備(*.wav) | *.wav |L所有文件(*.*) | *.* |);i
15、f (IDOK = dlg.DoModal()filename = dlg.GetPathName();m_play.put_URL(filename); / 播放m_media = static_cast(m_play.newMedia(filename);m_progress-SetRange(0, (int)m_media.get_duration(); /媒體總長度 m_progress-SetPos(0);“播放”按鈕事件處理void CVideoPlayer:OnBnClickedVideoplay()m_mediacontrol.play();“暫?!卑粹o事件處理void CVi
16、deoPlayer:OnBnClickedVideosuspend()m_mediacontrol.pause();“停止”按鈕事件處理void CVideoPlayer:OnBnClickedVideostop()m_mediacontrol.stop();“全屏”按鈕事件處理void CVideoPlayer:OnBnClickedfullscreen()m_play.put_fullScreen(TRUE);“音量-”按鈕事件處理void CVideoPlayer:OnBnClickedVideol()m_mediasetting.put_volume(m_mediasetting.ge
17、t_volume() - 10);“音量+”按鈕事件處理void CVideoPlayer:OnBnClickedVideor()m_mediasetting.put_volume(m_mediasetting.get_volume() + 10);“進(jìn)度條”控件處理void CVideoPlayer:PlayStateChangeOcx1(long NewState)if (NewState = 3) /播放狀態(tài)時(shí), 開啟定時(shí)器 SetTimer(1, 1000, NULL);else if (NewState = 1) /停止時(shí), 關(guān)閉定時(shí)器, 進(jìn)度條回0 KillTimer(1);els
18、eKillTimer(1);void CVideoPlayer:OnTimer(UINT_PTR nIDEvent)if (nIDEvent != 1)return;m_progress-SetPos(m_progress-GetPos() + 1);CDialogEx:OnTimer(nIDEvent);“快進(jìn)”按鈕事件處理void CVideoPlayer:OnBnClickedBtnfront()m_mediacontrol.fastForward(); /快進(jìn) “快退”按鈕事件處理void CVideoPlayer:OnBnClickedBtnback()m_mediacontrol.fastReverse();
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年菏澤家政職業(yè)學(xué)院單招職業(yè)傾向性測試題庫參考答案
- 《虞美人(春花秋月何時(shí)了)》教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊
- 湖北省騰云聯(lián)盟2023-2024學(xué)年高三上學(xué)期12月月考地理試題(解析版)
- 2025年砼空心砌塊(承重型)項(xiàng)目合作計(jì)劃書
- 供水設(shè)施智能化改造項(xiàng)目實(shí)施進(jìn)度安排
- 2025至2030年中國快速硅膠模數(shù)據(jù)監(jiān)測研究報(bào)告
- 商品房購銷合同簽署完就必須辦銀行貸款
- 二零二五年度公司免責(zé)的跨境電商合作協(xié)議
- 2025至2030年中國干荷電摩托車蓄電池?cái)?shù)據(jù)監(jiān)測研究報(bào)告
- 集體合同2025年度生效時(shí)間規(guī)定及員工勞動(dòng)爭議調(diào)解機(jī)制
- 礦山開采與環(huán)境保護(hù)
- 企業(yè)事業(yè)部制的管理與監(jiān)督機(jī)制
- 兒童體液平衡及液體療法課件
- 勞動(dòng)防護(hù)用品培訓(xùn)試卷帶答案
- ORACLE執(zhí)行計(jì)劃和SQL調(diào)優(yōu)
- 2024年鐘山職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 2024年湖南交通職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 研究生導(dǎo)師談心談話記錄內(nèi)容范文
- 小學(xué)機(jī)器人課題報(bào)告
- 《字體設(shè)計(jì)》課程標(biāo)準(zhǔn)
- 圖像生成中的風(fēng)格遷移方法研究
評論
0/150
提交評論