(精品論文)播放器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第1頁
(精品論文)播放器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第2頁
(精品論文)播放器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第3頁
(精品論文)播放器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第4頁
(精品論文)播放器的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

畢業(yè)設(shè)計(jì)(論文) 題題 目:目: 播放器的設(shè)計(jì)與實(shí)現(xiàn) 指導(dǎo)教師:指導(dǎo)教師: 職稱職稱: 學(xué)生姓名:學(xué)生姓名: 學(xué)號(hào):學(xué)號(hào): 專專 業(yè):業(yè): 院院(系系): 完成時(shí)間完成時(shí)間: 年年 月月 日日 2010 本科畢業(yè)設(shè)計(jì)論文 播放器的設(shè)計(jì)與實(shí)現(xiàn)播放器的設(shè)計(jì)與實(shí)現(xiàn) 摘摘 要要 隨著計(jì)算機(jī)的廣泛運(yùn)用,Internet 的迅速發(fā)展,多媒體技術(shù)也是迅速發(fā)展。各種音頻 視頻資源在網(wǎng)上隨處可見,在人們的日常生活中,幾乎不可或缺,于是各種播放器緊跟著 發(fā)展起來。本文旨在通過在.net 開發(fā)平臺(tái)上開發(fā)一個(gè)簡單的視頻播放器的過程,了解播放 器的功能實(shí)現(xiàn),掌握播放器開發(fā)的相關(guān)技術(shù),同時(shí)利用軟件工程的相關(guān)理論知識(shí),了解軟 件開發(fā)的方法與步驟。 首先,本文簡單介紹下市場(chǎng)上流行的播放器,比如暴風(fēng)影音等,然后了解這些播放器 的功能,還有各種播放器播放的特別編碼格式文件,分析各種編碼格式的優(yōu)缺點(diǎn);其次選 擇在微軟的.net 開發(fā)平臺(tái)上使用 C#語言進(jìn)行開發(fā),編寫出功能簡單實(shí)用方便的播放器。主 要包括以下幾個(gè)方面:開發(fā)本軟件所使用的開發(fā)平臺(tái)與技術(shù);功能模塊;功能設(shè)計(jì);功能 實(shí)現(xiàn)等。最后,對(duì)本軟件的開發(fā)過程進(jìn)行簡要總結(jié),并介紹一下本人的體會(huì)和感想。 【關(guān)鍵詞關(guān)鍵詞】:播放器 ;.NET;DirectX 9.0;C# 2010 本科畢業(yè)設(shè)計(jì)論文 Design and implementation of video player Abstract Along with the computers are widely used, Internet rapid development and the multimedia technology is also developing rapidly. A variety of audio and video resources can be seen everywhere on the Internet, in peoples daily lives, almost indispensable, then all kinds of Player is developed. This paper aim at to understand the functions implementations of Player, to master the development technologies of Player, and use the theory of software engineering to understand the method and step of software develop, by means of the process to develop a simple video player in the development platform of .Net. First of all, this paper introduce some popular players in brief on the market, such as storm video, etc., then to understand some functons of these players, all kinds of special coding format file they can play, to analyze the advantages and disadvantages of various coding formats; second I choose Microsoft .Net development platform and use the C # language to write a function of simple and practical and convenient player. Includeing the following main aspects: the development platform and technology of to develop this player; functional module; function design; function realization, etc. Finally, a brief summary of the software development process and some my experience and feelings are described. 【Keywords】:player;.NET;DirectX;C# 2010 本科畢業(yè)設(shè)計(jì)論文 目目 錄錄 第一章第一章 概述概述 .3 1.1項(xiàng)目背景與意義.3 1.2市面流行播放器舉例簡介.3 1.2.1暴風(fēng)影音3 1.2.2風(fēng)雷影音5 1.2.3幾種常見格式簡介6 1.3相關(guān)技術(shù)及開發(fā)工具介紹.7 1.3.1Visual Studio .Net 集成開發(fā)環(huán)境簡介.7 1.3.2C#語言簡介8 1.3.3DirectX SDK 9.0 簡介.9 第二章第二章 總體功能設(shè)計(jì)與實(shí)現(xiàn)總體功能設(shè)計(jì)與實(shí)現(xiàn) .11 2.1 功能設(shè)計(jì)11 2.1.1 功能設(shè)計(jì)及描述.11 2.1.2 功能模塊圖.12 2.2 功能實(shí)現(xiàn)12 2.2.1 主界面實(shí)現(xiàn).12 2.2.2 文件控制的實(shí)現(xiàn).14 2.2.3 播放控制的實(shí)現(xiàn).15 2.2.4 進(jìn)度控制的實(shí)現(xiàn).18 2.2.5 聲音控制.20 2.2.6 顯示控制的實(shí)現(xiàn).21 2.2.7 系統(tǒng)說明.23 第三章第三章 總結(jié)總結(jié) .25 致致 謝謝 .26 參考文獻(xiàn)參考文獻(xiàn) .27 2010 本科畢業(yè)設(shè)計(jì)論文 第一章 概述 1.1 項(xiàng)目背景與意義項(xiàng)目背景與意義 在 2000 年 1 月,使用媒體播放器(不論是離線播放器還是網(wǎng)絡(luò)播放器) 的家庭用戶是 3320 萬,到 2001 年 1 月猛增到 4170 萬。在工作中使用媒 體播放器的專業(yè)用戶數(shù)量也較去年同期上升了34.9%,從 2000 年 1 月的 1160 萬增加到 2001 年 1 月的 1570 萬。而隨著計(jì)算機(jī)的廣泛運(yùn)用, Internet 的迅速發(fā)展,多媒體技術(shù)也是迅速發(fā)展,各種音頻視頻資源在網(wǎng)上隨 處可見,于是播放器在人們的日常生活中,幾乎是不可或缺的一部分?,F(xiàn)在用 戶量更是龐大到不可思議的地步,比之九年前那是云泥之別。 但是現(xiàn)在的播放器一味追求花哨的外觀,龐大的功能,比如一些多媒體播 放器在播放網(wǎng)絡(luò)視頻時(shí)啟動(dòng)網(wǎng)絡(luò)加速器,使其他網(wǎng)絡(luò)用戶造成網(wǎng)絡(luò)堵塞,在目 前網(wǎng)絡(luò)速度很快的情況下這種損人利己的行為是不對(duì)的,也是沒必要的。就是 太多這些沒必要的功能、花哨的外觀等對(duì)用戶的計(jì)算機(jī)造成很大的資源浪費(fèi), 當(dāng)用戶進(jìn)行多任務(wù)操作時(shí)帶來很多不便。對(duì)于大多數(shù)的普通用戶來說,很多功 能、外觀形同虛設(shè),根本用不上。對(duì)于他們,他們的計(jì)算機(jī)來說,這些都是負(fù) 擔(dān)。 本人作為學(xué)習(xí)軟件工程專業(yè)的一員,對(duì)軟件工程,程序設(shè)計(jì)等理論知識(shí)有 了較深的認(rèn)識(shí),同事也掌握了一定的軟件開發(fā)理論,借助這次畢業(yè)設(shè)計(jì),把這 些理論知識(shí)付諸實(shí)踐,結(jié)合上述情況,本人選擇了開發(fā)一個(gè)簡單方便易操作的 個(gè)人音頻視頻播放器,能夠播放常見的音頻視頻格式,滿足一般用戶聽歌看電 影的需求。但作為畢業(yè)設(shè)計(jì),時(shí)間緊迫,加之本人沒有任何軟件開發(fā)的經(jīng)驗(yàn), 他肯定存在許許多多不足之處,但對(duì)它的改善和對(duì)自己知識(shí)的完備不會(huì)隨著畢 業(yè)設(shè)計(jì)的結(jié)束而終止。 1.2 市面流行播放器舉例簡介 本小節(jié)舉例介紹下時(shí)下比較常見播放器,比如國產(chǎn)暴風(fēng)影音、風(fēng)雷影音等。 比較分析它們的功能,及特有的解碼功能等 ;還有再介紹下集中常見的編 碼格式以及它們的特點(diǎn)。 1.2.1 暴風(fēng)影音 暴風(fēng)影音是暴風(fēng)網(wǎng)際公司推出的一款視頻播放器,該播放器兼容大多數(shù)的 視頻和音頻格式。從 2003 年開始,5 年來,暴風(fēng)的工程師分析了數(shù)以十萬 計(jì)的視頻文件,掌握了超過 500 種視頻格式的支持方案。到 2009 年 1 月, 2010 本科畢業(yè)設(shè)計(jì)論文 暴風(fēng)影音每天使用用戶超過 2200 萬,暴風(fēng)影音成功的幫助了超過 1 億 5000 萬的中國互聯(lián)網(wǎng)用戶輕松的觀看視頻。來自艾瑞的數(shù)據(jù)顯示:截止 2009 年 1 月,暴風(fēng)影音每天為互聯(lián)網(wǎng)用戶播放超過1.5 億個(gè)/次視頻文件; 每天,有 2200 萬人點(diǎn)擊藍(lán)色的膠片圖標(biāo),打開暴風(fēng)影音這款軟件;每天, 通過暴風(fēng)影音播放的視頻文件占中國所有互聯(lián)網(wǎng)視頻播放量的50%。暴風(fēng) 影音已經(jīng)成為中國最大的互聯(lián)網(wǎng)視頻播放平臺(tái)。 2008 年 7 月,全新的暴風(fēng) 影音 2008 第一次涵蓋了互聯(lián)網(wǎng)用戶觀看視頻的所有服務(wù)形式,包括:本地 播放、在線直播、在線點(diǎn)播、高清播放等; 軟件特色:通過自動(dòng)偵測(cè)用戶的電腦硬件配置;自動(dòng)匹配相應(yīng)的解碼器、 渲染鏈;自動(dòng)調(diào)整對(duì)硬件的支持 。它提供和升級(jí)了系統(tǒng)對(duì)常見絕大多數(shù)影音 文件和流的支持,包括 :RealMedia、QuickTime、MPEG2、MPEG4 (ASP/AVC)、VP3/6/7、Indeo、FLV 等流行視頻格式; AC3/DTS/LPCM/AAC/OGG/MPC/APE/FLAC/TTA/WV 等流行音頻格式; 3GP/Matroska/MP4/OGM/PMP/XVD 等媒體封裝及字幕支持等。暴風(fēng)影音 采用 NSIS 封裝,為標(biāo)準(zhǔn)的 Windows 安裝程序,特點(diǎn)是單文件多語種 (目前為簡體中文 + 英文),具有穩(wěn)定靈活的安裝、卸載、維護(hù)和修復(fù)功能, 并對(duì)集成的解碼器組合進(jìn)行了盡可能的優(yōu)化和兼容性調(diào)整,適合普通的大多 數(shù)以多媒體欣賞或簡單制作為主要使用需求的用戶 。 在兼容問題上,暴風(fēng)影音和一些軟件部相容,但問題不大,可以解決, 但是要用戶自己解決。比如 安裝暴風(fēng)影音后,麗臺(tái)電視卡無法使用,解決也 很簡單,下載安裝該電視卡全套的最新版本驅(qū)動(dòng)和電視播放軟件即可(注意 僅僅驅(qū)動(dòng)是不行的,一定要包括播放軟件 );播放 AVI 的時(shí)候畫面出錯(cuò)或 CPU 占有率奇高 解決方案:通常是解碼器兼容問題 ;等等,雖然有點(diǎn) 麻煩,但可以解決。 從以上簡單的介紹可以看出,暴風(fēng)影音整體還是個(gè)很強(qiáng)大,很好用的播 放器。單個(gè)人看來,它仍然有一些問題。暴風(fēng)影音截止到現(xiàn)在版本已經(jīng)升級(jí) 很多次了,幾乎每次升級(jí)都添加了新功能,優(yōu)化了某些功能,修正個(gè)別 bug,到現(xiàn)在暴風(fēng)能播放幾百種格式的媒體文件,功能龐大。這些看似很好, 但是對(duì)于一般用戶來說看電影聽音樂看網(wǎng)上視頻能使用幾種格式的文件,甚 至有部分用戶不能上網(wǎng),對(duì)于這些用戶來說絕大部分的功能是白費(fèi)了,浪費(fèi) 資源而已。 1.2.2 風(fēng)雷影音 功能特色:獨(dú)創(chuàng)雙播放內(nèi)核,更快速、更清晰、更流暢 ,國內(nèi)首家獨(dú)創(chuàng) 真正雙播放內(nèi)核影音播放器,聚合MPlayer 和 MPC 強(qiáng)大優(yōu)勢(shì)功能,實(shí)現(xiàn) 快速解碼,挑戰(zhàn)最快 播放極限,播放影片更快速、更清晰、更流暢 ;全面支持高清影片播放 (無 2010 本科畢業(yè)設(shè)計(jì)論文 需安裝第三方軟件 ),從 2.1 版本起,全面支持高清影片播放,且無需另外 安裝第三方軟件,全面支持 HD-DVD/BD-DVD、VC-1、EAC3、EVO、TS 、TP、MKV 等高清格式影片 ;獨(dú)創(chuàng)高清智能連接技術(shù)、 VC-1 智能橋接技 術(shù)、啟用顯卡硬解功能,充分發(fā)揮顯卡硬解MPEG2,讓高清播放更流暢 ;播放 206 種影音格式;多分層過濾解碼,全面提升影片兼容播放 ,在雙 播放內(nèi)核的基礎(chǔ)上采用多分層過濾解碼,保證不同格式不同編碼的影片都能 找到對(duì)應(yīng)的分離器和解碼器并順暢播放,大大提升了影片播放的兼容性; 智能連續(xù)劇播放 ,智能連續(xù)劇識(shí)別,無需多次選擇播放連續(xù)劇影片,自動(dòng)連 續(xù)劇播放,讓您不間斷欣賞影片更順暢、更舒心 ;跳過連續(xù)劇片頭 /片尾, 在播放連續(xù)劇影片時(shí),可以通過按 F9/F10 來設(shè)置跳過連續(xù)劇的片頭 /片 尾,讓劇情播放無縫連接 ,等等。 從上述功能(并不完全,只是介紹一下特色功能)可以看出,風(fēng)雷影音 也是個(gè)很不錯(cuò)的播放器,特別是其在雙播放內(nèi)核、高清影音上別具特色。但 是對(duì)于部分在網(wǎng)上看視頻的用戶來說有一點(diǎn)缺陷,它不支持在線播放(只 提供對(duì) firefox 瀏覽器進(jìn)行常見流格式的在線播放支持插件 ) 。 1.2.3 幾種常見格式簡介 MPEGMPEG 格式:格式:它的英文全稱為 Moving Picture Expert Group,即運(yùn)動(dòng)圖像 專家組格式,家里??吹?VCD、SVCD、DVD 就是這種格式。MPEG 文件格式是運(yùn) 動(dòng)圖像壓縮算法的國際標(biāo)準(zhǔn),它采用了有損壓縮方法減少運(yùn)動(dòng)圖像中的冗余信 息,說的更加明白一點(diǎn)就是 MPEG 的壓縮方法依據(jù)是相鄰兩幅畫面絕大多數(shù)是相 同的,把后續(xù)圖像中和前面圖像有冗余的部分去除,從而達(dá)到壓縮的目的(其最 大壓縮比可達(dá)到 200:1)。目前 MPEG 格式有三個(gè)壓縮標(biāo)準(zhǔn),分別是 MPEG1、MPEG2、和 MPEG4。 AVI 格格式式:音頻視頻交錯(cuò) (Audio Video Interleaved)的英文縮寫。 AVI 這個(gè)由微軟公司發(fā)表的視頻格式在視頻領(lǐng)域已經(jīng)存在好幾個(gè)年頭了。AVI 格式調(diào)用方便、圖像質(zhì)量好,但缺點(diǎn)就是文件體積過于龐大,壓縮標(biāo)準(zhǔn)不統(tǒng) 一。 RMRM 格式:格式:Networks 公司所制定的音頻視頻壓縮規(guī)范稱之為 Real Media, 用戶可以使用 RealPlayer 或 RealOne Player 對(duì)符合 RealMedia 技術(shù)規(guī)范的網(wǎng) 絡(luò)音頻/視頻資源進(jìn)行實(shí)況轉(zhuǎn)播,并且 RealMedia 還可以根據(jù)不同的網(wǎng)絡(luò)傳輸速 率制定出不同的壓縮比率,從而實(shí)現(xiàn)在低速率的網(wǎng)絡(luò)上進(jìn)行影像數(shù)據(jù)實(shí)時(shí)傳送 和播放。這種格式的另一個(gè)特點(diǎn)是用戶使用 RealPlayer 或 RealOne Player 播 放器可以在不下載音頻/視頻內(nèi)容的條件下實(shí)現(xiàn)在線播放。 RMVBRMVB 格式:格式:這是一種由 RM 視頻格式升級(jí)延伸出的新視頻格式,它的先進(jìn) 之處在于 RMVB 視頻格式打破了原先 RM 格式那種平均壓縮采樣的方式,在保證 平均壓縮比的基礎(chǔ)上合理利用比特率資源,就是說靜止和動(dòng)作場(chǎng)面少的畫面場(chǎng) 2010 本科畢業(yè)設(shè)計(jì)論文 景采用較低的編碼速率,這樣可以留出更多的帶寬空間,而這些帶寬會(huì)在出現(xiàn) 快速運(yùn)動(dòng)的畫面場(chǎng)景時(shí)被利用。這樣在保證了靜止畫面質(zhì)量的前提下,大幅地 提高了運(yùn)動(dòng)圖像的畫面質(zhì)量,從而圖像質(zhì)量和文件大小之間就達(dá)到了微妙的平 衡 W WM MV V 格格式式:一種獨(dú)立于編碼方式的在 Internet 上實(shí)時(shí)傳播多媒體的技術(shù) 標(biāo)準(zhǔn),Microsoft 公司希望用其取代 QuickTime 之類的技術(shù)標(biāo)準(zhǔn)以及 WAV、AVI 之類的文件擴(kuò)展名。 WMV 的主要優(yōu)點(diǎn)在于:可擴(kuò)充的媒體類型、 本地或網(wǎng)絡(luò)回放、可伸縮的媒體類型、流的優(yōu)先級(jí)化、多語言支持、擴(kuò)展性 等。 W WM MA A 格格式式:WMA 的全稱是 Windows Media Audio,是微軟力推的一種 音 頻格式。WMA 格式是以減少數(shù)據(jù)流量但保持音質(zhì)的方法來達(dá)到更高的壓縮率 目的,其壓縮率一般可以達(dá)到 1:18,生成的文件大小只有相應(yīng) MP3 文件的 一半。這對(duì)只裝配 32M 的機(jī)型來說是相當(dāng)重要的,支持了WMA 和 RA 格式, 意味著 32M 的空間在無形中擴(kuò)大了 2 倍。此外, WMA 還可以通過 DRM(Digital Rights Management)方案加入防止拷貝,或者加入限制播放 時(shí)間和播放次數(shù),甚至是播放機(jī)器的限制,可有力地防止盜版。 MP3MP3 格式:格式: MP3 具有不錯(cuò)的壓縮比,使用 LAME 編碼的中高碼率的 mp3,聽 感上已經(jīng)非常接近源 WAV 文件。使用合適的參數(shù),LAME 編碼的 MP3 很適合于音 樂欣賞。由于 MP3 推出年代已久,加之不錯(cuò)的音質(zhì)及壓縮比,不少游戲也使用 mp3 作事件音效和背景音樂。幾乎所有著名的音頻編輯軟件也提供了對(duì) MP3 的 支持,可以將 mp3 像 wav 一樣使用,但由于 mp3 編碼是有損的,因此多次編輯 后,音質(zhì)會(huì)急劇下降,mp3 并不適合保存素材,但作為作品的 demo 確實(shí)相當(dāng)優(yōu) 秀的。mp3 長遠(yuǎn)的歷史和不錯(cuò)的音質(zhì),使之成為應(yīng)用最廣的有損編碼之一,網(wǎng) 絡(luò)上可以找到大量的 mp3 資源,mp3player 日漸成為一種時(shí)尚。不少 VCD Player、DVD Player 甚至手機(jī)都可以播放 mp3,mp3 是被支持的最好的編碼之 一。MP3 也并非完美,在較低碼率下表現(xiàn)不好。MP3 也具有流媒體的基本特征, 可以做到在線播放。 其音質(zhì)好,壓縮比比較高,被大量軟件和硬件支持,應(yīng)用 廣泛。適用于比較高要求的音樂欣賞。 1.3 相關(guān)技術(shù)及開發(fā)工具介紹 本系統(tǒng)采用面向?qū)ο蟮能浖_發(fā)辦法,以 Microsoft 公司的可視化集成開 發(fā)環(huán)境 Visual Studio .Net 作為開發(fā)平臺(tái),以 C#作為開發(fā)語言實(shí)現(xiàn)預(yù)定的需 求功能。 1.3.1 Visual Studio .Net 集成開發(fā)環(huán)境簡介 .Net 是 Microsoft XML Web services 平臺(tái)。.Net 平臺(tái)為創(chuàng)建新一代分布 2010 本科畢業(yè)設(shè)計(jì)論文 式 Web 應(yīng)用提供了所有的工具和技術(shù)(表示技術(shù)、構(gòu)件技術(shù)和數(shù)據(jù)庫技術(shù)) 。 它支持標(biāo)準(zhǔn)的 Internet 協(xié)議,包括 HTTP 協(xié)議、XML(可擴(kuò)展標(biāo)記語言)和 SOAP(簡單對(duì)象訪問協(xié)議) ,從而實(shí)現(xiàn)了異構(gòu)系統(tǒng)間應(yīng)用程序的集成和通信。 .Net 平臺(tái)包括 5 個(gè)主要部分: Windows .Net .Net 企業(yè)級(jí)服務(wù)器 .Net Web 服務(wù)構(gòu)件 .Net Framework Visual Studio .Net Visual Studio .Net 是為建立基于.Net Framework 應(yīng)用程序而設(shè)的一個(gè) 可視化集成開發(fā)環(huán)境(Integrated Development Enviroment,IDE) 。它提供了 更優(yōu)秀的多種編譯語言的編輯和編譯統(tǒng)一的開發(fā)平臺(tái),他是一個(gè)快速開發(fā)企業(yè) 級(jí) Web 應(yīng)用程序以及高性能桌面應(yīng)用的工具。它為所有的編程語言提供了簡單 統(tǒng)一的代碼編輯器,包括 XML 編輯器、HTML 編輯器、SQL Server 接口、以圖形 化的方法設(shè)計(jì)服務(wù)器構(gòu)件的設(shè)計(jì)器、監(jiān)控遠(yuǎn)程機(jī)器的 Server Explorer??梢?說,VisualStdio .Net 集中了建立分布式應(yīng)用所需的功能。使用此集成開發(fā)工 具而不是用 SDK 編輯 C#程序有以下主要原因: IDE 支持首行縮進(jìn),切 c#程序的關(guān)鍵字等可用不同的顏色直觀表示,以 便檢查。 IDE 的語法導(dǎo)航功能可實(shí)現(xiàn)動(dòng)態(tài)查找、提示編輯工程中的錯(cuò)誤。 便于開發(fā) Windows 應(yīng)用程序。可以像 Visual Basic 一樣直接拖放控件 來“繪制”Windows 窗體。 結(jié)合我要編寫的程序播放器可知使用此集成開發(fā)環(huán)境更方便高效。 1.3.2 C#語言簡介 C#是一種現(xiàn)代的、面向?qū)ο蟮恼Z言,它結(jié)合了 C/C+和 Visual C+的強(qiáng)大 功能以及 Visual Basic 的簡單易用性。C#有以下新特性: 簡單。C#做了些該進(jìn),使語言更簡單。 面向?qū)ο蟆#支持面向?qū)ο蟮娜N編程原則:封裝、繼承和多態(tài)。 類型安全。C#去掉了指針,從根本上保證了程序的穩(wěn)定性和類型安全。 版本控制。C#實(shí)現(xiàn)了版本技術(shù),避免了“DLL 災(zāi)難” 。 兼容性。C#允許在遵守.Net Framework CLS 的條件下訪問不同的 API,可以與 Windows 的幾種傳統(tǒng)服務(wù)交互。 靈活性。C#允許聲明一些不安全的方法和類,從而使用指針、結(jié)構(gòu)和 靜態(tài)數(shù)組。 總之,C#是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,由C 和 C+衍生 2010 本科畢業(yè)設(shè)計(jì)論文 出來的面向?qū)ο蟮木幊陶Z言。它在繼承C 和 C+強(qiáng)大功能的同時(shí)去掉了一 些它們的復(fù)雜特性(例如沒有宏和模版,不允許多重繼承) 。C#綜合了 VB 簡單的可視化操作和 C+的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語法 風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET 開發(fā)的首選 語言。 1.3.3 DirectX SDK 9.0 簡介 Direct X 其實(shí)是微軟公司推出的一個(gè)為 Windows 平臺(tái)的多媒體 API 函數(shù)庫, 它提供標(biāo)準(zhǔn)接口來與顯卡和聲卡、輸入設(shè)備等進(jìn)行交互。它可以讓 windows 為 平臺(tái)的游戲或多媒體程序獲得更高的執(zhí)行效率,加強(qiáng)3d 圖形和聲音效果, 并提供設(shè)計(jì)人員一個(gè)共同的硬件驅(qū)動(dòng)標(biāo)準(zhǔn),讓游戲開發(fā)者不必為每一品牌的 硬件來寫不同的驅(qū)動(dòng)程序,也降低用戶安裝及設(shè)置硬件的復(fù)雜度。如果沒 有這組標(biāo)準(zhǔn) API 函數(shù)庫,那你就需要為每一種顯卡、聲卡的每個(gè)組合和每種類 型的鍵盤、鼠標(biāo)和游戲桿編寫不同的代碼。DirectX 從具體的硬件中抽象出來, 并且將一組通用指令轉(zhuǎn)換成硬件的具體命令。這樣開發(fā)語言通過調(diào)用統(tǒng)一標(biāo)準(zhǔn) 的 Direct X 函數(shù)庫就可以操作每一種顯卡、聲卡的每個(gè)組合和每種類型的鍵盤、 鼠標(biāo)和游戲桿等多媒體了。 Direct X SDK 9.0 安裝及類庫介紹:.net Framework SDK 中并沒有包含 Direct X SDK,所以為了順利的完成本文后面介紹,必須先下載、安裝 Direct X SDK。安裝完 Direct X 后,就會(huì)在存在“C:WINDOWSMicrosoft.NETManaged DirectX“這樣一個(gè)目錄,此目錄中目錄中應(yīng)該有九個(gè) DLL 文件和九個(gè) XML 文件。 九個(gè) DLL 文件大致對(duì)應(yīng)于 DirectX 中的十個(gè)命名空間。編程中就是使用其中的 命名空間來提供對(duì)輸入設(shè)備、聲音、網(wǎng)絡(luò)播放、圖形等的支持。而開發(fā)本播放 器的程序中只使用了命名空間“Microsoft.DirectX.AudioVideoPlayback”和 “Microsoft.DirectX.DirectSound”。Microsoft.DirectX.AudioVideoPlayback 命名空間主要就是支持播放音頻和視頻文件。 Microsoft.DirectX.AudioVideoPlayback 命名空間中定義了三個(gè)類: “Audio“、“Video“和“TextureRenderEventArgs“。其中前兩個(gè)類是最常用的, 分別用來支持音頻和視頻。本軟件開發(fā)使用的也是前兩個(gè)類。 下表就是本程序使用的 Microsoft.DirectX.AudioVideoPlayback 命名空間 中定義的屬性及其具體的作用: 屬性描述 Audio 獲取視頻文件中的音頻對(duì)象,可用來后續(xù)的音頻播放 Caption獲取或設(shè)置在 Form 上播放視頻的名稱 CurrentPosition獲取或設(shè)置播放視頻的當(dāng)前位置 2010 本科畢業(yè)設(shè)計(jì)論文 DefaultSize獲取播放視頻的缺省的視頻大小 Fullscreen 獲取或設(shè)置視頻文件是否在全屏模式下播放 Owner 獲取或設(shè)置視頻播放的宿主組件 Paused獲取當(dāng)前的播放狀態(tài)是否處于暫停狀態(tài) Playing獲取當(dāng)前的播放狀態(tài)是否處于播放狀態(tài). Size獲取或設(shè)置播放視頻的大小 State獲取當(dāng)前的播放狀態(tài) Stopped 獲取當(dāng)前的播放狀態(tài)是否處于停止?fàn)顟B(tài) StopPosition獲取播放的視頻的停止播放位置 表一 下表是本程序使用的 Microsoft.DirectX.AudioVideoPlayback 命名空間中定 義的方法及其具體的作用: 方法描述 Open 裝入新的文件到 Video 對(duì)象中 Pause設(shè)置為暫停播放狀態(tài). Play設(shè)置為播放狀態(tài) SeekCurrentPosition搜索轉(zhuǎn)入到制定的播放位置 SeekStopPosition設(shè)置一個(gè)新的停止位置 Stop設(shè)置為停止播放狀態(tài) Video初始化一個(gè)新的 Video 實(shí)例 表二 Microsoft.DirectX.DirectSound 命名空間主要提供對(duì)聲音的支持。在這個(gè)命 名空間中我們只使用了 SecondaryBuffer 類,此類包含用于管理起支持作用的 聲音緩沖器的方法和屬性。 了解了以上和本程序有關(guān)的基礎(chǔ)知識(shí)及開發(fā)本程序鎖使用的有關(guān)技術(shù)后,下面開始介 紹本程序的具體功能和實(shí)現(xiàn)方法。 2010 本科畢業(yè)設(shè)計(jì)論文 第二章 總體功能設(shè)計(jì)與實(shí)現(xiàn) 在第一章中分析了播放器的功能需求及常見的視頻音頻編碼格式,還有編 寫本程序使用的技術(shù)、工具等。那么從本章開始介紹本程序的功能設(shè)計(jì)與實(shí)現(xiàn), 本文將使用第一章中的技術(shù)等從功能設(shè)計(jì)、功能實(shí)現(xiàn)兩方面重點(diǎn)介紹。 2.1 功能設(shè)計(jì) 參考上一章中介紹的播放器的功能,對(duì)其功能進(jìn)行整理篩選,去掉那些華而不實(shí)或基 本無用的功能,保留最實(shí)用最常用的功能,整合編寫成本播放器。下面開始主要介紹本播 放器的功能設(shè)計(jì)及描述、功能模塊圖等。 2.1.1 功能設(shè)計(jì)及描述 本播放器的主要任務(wù)和目的是播放一些常見的音頻視頻格式文件,達(dá)到功 能簡潔方便,消耗資源少而又不影響日常娛樂的需求。其主要?jiǎng)澐譃橄旅媪鶄€(gè) 功能模塊,每個(gè)功能模塊的作用描述如下: 文件控制;主要用于打開播放文件,本程序支持的格式主要是 rmvb、rm、avi、mpeg(mpg) 、wmv 視頻格式和 MP3、wma、wav 音 頻格式,還有管理播放列表:建立或刪除播放列表。 播放控制;控制視頻或音頻的播放狀態(tài)。播放狀態(tài)有播放、暫停、停止 三種狀態(tài)。還有切換視頻(音頻) ,就是播放當(dāng)前視頻(音頻)的前一 個(gè)視頻(音頻)或后一個(gè)視頻(音頻) 。播放過的視頻(音頻)按播放 順序自動(dòng)顯示在當(dāng)前默認(rèn)的播放列表中,默認(rèn)的播放列表對(duì)播放過的記 錄不進(jìn)行保存,就是在關(guān)閉、重啟播放器后以前的播放記錄被清空。 進(jìn)度控制;顯示當(dāng)前視頻(音頻)的總長度和已播放的長度,可以使用 鼠標(biāo)拖放進(jìn)度條,跳躍式快速播放。顯示是通過時(shí)間和進(jìn)度條兩方面同 步顯示的。 聲音控制;調(diào)整音量的大小,顯示是否靜音;調(diào)整聲音的聲道為左聲道、 右聲道或正常。 顯示控制;若播放的是視頻文件則顯示圖像,可以調(diào)整屏幕是否為全屏, 是否鋪滿屏幕或按原始比例播放,也可以使用鼠標(biāo)拖動(dòng)調(diào)整屏幕大小, 本播放器對(duì)屏幕有最小范圍規(guī)定(非最小化) ,就是小到一定程度時(shí)屏 幕不能再縮小。最大屏幕為最大化(全屏除外) 。 系統(tǒng)說明;關(guān)于()說明,提示說明本播放器的一些信息,比如 播放器能播放的格式,播放器的開發(fā)人開發(fā)時(shí)間等。 2010 本科畢業(yè)設(shè)計(jì)論文 2.1.2 功能模塊圖 其具體功能模塊圖如下: 2.2 功能實(shí)現(xiàn) 2.2.1 主界面實(shí)現(xiàn) 本節(jié)主要講述如何根據(jù)上述的功能模塊圖實(shí)現(xiàn)具體的功能。 下圖一為本播放器的原始界面,由 Visual Studio 中已安裝模板 Windows 應(yīng) 用窗體程序(winform)生成,所用的控件、組件、容器、菜單、工具欄、對(duì)話 框等都是有 Winform 提供(如果所要使用的控件等沒有提供,則需個(gè)人編寫) 。 其中圖片可以自己繪制,組件、控件等可用自己編寫代碼做成最適合自己要求 的,這樣做出來的東西色彩比較統(tǒng)一,界面比較美觀大方,但那樣做相當(dāng)?shù)穆?煩,特別是編寫新的組件、控件等有很多困難。編寫本程序由于時(shí)間有限,圖 播放器 聲音控制 播放控制 進(jìn)度控制 文件控制 顯示控制 系統(tǒng)說明 打開文件 播放列表 播放 / 暫停 停止 上 / 下一個(gè) 拖動(dòng)調(diào)整 顯示進(jìn)度 音量調(diào)整 聲道調(diào)整 顯示圖像 調(diào)整屏幕 關(guān)于 左聲道 右聲道 正常 全屏 拖動(dòng)調(diào)整 2010 本科畢業(yè)設(shè)計(jì)論文 片是下載的,所以在美觀上有所欠缺。以后如有時(shí)間,另行繪制。由于界面是 控件、組件等拖放組成,大部分代碼有窗體設(shè)計(jì)器自動(dòng)生成,需個(gè)人改動(dòng)的并 不多,所用這部分就不詳細(xì)說明了,只把主窗體 MainForm 的代碼示下。 圖一 / MainForm this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.Color.Black; this.ClientSize = new System.Drawing.Size(555, 373); this.Controls.Add(this.playListBox); this.Controls.Add(this.controlPanel); this.Controls.Add(this.playScreen); this.Controls.Add(this.menuStrip); this.Icon = (System.Drawing.Icon)(resources.GetObject(“$this.Icon“); this.MainMenuStrip = this.menuStrip; this.MinimumSize = new System.Drawing.Size(560, 389); this.Name = “MainForm“; this.Text = “久久影音“; this.Resize += new System.EventHandler(this.MainFormResize); this.menuStrip.ResumeLayout(false); this.menuStrip.PerformLayout(); this.controlPanel.ResumeLayout(false); this.controlPanel.PerformLayout(); 2010 本科畢業(yè)設(shè)計(jì)論文 (System.ComponentModel.ISupportInitialize)(this.pauseButton).EndInit(); (System.ComponentModel.ISupportInitialize)(this.pictureBoxCenter).EndInit(); (System.ComponentModel.ISupportInitialize)(this.pictureBoxRight).EndInit(); (System.ComponentModel.ISupportInitialize)(this.pictureBoxLeft).EndInit(); (System.ComponentModel.ISupportInitialize)(this.pictureBoxFill).EndInit(); (System.ComponentModel.ISupportInitialize)(this.movieTrack).EndInit(); this.ResumeLayout(false); this.PerformLayout(); 2.2.2 文件控制的實(shí)現(xiàn) 打開文件的功能是許多應(yīng)用程序的一個(gè)常見任務(wù)。Windows Forms 命名空 間包含了一組常用對(duì)話框,支持這些類型的活動(dòng)。在本程序中我們使用的是 OpenFileDialog 類,OpenFileDialog 類表示常用的文件對(duì)話框,用于從磁盤上加 載一個(gè)或多個(gè)文件,是用于打開現(xiàn)有文件的標(biāo)準(zhǔn)類。Filter 屬性定義了這個(gè)對(duì)話 框可用看到的文件類型列表,本程序中它來顯示可用播放的文件列表。部分實(shí) 現(xiàn)代碼如下: OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = “Movies (*.avi, *.mpg(mpeg), *.wmv,*.rmvb,*.rm,*.mp3,*.wma) |*.avi;*.mpg;*.wmv;*.rmvb;*.rm;*.mp3;*.wma|All files (*.*)|*.*“; dlg.InitialDirectory = “C:“; dlg.RestoreDirectory = false; dlg.Title = “打開“; if (dlg.ShowDialog() = DialogResult.OK) /如果存在已播放的Video,釋放它 if(MyVideo != null ) MyVideo.Dispose(); PlayTheMovie(dlg.FileName); Windows 窗體 ListView 控件顯示了帶圖標(biāo)的項(xiàng)的列表??墒褂昧斜硪晥D 創(chuàng)建類似于 Windows 資源管理器右窗格的用戶界面。該控件有四種視圖模式, “LargeIcon”、 “SmallIcon”、 “List”和“Details”。本播放器的播放列表就是使 用 ListView 控件建立,使用的是列表視圖模式(List 模式)顯示小圖標(biāo),總 是顯示在單列中。見下圖二。 當(dāng)播放視頻(音頻)時(shí),視頻(音頻)會(huì)自動(dòng)顯示在默認(rèn)的播放列表中, 代碼如下,這行代碼出現(xiàn)在播放函數(shù)中: playListView.Items.Add(theMovieName); 創(chuàng)建播放列表其實(shí)就是創(chuàng)建一個(gè)包含想要播放的視頻(音頻)名稱的文件, 然后在這個(gè)文件中添加或刪除視頻(音頻),這里使用的是 File 類中 Create 2010 本科畢業(yè)設(shè)計(jì)論文 方法。其部分代碼如下: string path = “c:久久影音MyPlayList.txt“; if (File.Exists(path) File.Delete(path); using (FileStream fs = File.Create(path) Byte info = new UTF8Encoding(true).GetBytes(“This is some text in the file.“); 圖二 2.2.3 播放控制的實(shí)現(xiàn) 播放才是一個(gè)播放器最重要的功能。由上章可知 Microsoft.DirectX.AudioVideoPlayback 命名空間中定義的屬性和方法為這塊功能 的實(shí)現(xiàn)提供了很大的便利,比如播放、暫停、停止函數(shù)都有提供,詳見上一章 表一表二。但是在調(diào)用這些函數(shù)之前還有很多工作需要做。參照下面播放函數(shù) PlayTheMovie(string theMovie)部分代碼進(jìn)行分析: string theMovieName = theMoive; initialClientWidth = this.ClientSize.Width; /獲取窗體工作區(qū)的寬度 VideoDefaultSize = MyVideo.DefaultSize; /獲取Video的缺省的視頻大小 int width = Math.Max(VideoDefaultSize.Width, initialClientWidth); /獲取 Video的缺省的寬度和窗體工作區(qū)的 寬度較大的一個(gè)值 int height = VideoDefaultSize.Height; /獲取 Video 的缺省的高度 2010 本科畢業(yè)設(shè)計(jì)論文 /重新設(shè)置播放視頻的視頻大小 if (width = 800) width = (int)(width * 0.55f); height = (int)(height * 0.55f); this.ClientSize = new Size(width, height + menuStrip.Height + controlPanel.Height); MyVideo.Owner = this.playScreen; 上面的代碼其實(shí)就是重新設(shè)置視頻和初始播放窗口的大小。剛啟動(dòng)播放器 時(shí)播放窗口(整個(gè)播放器界面)是固定大小的(見圖一),但加載視頻以后,播 放窗口的大小被設(shè)置為和視頻的缺省值(MyVideo.DefaultSize)一樣。經(jīng)過 DirectX解碼后的視頻缺省和播放窗口(Owner)的大小并不一樣大,有的比播 放窗口小,大部分比播放窗口大,甚至比播放窗口大的多,這時(shí)需要對(duì)視頻大 小進(jìn)行調(diào)整,按正常比例縮放適應(yīng)在設(shè)置好的播放窗口。 在本程序中,當(dāng)加載視頻后,獲取視頻缺省值的大?。▽捄透撸┖筒シ糯?口的寬度,然后比較并獲取視頻缺省的寬度和播放窗口寬度中較大的一個(gè) (width),大部分情況下是視頻的缺省寬度比較大,再把播放窗口的大小初始 化為視頻缺省高度(height)和width的0.55倍。這個(gè)倍率比較合適,使播放屏 幕不至太大或太小。見圖二、圖三。 有了合適的播放屏幕還不完整,因?yàn)榇藭r(shí)播放屏幕還不能任意調(diào)整大小, 視頻也不一定顯示在播放屏幕的中間。下面的mainFormResize事件調(diào)用就是解 決這個(gè)問題的,詳見顯示控制模塊中屏幕調(diào)整功能實(shí)現(xiàn)。下面這幾行代碼的作 用就是在上面設(shè)置好的播放窗口中把視頻顯示在播放屏幕的中間,并在播放器 的頂端顯示視頻的名稱及視頻格式。見圖二、圖三、圖四的頂端顯示。 If (playListView.Visible = true) mainFormResize(null, null); else MainFormResize(null, null); int LastIndex = theMovieName.LastIndexOf(”); theMovieName = theMovieName.Substring(LastIndex + 1, (theMovieName.Length LastIndex 1); this.Text = theMovieName; 在播放視頻(音頻)過程中,我們都期望能看到視頻的總長度以及已經(jīng)播 放的長度。本程序中我們是使用movieTimer組件計(jì)時(shí)的。視頻的總長度是死的, 我們只需調(diào)用Video的屬性Duration即可知道視頻的總長度,然后把其轉(zhuǎn)換為 string格式顯示即可。見圖二。代碼如下: /顯示視頻的總長度(總時(shí)間) MovieDuration = (int)MyVideo.Duration; 2010 本科畢業(yè)設(shè)計(jì)論文 hours = MovieDuration / 3600; minutes = (MovieDuration - hours * 3600) / 60; seconds = (MovieDuration - hours * 3600 - minutes * 60); string hHour = (“00“ + hours.ToString(); hHour = hHour.Substring(hHour.Length -2, 2); string mMinute = (“00“ + minutes.ToString(); mMinute = mMinute.Substring(mMinute.Length - 2, 2); string sSecond = (“00“ + seconds.ToString(); sSecond = sSecond.Substring(sSecond.Length - 2, 2); movieDuration = hHour + “:“ + mMinute + “:“ + sSecond; totalTime.Text = “/“ + movieDuration; MyVideo.Play(); movieTimerEnabled = true; movieTimer.Start(); movieTrack.Value = 0; pauseButton.Visible = false; playListView.Items.Add(theMovieName); 上面幾行代碼則是調(diào)用函數(shù),開始播放、計(jì)時(shí),進(jìn)度條開始移動(dòng),并把視 頻名稱添加到播放列表里。 視頻的總長度很好計(jì)算、顯示,但是視頻當(dāng)前長的需要另行計(jì)算。視頻當(dāng) 前長度的計(jì)算、顯示和總長度的計(jì)算、顯示很相似,只是調(diào)用的屬性不同而已。 這里我們調(diào)用的是 CurrentPosition 屬性,此屬性是用來獲取活設(shè)置播放的當(dāng) 前位置。另外視頻的當(dāng)前長度和進(jìn)度條也是同步顯示,這部分功能則需要另外 算法。先獲取視頻的總長度;然后獲取視頻的總長部和進(jìn)度條長度 (movieTrack.Maximum)的比值,表示進(jìn)度條單位長度上的視頻長度;再用當(dāng) 前視頻長度比上這個(gè)比值就得到當(dāng)前視頻長度對(duì)應(yīng)的進(jìn)度條長度,把其賦值給 Value 顯示出即可。分代碼如下: float calibrationTime; MovieDuration = (int)MyVideo.Duration; calibrationTime = (float)(float)MovieDuration / (float)movieTrack.Maximum); MovieCurrentPosition = (int)MyVideo.CurrentPosition; movieTrack.Value = (int)(MovieCurrentPosition / calibrationTime); 至于播放、暫停、停止功能則很容易實(shí)現(xiàn),這些功能實(shí)現(xiàn)所使用的函數(shù)在 Microsoft.DirectX.AudioVideoPlayback 命名空間中都有提供,詳細(xì)情況請(qǐng)參 看上一章。 在本程序中,這三個(gè)功能分別有三個(gè)按鈕,其中播放、暫停按鈕是重疊在 一起的,當(dāng)視頻處在其中一個(gè)狀態(tài)時(shí),另一個(gè)狀態(tài)的按鈕就隱藏不顯示。見圖 二、圖三下面按鈕區(qū)。這三個(gè)功能分別是使用三個(gè)Button事件實(shí)現(xiàn)的:對(duì)于播 放、暫停功能先判斷視頻是否為空,為空則各功能按鈕不可交互(Enabled;鼠 標(biāo)點(diǎn)擊無反應(yīng)),不為空時(shí)若點(diǎn)擊暫停按鈕時(shí),觸發(fā)播放事件,終止暫停開始 2010 本科畢業(yè)設(shè)計(jì)論文 播放,顯示播放按鈕標(biāo)志,若點(diǎn)擊播放按鈕時(shí)觸發(fā)暫停事件終止暫停開始暫停, 顯示暫停按鈕;對(duì)于停止功能則先判斷視頻是否為空,為空各功能按鈕不可交 互,不為空則判斷視頻是否處于停止?fàn)顟B(tài),若停止?fàn)顟B(tài)(Stopped)停止按鈕不 可交互,非停止?fàn)顟B(tài)才可點(diǎn)擊停止按鈕,觸發(fā)停止事件,調(diào)用停止函數(shù) (Stop()。 這部分功能在菜單項(xiàng)中“播放”的下拉菜單中也有實(shí)現(xiàn),實(shí)現(xiàn)方式很相似, 只是播放、暫停功能實(shí)現(xiàn)多了一道步驟:先判斷視頻的狀態(tài),播放(Playing) 還是暫停(Paused)狀態(tài),然后才是根據(jù)不同狀態(tài)調(diào)用不同函數(shù)。這部分功能 亦設(shè)有快捷鍵,暫停/播放的快捷鍵是Alt+空格鍵,停止的快捷鍵是Ctrl+S。 下面只舉一個(gè)暫停功能實(shí)現(xiàn)的代碼例子(這是點(diǎn)擊播放按鈕時(shí)執(zhí)行的代碼) ,其部分代碼如下: if (MyVideo != null) pauseButton.Enabled = true; playButton.Enabled = false; MyVideo.Pause(); pauseButton.Visible = true; playButton.Visible = false; 至于實(shí)現(xiàn)播放當(dāng)前視頻的上一個(gè)下一個(gè)視頻已不難。先判斷當(dāng)前視頻在其 所在的播放列表里是否第一個(gè)或最后一個(gè),若是第一個(gè)則不能播放其上一個(gè), 若是最后一個(gè)則不能播放其下一個(gè),否則把當(dāng)前

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論