




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上南京工程學院實 驗 報 告課程名稱 多媒體編程基礎 實驗項目名稱 音頻和視頻 實驗學生班級 多媒體132 實驗學生姓名 滕超 學號 同組學生姓名 無 實驗時間 2016 年 5 月 26 日 實驗地點 信息樓A213 實驗5 音頻/視頻處理一、實驗目的:1理解Windows系統(tǒng)中音頻、視頻處理的方法。2理解MCI接口的概念。3了解音視頻處理技巧,以及實際應用方法4掌握實現(xiàn)音頻播放器和視頻播放器的常用方法。 二、實驗環(huán)境及開發(fā)工具:PC機、Windows 8.1操作系統(tǒng)、Visual C+ 2013三、實驗要求及內(nèi)容:1)理解第9章教材例題及上課所講的參考例程。2)運用
2、學過的知識,在理解例題的基礎上自己編寫一個多媒體播放器應用程序,包括:一個音頻(MP3、wma)播放器和一個視頻播放器處理(avi、wmv、asf)程序,要求具有以下功能: 可以播放本機中的音視頻媒體文件文件; 音頻播放參照課堂提供的例子, 必須創(chuàng)建一個播放類來實現(xiàn) 視頻播放可以直接使用WMP控件,適當添加針對文件的操作功能。音頻設計流程圖:音頻界面設計如下:使用CPlayWave類/*PlayWave.h*/#pragma once#include mmsystem.hclass CPlayWave/定義保護保護成員protected:MCIDEVICEID m_DeviceID; /記錄波
3、形設備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; /初始化設備IDm_ElementID = 0; /初始化元素IDInitDevice(); /調(diào)用InitDevice方法初始化設CPlayWave:CPlayWave(void)if (m_ElementID) /判斷波形元素是否為0Stop(); /停止波形元素if (m_DeviceID) /判斷波形設備是否為0TeminalDevice(); /停止波形設備DWORD CPlayWave:InitDevice(void)DWORD dwResult = 0; /定義一個整型變量if (m_DeviceID = 0) /如果設備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); /打開波形設備m_DeviceID = mciInitParms.wDeviceID;return dwResult;DWORD CPlayWave:TeminalDevice(void)DWORD
6、 dwResult = 0; /定義一個整型變量if (m_DeviceID) /判斷設備ID是否為0/關閉波形設備dwResult = mciSendCommand(m_DeviceID, MCI_CLOSE, NULL, NULL);m_DeviceID = 0; /將波形設備ID設置為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; /設置文件名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ù)dwResult = mciSendCommand(m_ElementID, MCI_PLAY,MCI_NOTIFY, (DWORD)(LPVOID)&mciPlayParms); /播放wav文件return dwResult;DWORD CPlayWave:Stop(void)DWORD dwResult = 0; /定義一個整型變量if (m_ElementID) /判斷波形元素ID是否為0/關閉波形元素dwResult = mciSendCommand(m_ElementID, MCI_CLOSE, NULL, NULL);m_Ele
9、mentID = 0; /設置波形元素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); /定義一個問價打開對話框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(); /獲取當前選擇的列表項索引 if (selIndex != LB_ERR) /判斷是否有項目被選中/定義一個字符串對象CString str;/根據(jù)索引獲取當前項目的字符串m_List.GetText(selIndex, str);/停止播放wave.Stop();wave.TeminalDevice();/開始播放歌曲wave.
12、Play(m_hWnd, str);雙擊列表框播放音樂void CMusicDlg:OnLbnDblclkList1()/ TODO: 在此添加控件通知處理程序代碼int selIndex = m_List.GetCurSel(); /獲取當前選擇的列表項索引 if (selIndex != LB_ERR) /判斷是否有項目被選中/定義一個字符串對象CString str;/根據(jù)索引獲取當前項目的字符串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暫停);視頻播放器設計流程圖:定義變量:CWMPPlayer4 m_play;CWMPControls m_mediacontrol; /控制按鈕關聯(lián) CWMPSettings m_mediasetting
14、; /設置按鈕關聯(lián) CWMPMedia m_media; /媒體 CProgressCtrl *m_progress; /進度條 “打開”按鈕事件處理void CVideoPlayer:OnBnClickedVideoopen()CString filename;CFileDialog dlg(TRUE, NULL, L*.*, OFN_FILEMUSTEXIST,L串流多媒體(*.asf) | *.asf |L音頻視頻交錯格式(*.avi) | *.avi |L即時播音系統(tǒng)(*.rm) | *.rm |L波音音頻設備(*.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);“進度條”控件處理void CVideoPlayer:PlayStateChangeOcx1(long NewState)if (NewState = 3) /播放狀態(tài)時, 開啟定時器 SetTimer(1, 1000, NULL);else if (NewState = 1) /停止時, 關閉定時器, 進度條回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);“快進”按鈕事件處理void CVideoPlayer:OnBnClickedBtnfront()m_mediacontrol.fastForward(); /快進 “快退”按鈕事件處理void CVideoPlayer:OnBnClickedBtnback()m_mediacontrol.fastReverse();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 正確認識花藝師考試知識框架試題及答案
- led使用合同樣本
- 農(nóng)業(yè)職業(yè)經(jīng)理人考試的在線學習資源試題及答案
- jiankong售后合同樣本
- 2024年農(nóng)業(yè)經(jīng)理人考試的備考經(jīng)驗分享試題及答案
- 典當行業(yè)合同樣本
- 2024年湖南自由貿(mào)易試驗區(qū)臨空產(chǎn)業(yè)投資集團有限公司招聘筆試真題
- 2024年輔導員招聘考試的試題與答案整合
- 強化森林草原火災防控策略與實施路徑
- 浙教版科學八年級上冊 1.1 地球上的水 教學設計
- (正式版)JBT 9229-2024 剪叉式升降工作平臺
- (高清版)DZT 0350-2020 礦產(chǎn)資源規(guī)劃圖示圖例
- (完整版)語文寫作方格紙模板
- 簡單夫妻自愿離婚協(xié)議書范本
- 打擊違法犯罪工作總結(jié)
- 制氧機實施方案
- BOM中的工藝模塊
- 醫(yī)療器械臨床試驗質(zhì)量管理規(guī)范培訓
- 中小學語文教師教學培訓核心素養(yǎng)下的整本書閱讀教學培訓課件如何教好孩子閱讀
- 徒手控制警務技能教案
- 《院感基本知識》課件
評論
0/150
提交評論