![音視頻采集系統(tǒng)的設(shè)計(jì)論文_第1頁(yè)](http://file4.renrendoc.com/view/4c8e52a1e4bd5fcd6f5ece8b17b331f1/4c8e52a1e4bd5fcd6f5ece8b17b331f11.gif)
![音視頻采集系統(tǒng)的設(shè)計(jì)論文_第2頁(yè)](http://file4.renrendoc.com/view/4c8e52a1e4bd5fcd6f5ece8b17b331f1/4c8e52a1e4bd5fcd6f5ece8b17b331f12.gif)
![音視頻采集系統(tǒng)的設(shè)計(jì)論文_第3頁(yè)](http://file4.renrendoc.com/view/4c8e52a1e4bd5fcd6f5ece8b17b331f1/4c8e52a1e4bd5fcd6f5ece8b17b331f13.gif)
![音視頻采集系統(tǒng)的設(shè)計(jì)論文_第4頁(yè)](http://file4.renrendoc.com/view/4c8e52a1e4bd5fcd6f5ece8b17b331f1/4c8e52a1e4bd5fcd6f5ece8b17b331f14.gif)
![音視頻采集系統(tǒng)的設(shè)計(jì)論文_第5頁(yè)](http://file4.renrendoc.com/view/4c8e52a1e4bd5fcd6f5ece8b17b331f1/4c8e52a1e4bd5fcd6f5ece8b17b331f15.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
聊城大學(xué)本科畢業(yè)論文(設(shè)計(jì))目錄前言 31.系統(tǒng)的方案選擇與論證 41.1音頻部分 41.2圖像顯示部分 42.系統(tǒng)的總體設(shè)計(jì) 43.系統(tǒng)的硬件設(shè)計(jì) 53.1cortexA8實(shí)驗(yàn)儀概述 53.2USB2.0HOST接口 63.3串口 73.4攝像頭 83.5音頻輸出接口和麥克風(fēng) 93.6液晶屏輸出接口 104系統(tǒng)的軟件設(shè)計(jì) 114.1軟件開(kāi)發(fā)平臺(tái) 114.1.1sourceinsight 114.1.2glade 124.2軟件設(shè)計(jì)概述 124.3系統(tǒng)主程序 124.4系統(tǒng)子程序 134.4.1錄音子程序 134.4.2拍照/錄像子程序 145設(shè)計(jì)創(chuàng)新 155.1創(chuàng)新之一 155.2創(chuàng)新之二 15結(jié)論 16參考文獻(xiàn) 17附錄 18致謝 50摘要本設(shè)計(jì)模擬手機(jī)的錄音、拍照、錄像功能,實(shí)現(xiàn)了音視頻數(shù)據(jù)的采集。使用cortexA8實(shí)驗(yàn)儀,通過(guò)話(huà)筒和攝像頭分別對(duì)聲音和圖像進(jìn)行采集。用話(huà)筒錄聲音,用喇叭播放聲音。用攝像頭實(shí)時(shí)顯示圖像,隨時(shí)可以拍照或錄制視頻,用液晶屏顯示拍下的圖片和錄下的視頻。完成了對(duì)音頻、視頻、圖片等數(shù)據(jù)的采集,轉(zhuǎn)換,存儲(chǔ)和應(yīng)用,整體上實(shí)現(xiàn)了數(shù)碼設(shè)備的娛樂(lè)功能[1]。關(guān)鍵詞:cortex;A8實(shí)驗(yàn)儀;話(huà)筒;攝像頭;液晶屏AbstractDesignsimulationmobilephonerecordings,photographs,videofunctions,toachievecollectionofaudioandvideodata.UsecortexA8experimentalinstrument,soundandimageswerecollectedbythemicrophoneandcamera.Recordsoundusingamicrophonewithspeakersplaythesound.Displaywithreal-timecameraimages,readytotakepicturesorrecordvideowiththeLCDdisplaycapturedimagesandrecordedvideos.Itcancollecttheaudio,video,photographs dataandtransformstorageandapply,whichrealizedtheentertainmentofdigitinstrument.KeywordscortexA8;experimental;instrument;microphone;camera;LCDscreen音視頻數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)前言隨著科學(xué)技術(shù)的飛速發(fā)展,越來(lái)越多的領(lǐng)域需要用到音視頻數(shù)據(jù)采集技術(shù),例如電視、電腦、視頻監(jiān)控,尤其是在手機(jī)數(shù)碼領(lǐng)域。拍照、聽(tīng)音樂(lè)、看視頻是現(xiàn)在的智能手機(jī)必不可少的功能,人們?cè)诠?jié)假日外出旅游的時(shí),可以隨時(shí)用手機(jī)拍下美麗的風(fēng)景,在業(yè)余時(shí)間可以用手機(jī)聽(tīng)聽(tīng)音樂(lè),看看電影。綜上可知,音視頻數(shù)據(jù)采集技術(shù)已經(jīng)應(yīng)用到人們?nèi)粘I畹姆椒矫婷鎇2]。本設(shè)計(jì)是音視頻數(shù)據(jù)采集,模擬手機(jī)的拍照、錄音、錄像功能,使用凌陽(yáng)公司提供的cortexA8實(shí)驗(yàn)儀,通過(guò)編寫(xiě)程序使實(shí)驗(yàn)儀的話(huà)筒進(jìn)行錄音,并用喇叭播放錄制的音頻,把攝像頭插到實(shí)驗(yàn)儀上,通過(guò)編寫(xiě)程序使攝像頭采集的圖像顯示在液晶屏上,并隨時(shí)可以進(jìn)行拍照。由自然音源通過(guò)采集電路(麥克風(fēng))得到的音頻信號(hào)是一種連續(xù)變化的模擬信號(hào)。但計(jì)算機(jī)只能處理和記載數(shù)字信號(hào)。音頻信號(hào)必須變換為數(shù)字信號(hào)之后,才能由計(jì)算機(jī)進(jìn)一步處理[3]。錄音時(shí),先設(shè)置好采樣頻率、采樣位數(shù)、聲道數(shù),再啟動(dòng)聲卡的AD芯片,將音頻的模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),最后將音頻對(duì)應(yīng)的數(shù)字信號(hào)存儲(chǔ)到文件中。放音時(shí)需要依據(jù)錄音時(shí)聲卡的采樣頻率、采樣位數(shù)、聲道數(shù)去設(shè)置聲卡,再將音頻的數(shù)字信號(hào)通過(guò)聲卡的DA芯片轉(zhuǎn)化為音頻對(duì)應(yīng)的模擬信號(hào)[4]。 視頻是連續(xù)漸變的靜態(tài)圖像沿時(shí)間軸依次更換顯示而形成的畫(huà)面。顯示圖像時(shí),若圖像每秒變化超過(guò)24次,根據(jù)余暉效應(yīng),此時(shí)人眼無(wú)法辨別單幅的靜態(tài)圖像,一張一張靜態(tài)的圖像看上去是連續(xù)的運(yùn)動(dòng)的。通過(guò)V4L2編程框架,內(nèi)核為應(yīng)用程序提供了訪(fǎng)問(wèn)音、視頻設(shè)備的統(tǒng)一接口。V4L2支持多種設(shè)備,其主要用于音頻的采集,視頻的輸入及輸出。在Linux中,通過(guò)V4L2接口操作視頻設(shè)備可以像訪(fǎng)問(wèn)普通文件一樣對(duì)設(shè)備文件進(jìn)行讀寫(xiě)[5]。本系統(tǒng)采用嵌入式技術(shù),控制精度和效率高,穩(wěn)定性好,操作方便,顯示直觀,很好的模擬了手機(jī)的拍照、錄音、錄像功能。1.系統(tǒng)的方案選擇與論證1.1音頻部分在此次設(shè)計(jì)中,對(duì)于音頻部分,音頻接口可以選用OSS或ALSA。方案一:采用OSS音頻接口來(lái)實(shí)現(xiàn)。OSS可移植性好,但具有聲卡獨(dú)占問(wèn)題,不支持混音。兩個(gè)基于OSS的應(yīng)用程序不能同時(shí)驅(qū)動(dòng)聲卡,也就沒(méi)法同時(shí)發(fā)出聲音。方案二:采用ALSA音頻接口來(lái)實(shí)現(xiàn)。ALSA具有聲卡共享的特性,支持混音,兼容OSS接口。兩個(gè)基于ALSA的不同應(yīng)用程序能同時(shí)驅(qū)動(dòng)聲卡,就是說(shuō)能同時(shí)發(fā)出聲音。ALSA是一個(gè)完全開(kāi)放源代碼的音頻驅(qū)動(dòng)程序集,除了像OSS那樣提供了一組內(nèi)核驅(qū)動(dòng)程序模塊之外,ALSA還專(zhuān)門(mén)為簡(jiǎn)化應(yīng)用程序的編寫(xiě)提供了相應(yīng)的函數(shù)庫(kù),與OSS提供的基于ioctl的原始編程接口相比,ALSA函數(shù)庫(kù)使用起來(lái)要更加方便一些[6]。利用該函數(shù)庫(kù),開(kāi)發(fā)人員可以方便快捷的開(kāi)發(fā)出自己的應(yīng)用程序,細(xì)節(jié)則留給函數(shù)庫(kù)內(nèi)部處理。綜合分析,采用方案二作為音頻部分的音頻接口。1.2圖像顯示部分方案一:通過(guò)幀緩沖顯示圖像。幀緩沖是Linux系統(tǒng)為顯示設(shè)備提供的一個(gè)接口,它允許應(yīng)用程序通過(guò)此接口訪(fǎng)問(wèn)圖形設(shè)備,而不需關(guān)心底層硬件的差異。幀緩沖把顯示設(shè)備描述成緩沖區(qū),往顯示緩沖區(qū)寫(xiě)入數(shù)據(jù),屏幕上會(huì)有相應(yīng)的顯示。但圖像的大小不能隨意修改。方案二:通過(guò)gtk顯示圖像。可以自由指定圖像的大小,將攝像頭輸出的rgb數(shù)據(jù)通過(guò)函數(shù)gtk_draw_rgb_image();加載到繪圖區(qū),可以指定繪圖區(qū)的大小,從而改變圖像的大小。綜合分析,采用方案二來(lái)顯示圖像。2.系統(tǒng)的總體設(shè)計(jì)能夠錄音并存儲(chǔ)為音頻文件。(2)播放已經(jīng)存在的音頻文件。(3)視頻采集與顯示,能夠?qū)崟r(shí)從攝像頭中 獲取圖像并將攝像頭獲得的幀數(shù)據(jù)顯示到屏幕上。(4)視頻采集與顯示,能夠?qū)崟r(shí)從攝像頭中獲取圖像并將攝像頭獲得的幀數(shù)據(jù)顯示到屏幕上。(5)拍照,保存為bmp照片。(6)圖片瀏覽,能夠顯示存儲(chǔ)的bmp圖片。(7)錄像,存儲(chǔ)攝像頭獲得的數(shù)據(jù),保存為視頻。(8)播放錄像,能夠?qū)⒋鎯?chǔ)的視頻播放出來(lái)。3.系統(tǒng)的硬件設(shè)計(jì)3.1cortexA8實(shí)驗(yàn)儀概述該實(shí)驗(yàn)儀是凌陽(yáng)教育繼S3c2440之后的又一力作,是一個(gè)標(biāo)準(zhǔn)的嵌入式開(kāi)發(fā)平臺(tái)。處理器采用業(yè)界領(lǐng)先的cortexA8,其內(nèi)部集成了豐富的模塊,另外該芯片主頻高達(dá)833MHZ,您可以輕松上手linux、wince、android等操作系統(tǒng)的設(shè)計(jì)及開(kāi)發(fā)。本開(kāi)發(fā)板基于開(kāi)發(fā)考慮,外設(shè)齊全,接口標(biāo)準(zhǔn),擴(kuò)展方便。整個(gè)開(kāi)發(fā)板采用核心板加底板方法設(shè)計(jì),核心板采用八層板設(shè)計(jì),線(xiàn)路可靠穩(wěn)定,是嵌入式學(xué)習(xí)和研究的最佳選擇,該實(shí)驗(yàn)儀適合研究人員和電子愛(ài)好者用做評(píng)估與開(kāi)發(fā)。核心板主要元件:CPU型號(hào)為S5PV210。DDR2內(nèi)存,一共4片,型號(hào)為K4T1G164Q。NANDFLASH,1G版本核心板為K9K8G08,256M版本核心板為K9F2G08。有線(xiàn)網(wǎng)絡(luò)芯片,10/100Mbps,SMSCLAN9220。AC97音頻編解碼芯片,WM9713,該芯片包含電阻式觸摸屏控制器。電源轉(zhuǎn)換芯片,為核心板器件提供所需要的各種電壓轉(zhuǎn)換。底板主要元器件:電源接口,輸入電壓為5V。電源上串聯(lián)有一個(gè)1.1A的自恢復(fù)保險(xiǎn)絲。電源開(kāi)關(guān),選用進(jìn)口優(yōu)質(zhì)電源開(kāi)關(guān),可反復(fù)開(kāi)關(guān)不低于10萬(wàn)次。USB2.0OTG接口,采用miniUSB插座,支持480Mbps高速模式。HDMI高清顯示輸出,標(biāo)準(zhǔn)的TypeA型HDMI插座,機(jī)械強(qiáng)度高。CVBS視頻輸出端口,用于連接電視機(jī)。100M有線(xiàn)以太網(wǎng)接口[7]。2路RS232電平串口插座,DB9針式插座,和PC串口標(biāo)準(zhǔn)一致。TF卡插座,支持從TF卡啟動(dòng)。板載USBWIFI模塊(板載和外接二選一),支持802.11n150Mbps。3路預(yù)留USB2.0HOST端口,可以外接U盤(pán),鼠標(biāo),鍵盤(pán)等。音頻輸出接口,采用3.5mm耳機(jī)插座。板載麥克風(fēng)[17]。啟動(dòng)模式設(shè)置開(kāi)關(guān),可以設(shè)置多種啟動(dòng)模式。4個(gè)用戶(hù)LED,由用戶(hù)程序控制LED的亮滅。攝像頭輸入接口,可以連接定制的攝像頭擴(kuò)展板。液晶輸出接口,可以外接各種液晶屏模塊。RTC時(shí)鐘電池[18]。GPIO擴(kuò)展接口,包含2路串口,1路SPI,一個(gè)GPIO。9個(gè)用戶(hù)按鍵,支持常用的功能操作[8]。1個(gè)復(fù)位按鍵。圖1CortexA8試驗(yàn)儀核心板加底板3.2USB2.0HOST接口S5PV210只有1路USB2.0HOST端口,底板上通過(guò)USBHUB芯片GL850G擴(kuò)展出4個(gè)USB2.0端口,其中一個(gè)用于板載WIFI接口,剩余3個(gè)是標(biāo)準(zhǔn)的USBA型接口插座,分別是J23,J24,J25。支持高速模式,也就是480Mbps。之前三星的S3C2440A和S3C6410的USBHOST最高只支持USB2.0全速(12Mbps)模式[9]。圖2USB實(shí)物圖圖3USB電路圖圖4USB插座信號(hào)定義1:VCC(5V),為接入U(xiǎn)SB端口的設(shè)備提供電源2:USBD-,也用DM表示,USB差分信號(hào)-3:USBD+,也用DP表示,USB差分信號(hào)+4:GND 電源地[15]3.3串口S5PV210一共有四個(gè)串口,其中2個(gè)通過(guò)SP3232電平轉(zhuǎn)換芯片連接到DB9插座。另外2個(gè)直接從CPU連接到開(kāi)發(fā)板J17插座[16]。開(kāi)發(fā)板上DB9插座:圖5串口實(shí)物圖圖6串口電路圖圖7串口管腳定義開(kāi)發(fā)板的DB9串口信號(hào)定義和PC的串口定義完全一樣:2:RXD 接收信號(hào),對(duì)于開(kāi)發(fā)板來(lái)說(shuō)是輸入信號(hào)3:TXD 發(fā)送信號(hào),對(duì)于開(kāi)發(fā)板來(lái)說(shuō)是輸出信號(hào)5:GND 公共地3.4攝像頭參數(shù):高品質(zhì)CMOS感應(yīng)器。支持WindowsXPSP2/Vista等操作系統(tǒng)。支持手動(dòng)式調(diào)焦。靜態(tài)圖像拍照:默認(rèn)分辨率為640x480。視頻錄像捕捉:默認(rèn)分辨率為640x480,軟件增值可達(dá)到500萬(wàn)(2560x1920),YUY2輸出格式。USB2.0高速傳輸,高幀速(30-15fps)視頻播放,畫(huà)面流暢不停頓。自動(dòng)白平衡、曝光。最小靈敏度:2.0V/Lux.Sec。閃爍控制:50Hz或60Hz自動(dòng)識(shí)別。支持抓取、儲(chǔ)存靜態(tài)照片(JPG格式)功能。支持QQ、MSN、雅虎通等視頻聊天軟件,等視頻聊天室。工作溫度:-10~60℃。功耗:<0.5W。圖8攝像頭實(shí)物圖3.5音頻輸出接口和麥克風(fēng)音頻輸出端口(J11)為標(biāo)準(zhǔn)3.5mm立體聲耳機(jī)插座,接到AC97編解碼芯片WM9713的音頻輸出。麥克風(fēng)(MIC1)也是接到WM9713。圖9編解碼芯W(wǎng)M9713電路圖當(dāng)耳機(jī)插入耳機(jī)插座時(shí)候,耳機(jī)插頭的金屬部分會(huì)把耳機(jī)插座的第3腳和第4腳短接。第3腳是地線(xiàn),這樣相當(dāng)于把第4腳接地,而第4腳和喇叭的功放使能引腳相連接,第4腳接地時(shí)候?yàn)榈碗娖?,喇叭功放就停止工作。也就是說(shuō),耳機(jī)插入插座會(huì)自動(dòng)禁止喇叭的聲音[14]。3.6液晶屏輸出接口液晶屏輸出接口(J9)用于連接各種液晶屏,包含了液晶屏數(shù)據(jù)信號(hào),背光電源和觸摸屏這3個(gè)部分。圖10液晶屏輸出接口液晶屏接口插座使用的是0.5mm間距40芯FPC插座,下接觸。插入FPC帶線(xiàn)時(shí)候,要把FPC帶線(xiàn)的金屬接觸面朝下。FPC插座左邊為第1腳(白色三角形)[13]。LCD的35腳LCDSEL是一個(gè)識(shí)別5寸和7寸液晶屏的引腳,電路板上有一個(gè)下拉電阻。對(duì)于5寸的液晶屏模塊,這個(gè)引腳是空腳,所以是低電平。對(duì)于7寸液晶屏,35腳是接高電平。因?yàn)?寸液晶屏和7寸液晶屏分辨率是一樣的,只是背光電流要求不同,所以L(fǎng)CDSEL用于控制背光電流的大小[12]。LCDSEL為低電平情況,Q9不導(dǎo)通,背光電流I=0.1/R=0.1/3.3=0.03A=30mA。LCDSEL為高電平情況,Q9導(dǎo)通,R27和R26并聯(lián),R=R27*R26/(R27+R26)=1R,背光電流I=0.1/R=0.1/1=0.1A=100mA[10]。圖11液晶屏電路圖4系統(tǒng)的軟件設(shè)計(jì)4.1軟件開(kāi)發(fā)平臺(tái)4.1.1sourceinsightSourceInsight是一個(gè)面向項(xiàng)目開(kāi)發(fā)的程序編輯器和代碼瀏覽器,它擁有內(nèi)置的對(duì)C/C++,C#和Java等程序的分析。SourceInsight能分析你的源代碼并在你工作的同時(shí)動(dòng)態(tài)維護(hù)它自己的符號(hào)數(shù)據(jù)庫(kù),并自動(dòng)為你顯示有用的上下文信息。SourceInsight不僅僅是一個(gè)強(qiáng)大的程序編輯器,它還能顯示referencetrees,classinheritancediagrams和calltrees。SourceInsight提供了最快速的對(duì)源代碼的導(dǎo)航和任何程序編輯器的源信息。SourceInsight提供了快速和革新的訪(fǎng)問(wèn)源代碼和源信息的能力。與眾多其它編輯器產(chǎn)品不同,SourceInsight能在你編輯的同時(shí)分析你的源代碼,為你提供實(shí)用的信息并立即進(jìn)行分析。SourceInsight是如今最好用的語(yǔ)言編輯器,支持幾乎所有的語(yǔ)言,如C、C++、ASM、PAS、ASP、HTML等常見(jiàn)的,還支持自己定義關(guān)鍵字,如果您是一個(gè)程序員或者網(wǎng)頁(yè)制作人,這個(gè)軟件對(duì)您都是有幫助的!SourceInsight為您提供了可快速訪(fǎng)問(wèn)源代碼和源信息的功能。SourceInsight相較其它的編輯器產(chǎn)品來(lái)說(shuō),還可以幫您分析源代碼,并在您編輯的同時(shí)立刻提供給您有用的信息和分析。SourceInsight自動(dòng)創(chuàng)建并維護(hù)它自己高性能的符號(hào)數(shù)據(jù)庫(kù),包括函數(shù)、method、全局變量、結(jié)構(gòu)、類(lèi)和工程源文件里定義的其它類(lèi)型的符號(hào)。SourceInsight可以迅速地更新您的文件信息,即使在您編輯代碼的時(shí)候。而且符號(hào)數(shù)據(jù)庫(kù)的符號(hào)可以自動(dòng)創(chuàng)建倒您的工程文件中。4.1.2gladeGlade是GTK+圖形用戶(hù)界面產(chǎn)生器。也就是說(shuō),Glade是個(gè)VisualProgrammingTool,和MicrosoftWindows平臺(tái)的VisualTools類(lèi)似,只要用鼠標(biāo)拉一拉,它就會(huì)自動(dòng)幫你產(chǎn)生Csourcecode。所以我們這些懶人,就不用再去為畫(huà)面的設(shè)計(jì)煩惱,用Glade設(shè)計(jì)好畫(huà)面,再用編輯器把程式碼稍為修減就OK了。(現(xiàn)在也有各種語(yǔ)言如C++、Ada95、Python、Perl等的GTK+介面,如果搭配其它工具,也可以自動(dòng)產(chǎn)生C++,Ada95,PythonandPerl的程式碼)。4.2軟件設(shè)計(jì)概述在此次設(shè)計(jì)中,音視頻數(shù)據(jù)采集系統(tǒng)的軟件全部采用c語(yǔ)言編寫(xiě)。采用模塊化的思想,將程序劃分為多個(gè)模塊,便于設(shè)計(jì)、調(diào)試。此次設(shè)計(jì)中程序的編寫(xiě)環(huán)境是ubuntu操作系統(tǒng)。4.3系統(tǒng)主程序創(chuàng)建主界面及各個(gè)子界面,在主窗上添加視頻按鈕、音頻按鈕。實(shí)現(xiàn)界面間的切換,通過(guò)回調(diào)函數(shù)實(shí)現(xiàn)各個(gè)界面間的切換。創(chuàng)建主窗口顯示背景創(chuàng)建主窗口顯示背景創(chuàng)建拍照錄像窗口創(chuàng)建錄音放音窗口圖片瀏覽窗口視頻播放窗口開(kāi)始圖12主程序流程圖4.4系統(tǒng)子程序4.4.1錄音子程序在錄音界面,增加錄音按鈕、播放按鈕、返回按鈕。當(dāng)點(diǎn)擊錄音按鈕時(shí),開(kāi)始錄音,再次點(diǎn)擊錄音按鈕停止,錄音通過(guò)創(chuàng)建線(xiàn)程來(lái)實(shí)現(xiàn)。實(shí)現(xiàn)放音(可以單獨(dú)去做界面),點(diǎn)擊放音按鈕或者直接點(diǎn)擊列表中的聲音文件名實(shí)現(xiàn)放音。返回按鈕可以返回主界面。初始化音頻設(shè)備/dev/dsp初始化錄音窗口初始化音頻設(shè)備/dev/dsp初始化錄音窗口打開(kāi)音頻數(shù)據(jù)文件開(kāi)線(xiàn)程,從設(shè)備中讀取數(shù)據(jù),并寫(xiě)入文件保存音頻文件開(kāi)線(xiàn)程,從文件中讀取數(shù)據(jù),寫(xiě)入設(shè)備中關(guān)閉音頻文件4.4.2拍照/錄像子程序在錄像界面,當(dāng)進(jìn)入錄像窗口時(shí)即可初始化v4l2攝像頭設(shè)備。增加拍照按鈕,錄制視頻按鈕,圖片/視頻瀏覽按鈕,返回按鈕,以及圖像顯示“窗口”。獲取攝像頭數(shù)據(jù)在開(kāi)發(fā)板屏幕顯示(創(chuàng)建線(xiàn)程函數(shù)去操作),通過(guò)GTK在屏幕實(shí)時(shí)顯示需要刷新繪圖區(qū)域,通過(guò)gtk_widget_queue_draw()就會(huì)自動(dòng)調(diào)用曝光事件所連接的回調(diào)函數(shù),回調(diào)函數(shù)中刷新屏幕從而實(shí)現(xiàn)實(shí)時(shí)顯示。GTK中的繪圖函數(shù)只能夠顯示rgb格式的數(shù)據(jù)。需要將攝像頭yuv數(shù)據(jù)轉(zhuǎn)化成rgb數(shù)據(jù)[11]。實(shí)現(xiàn)拍照功能,點(diǎn)擊拍照按鈕,截取當(dāng)前攝像頭數(shù)據(jù)保存到圖片中。圖片格式轉(zhuǎn)換函數(shù):voidrgb24_to_bmp(unsignedchar*rgb24,char*bmp_name,intwidth,intheight);錄像功能實(shí)現(xiàn),點(diǎn)擊錄像按鈕時(shí)創(chuàng)建線(xiàn)程,獲取圖像并寫(xiě)入視頻文件。由于rgb數(shù)據(jù)是原始數(shù)據(jù)未壓縮,直接存儲(chǔ)rgb數(shù)據(jù)會(huì)導(dǎo)致視頻文件很大,所以需要將rgb數(shù)據(jù)壓縮,即將rgb格式的數(shù)據(jù)轉(zhuǎn)化為jpg格式的數(shù)據(jù)進(jìn)行存儲(chǔ)。播放視頻,添加線(xiàn)程,當(dāng)點(diǎn)擊播放按鈕時(shí),能夠讀取視頻文件中的圖像,并在窗口上顯示(讀出的數(shù)據(jù)為jpg格式,所以要將數(shù)據(jù)在轉(zhuǎn)化為rgb格式。當(dāng)退出拍照錄像窗口時(shí),撤銷(xiāo)線(xiàn)程,關(guān)閉設(shè)備。圖片瀏覽窗口類(lèi)似。拍照、錄像窗口拍照、錄像窗口選擇拍照or錄像創(chuàng)建線(xiàn)程:不斷從攝像頭中獲取圖像。創(chuàng)建線(xiàn)程:不斷觸發(fā)曝光事件顯示圖像。錄像,開(kāi)線(xiàn)程將幀數(shù)據(jù)寫(xiě)文件write_file初始化v4l2拍照保存圖片rgb24_to_bmprgb24_to_bmp關(guān)閉文件圖14拍照/錄像子程序流程圖5設(shè)計(jì)創(chuàng)新5.1創(chuàng)新之一在音視頻設(shè)計(jì)中,對(duì)窗體的設(shè)計(jì)加入了某些屬性,如單雙擊,滑動(dòng)窗體等,利用這些屬性結(jié)合某些模塊如,時(shí)間的控制和調(diào)整,可以替換掉按鈕的單調(diào)操作,也使得界面變得簡(jiǎn)潔優(yōu)雅。在利用窗體的單雙擊和滑動(dòng)事件時(shí)要注意對(duì)窗體區(qū)域的劃分,對(duì)不同的模塊進(jìn)行控制。5.2創(chuàng)新之二利用時(shí)間的值來(lái)控制背景圖片的切換,例如每分鐘有六十秒,如果讓秒對(duì)29(也可以是其他值)取余,則每分鐘會(huì)取到兩次零值,這樣就會(huì)觸發(fā)兩次事件來(lái)切換圖片,也可以利用分鐘的值,從而達(dá)到更長(zhǎng)時(shí)間的切圖效果。結(jié)論該音視頻數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì),通過(guò)話(huà)筒和攝像頭分別對(duì)聲音和圖像進(jìn)行采集,經(jīng)過(guò)開(kāi)發(fā)板的處理,用喇叭播放聲音,用液晶屏顯圖像。在此次設(shè)計(jì)中,通過(guò)理論課的實(shí)踐和研討,取得了初步成果,完成了話(huà)筒和攝像頭采集數(shù)據(jù),喇叭和液晶屏顯示數(shù)據(jù)的過(guò)程。實(shí)踐中,錄制視頻和播放視頻是最難的部分,要把圖片按一定的格式存儲(chǔ)到文件里實(shí)現(xiàn)錄制視頻,把文件里的圖片取出來(lái)通過(guò)液晶屏顯示實(shí)現(xiàn)播放視頻。參考文獻(xiàn)[1]張綺文等.ARM嵌入式常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講[M].北京:電子工業(yè)出版社, 2007.[2]張瑜,王益涵.ARM嵌入式程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2009.[3]杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003.[4]潘巨龍,黃寧,姚伏天等.ARM9嵌入式Linux系統(tǒng)構(gòu)建與應(yīng)用[M].北京:北京航空航天大學(xué) 出版社,2006.[5]李新峰,何廣生,趙秀文.基于ARM9的嵌入式Linux開(kāi)發(fā)技術(shù)[M].北京:電子工業(yè)出版 社,2008.[6](美)W.RichardStevensBillFennerAndrewM.Rudoff.UNIX網(wǎng)絡(luò)編程第3版[M].北京: 人民郵電出版社,2009.[7]ManufacturingEngineeringLaboratoryNationalInstituteofStandardsand TechnologyGaithersburg[M].U.S.A,2004.[8]尹柱霞,鄭喜鳳,于洪濤.ARM+FPGA控制的LED脫機(jī)屏系統(tǒng)設(shè)計(jì)[J].液晶與顯示. 2010,21,5:23-25.[9]梁廷魁.RS485串行通訊在自動(dòng)生產(chǎn)線(xiàn)上的應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用.2011,15,6:45-47.[10]蘇哲欣,劉鴻飛,薛曉.基于嵌入式Linux的LCD驅(qū)動(dòng)分析與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī). 2009,12,3:28-29.[11]ITU-TRecommendation:Q.400.系列[12]Klessing.RW.OverviewofMetropolitanAreaNetworks.IEEECommunicationMagaine,1986,24(1):9-15.[13]AbramsonN.TheALOHASystem-AnotherAlternativeforComputerCommunication.Proc.FallJointComput.Conf.AFIPS,1970,37:281-285.[14]IEEE802.15WorkingGroupforWPAN.[15]AbramsonN.PacketSwitchingwithSatellites,AFIPSConf.Proc.,1973,42(6):695-702.[16]楊金巖,等.AT89系列單片機(jī)原理與接口技術(shù).北京:人民郵電出版社,2005.1.[17]高峰.單片機(jī)微型計(jì)算機(jī)原理與技術(shù)接口.北京:科學(xué)出版社,2003.2.[18]郭天祥,新概念51單片機(jī)C語(yǔ)言教程,北京:電子工業(yè)出版社.附錄A.主函數(shù)初始化全部窗口#include<gtk/gtk.h>#include"main_window.h"#include"picture_window.h"#include"play_wav_window.h"intmain(intargc,char*argv[]){ if(FALSE==g_thread_supported()){//如果線(xiàn)程沒(méi)有初始化 g_thread_init(NULL); //初始化線(xiàn)程,g_thread_init()必須放在gdk_threads_init()前面 gdk_threads_init();//以上代碼可以填寫(xiě)就可以使用任何其他線(xiàn)程并能夠刷圖 } gtk_init(&argc,&argv); window.main_window=design_main_window();//主窗口 window.video_window=design_video_window();//拍照和錄像窗口 window.picture_window=design_pic_window();//圖片窗口 window.play_video_window=design_play_video_window();//播放視頻窗口 window.play_wav_window=design_play_wav_window();//播放wav音樂(lè)窗口*/ gtk_widget_show_all(window.main_window); gdk_threads_enter(); gtk_main(); //主事件循環(huán) gdk_threads_leave(); return0;}初始化主界面和定義函數(shù)#include"main_window.h"#include"sungtk_interface.h"#include"play_wav_window.h"#include"play_video_window.h"MainButtonmainbutton;pthread_ttid_time;//滑屏坐標(biāo)doublex_old=0;doubley_old=0;doublex_new=0;doubley_new=0;//時(shí)間處理參數(shù)gbooleantime_pthread_flag=FALSE;intntm_hour=10;intntm_min=8;intntm_sec=0;/********************************************************************功能: 主窗口顯示可以選擇錄像、音樂(lè)、視頻、照片*參數(shù): 無(wú)*返回值: 主窗口指針********************************************************************/GtkWidget*design_main_window(){ GladeXML*gxml=glade_xml_new("../glade/main_window.glade",NULL,NULL); GtkWidget*main_window=glade_xml_get_widget(gxml,"main_window"); chang_background(main_window,"../image/main_win_pic.jpg",800,480); gtk_widget_add_events(main_window,GDK_BUTTON_PRESS_MASK| GDK_BUTTON_RELEASE_MASK); g_signal_connect(main_window,"button_press_event", G_CALLBACK(main_win_press),NULL); g_signal_connect(main_window,"button_release_event", G_CALLBACK(main_win_realse),NULL); mainbutton.video_button=glade_xml_get_widget(gxml,"video_button"); mainbutton.camer_button=glade_xml_get_widget(gxml,"camer_button"); mainbutton.music_button=glade_xml_get_widget(gxml,"music_button"); mainbutton.pic_button=glade_xml_get_widget(gxml,"pic_button"); sungtk_button_inset_image(mainbutton.video_button,"../image/Videos.png",80,80); sungtk_button_inset_image(mainbutton.camer_button,"../image/camer_button_pic.p ng",80,80); sungtk_button_inset_image(mainbutton.music_button,"../image/music_button_pic.p ng",80,80); sungtk_button_inset_image(mainbutton.pic_button, "../image/picture_button_pic.png",80,80); mainbutton.data_label=glade_xml_get_widget(gxml,"data_label"); sungtk_widget_set_font_size(mainbutton.data_label,20,FALSE); gtk_label_set_text((GtkLabel*)(mainbutton.data_label),"2014/5/25"); mainbutton.time_label=glade_xml_get_widget(gxml,"time_label"); sungtk_widget_set_font_size(mainbutton.time_label,40,FALSE); pthread_create(&tid_time,NULL,current_time,NULL); pthread_detach(tid_time); signal_connect_button(); returnmain_window;}/***********************************************************************功能: 單雙擊窗體事件*參數(shù): 無(wú)*返回值: FALSEorTRUE**********************************************************************/gbooleanmain_win_press(GtkWidget*widget,GdkEventButton*event,gpointerdata){ x_old=event->x; y_old=event->y; if(event->type==GDK_2BUTTON_PRESS) { if(time_pthread_flag==FALSE) { pthread_cancel(tid_time); time_pthread_flag=TRUE; printf("doubleclickedcancel\n"); } else { pthread_create(&tid_time,NULL,current_time,NULL); pthread_detach(tid_time); time_pthread_flag=FALSE; printf("doubleclickedwork\n"); } } returnTRUE;}/********************************************************************功能: 按鈕信號(hào)連接函數(shù)*參數(shù): 無(wú)*返回值: 無(wú)*********************************************************************/voidsignal_connect_button(){ g_signal_connect(G_OBJECT(mainbutton.camer_button),"clicked",G_CALLBACK(deal_camer_button_press),NULL); //播放視頻 g_signal_connect(G_OBJECT(mainbutton.video_button),"clicked",G_CALLBACK(deal_video_button_press),NULL); g_signal_connect(G_OBJECT(mainbutton.music_button),"clicked",G_CALLBACK(deal_wav_button_press),NULL); g_signal_connect(G_OBJECT(mainbutton.pic_button),"clicked",G_CALLBACK(deal_pic_button_press),NULL);}gbooleanmain_win_realse(GtkWidget*widget,GdkEventButton*event,gpointerdata){ charbuff[100]=""; x_new=event->x; y_new=event->y; if(time_pthread_flag==TRUE) { if((x_new<=170)||(x_old<=170)) { //時(shí)的分區(qū) if(y_new-y_old>100) { ntm_hour--; if(ntm_hour<0) { ntm_hour=12; } } elseif(y_old-y_new>100) { ntm_hour++; if(ntm_hour>=13) { ntm_hour=0; } } } elseif((170<x_new)&&(x_new<=340)&&(170<x_old)&&(x_old<=340)) { //分的分區(qū) if(y_new-y_old>100) { ntm_min--; if(ntm_min<0) { ntm_min=59; } } elseif(y_old-y_new>100) { ntm_min++; if(ntm_min>=60) { ntm_min=0; } } } elseif((340<x_new)&&(x_new<=500)&&(340<x_old)&&(x_old<=500)) { //秒的分區(qū) if(y_new-y_old>100) { ntm_sec--; if(ntm_sec<0) { ntm_sec=59; } } elseif(y_old-y_new>100) { ntm_sec++; if(ntm_sec>=60) { ntm_sec=0; } } } } sprintf(buff,"%02d:%02d:%02d",ntm_hour,ntm_min,ntm_sec); gdk_threads_enter(); //進(jìn)入多線(xiàn)程互斥區(qū)域 gtk_label_set_text((GtkLabel*)(mainbutton.time_label),buff); gdk_threads_leave();}/*********************************************************************功能: 線(xiàn)程函數(shù)顯示時(shí)間*參數(shù): NULL*返回值: NULL*******************************************************************/void*current_time(){ charbuff[100]=""; while(1) { if(60<=ntm_sec){ ntm_sec=0; ntm_min++; if(60<=ntm_min){ ntm_min=0; ntm_hour++; if(13<=ntm_hour){ ntm_hour=1; } } } sprintf(buff,"%02d:%02d:%02d",ntm_hour,ntm_min,ntm_sec); gdk_threads_enter(); //進(jìn)入多線(xiàn)程互斥區(qū)域 gtk_label_set_text((GtkLabel*)(mainbutton.time_label),buff); gdk_threads_leave(); ntm_sec++; sleep(1); } returnNULL;}B.圖片瀏覽窗口設(shè)置#include"picture_window.h"#include"sungtk_interface.h"#include"main_window.h"#include"play_wav_window.h"PictureButtonpicturebutton;//照片相關(guān)參數(shù)intbmp_total=0;intcurrent_bmp_num=0;char*bmp_name[100];charcurrent_bmp[100]="";staticgints_timer=-1;gbooleanauto_play_flag=FALSE;/*********************************************************************功能: 進(jìn)入圖片瀏覽并創(chuàng)建此界面*參數(shù): widget:被點(diǎn)擊的按鈕*返回值: 無(wú)********************************************************************/voiddeal_pic_button_press(GtkWidget*widget,gpointerdata){ bmp_total=find_file("../picture/",".bmp",bmp_name); if(bmp_total!=0) { current_bmp_num=bmp_total-1; sprintf(current_bmp,"../picture/%s",bmp_name[current_bmp_num]); } printf("%s\n",current_bmp); sungtk_image_load_picture(picturebutton.pic_image,current_bmp,700,480); gtk_widget_hide_all(window.main_window); gtk_widget_show_all(window.picture_window);}/**********************************************************************功能: 設(shè)置圖片瀏覽窗口*參數(shù): 無(wú)*返回值: 返回被設(shè)置的窗口*********************************************************************/GtkWidget*design_pic_window(){ GladeXML*gxml=glade_xml_new("../glade/picture_window.glade",NULL,NULL); GtkWidget*picture_win=glade_xml_get_widget(gxml,"picture_window"); chang_background(picture_win,"../image/pic_back.jpg",800,480); picturebutton.pic_image=glade_xml_get_widget(gxml,"pic_image"); picturebutton.play_picture_button= glade_xml_get_widget(gxml,"play_picture_button"); picturebutton.last_picture_button=glade_xml_get_widget(gxml,"last_picture_button"); picturebutton.next_picture_button= glade_xml_get_widget(gxml,"next_picture_button"); picturebutton.delete_pic_button=glade_xml_get_widget(gxml,"delete_pic_button"); picturebutton.back_button=glade_xml_get_widget(gxml,"back_button"); sungtk_button_inset_image(picturebutton.play_picture_button,"../image/pplay.png",80,80); sungtk_button_inset_image(picturebutton.last_picture_button,"../image/pprevious.png",80,80); sungtk_button_inset_image(picturebutton.next_picture_button,"../image/pnext.png",80,80); sungtk_button_inset_image(picturebutton.delete_pic_button,"../image/delete_pic.png",80,80); sungtk_button_inset_image(picturebutton.back_button,"../image/home_win.png",80,80); signal_connect_picture_button(); returnpicture_win;}/********************************************************************功能: 按鈕信號(hào)連接函數(shù)*參數(shù): 無(wú)*返回值: 無(wú)********************************************************************/voidsignal_connect_picture_button(){ g_signal_connect(G_OBJECT(picturebutton.play_picture_button),"clicked",G_CALLBACK(deal_auto_play_pic_button_press),NULL); g_signal_connect(G_OBJECT(picturebutton.last_picture_button),"clicked",G_CALLBACK(deal_hand_play_pic_button_press),NULL); g_signal_connect(G_OBJECT(picturebutton.next_picture_button),"clicked",G_CALLBACK(deal_hand_play_pic_button_press),NULL); g_signal_connect(G_OBJECT(picturebutton.back_button),"clicked",G_CALLBACK(deal__pic_back_button_press),NULL); g_signal_connect(G_OBJECT(picturebutton.delete_pic_button),"clicked",G_CALLBACK(deal_delete_pic_button_press),NULL);}/*********************************************************************功能:自動(dòng) 播放圖片*參數(shù): widget:被點(diǎn)擊的按鈕*返回值: 無(wú)********************************************************************/voiddeal_auto_play_pic_button_press(GtkWidget*widget,gpointerdata){ if(auto_play_flag==FALSE) { auto_play_flag=TRUE; sungtk_button_inset_image(picturebutton.play_picture_button,"../image/ppause.png",80,80); s_timer=gtk_timeout_add(1000,change_image,picturebutton.pic_image); } else { auto_play_flag=FALSE; gtk_timeout_remove(s_timer); sungtk_button_inset_image(picturebutton.play_picture_button,"../image/pplay.png",80,80); }}/*********************************************************************功能: 手動(dòng)播放圖片回調(diào)函數(shù)*參數(shù): widget:被點(diǎn)擊的按鈕*返回值: 無(wú)********************************************************************/voiddeal_hand_play_pic_button_press(GtkWidget*widget,gpointerdata){ if(widget==picturebutton.last_picture_button) { if(current_bmp_num>0) { current_bmp_num--; } } elseif(widget==picturebutton.next_picture_button) { if(current_bmp_num<bmp_total-1) { current_bmp_num++; } } sprintf(current_bmp,"../picture/%s",bmp_name[current_bmp_num]); sungtk_image_load_picture(picturebutton.pic_image,current_bmp,700,480);}/*********************************************************************功能: 自動(dòng)播放圖片*參數(shù): data:播放圖片的畫(huà)圖區(qū)域*返回值: 無(wú)********************************************************************/gbooleanchange_image(gpointerdata){ if(current_bmp_num<bmp_total-1) { current_bmp_num++; } else { current_bmp_num=0; } sprintf(current_bmp,"../picture/%s",bmp_name[current_bmp_num]); sungtk_image_load_picture(picturebutton.pic_image,current_bmp,700,480); returnTRUE;}/*********************************************************************功能:圖片播放返回窗口*參數(shù):NULL*返回值: NULL********************************************************************/void*deal__pic_back_button_press(){ if(auto_play_flag==TRUE) { auto_play_flag=FALSE; gtk_timeout_remove(s_timer); sungtk_button_inset_image(picturebutton.play_picture_button,"../image/pplay.png",80,80); } gtk_widget_hide_all(window.picture_window); gtk_widget_show_all(window.main_window); returnNULL;}/*********************************************************************功能:圖片刪除*參數(shù):NULL*返回值: NULL********************************************************************/void*deal_delete_pic_button_press(){ sprintf(current_bmp,"../picture/%s",bmp_name[current_bmp_num]); if(remove(current_bmp)) printf("deletepictureerror!\n"); bmp_total=find_file("../picture/",".bmp",bmp_name); returnNULL;}C.視頻播放窗口#include"play_video_window.h"#include"sungtk_interface.h"#include"wav.h"#include"window.h"#include"yuyv_rgb_jpeg.h"intvideo_total=0;intcurrent_video_num=0;char*video_name[100];constchar*video_path="../video/";charcurrent_video[100]="";pthread_tplay_video,p_play_video;staticintbmp_width=0; staticintbmp_height=0;staticunsignedchar*rgbvideo=NULL;staticsem_tsem_1,sem_2,sem_3;gbooleanplay_video_flag=FALSE;gbooleanvideo_in_flag=FALSE;/*********************************************************************功能:播放視頻按鈕回調(diào)函數(shù)*參數(shù): 無(wú)*返回值: 無(wú)********************************************************************/voiddeal_video_button_press(){ if(video_in_flag==TRUE) { pthread_create(&play_video,NULL,start_play_video,NULL); pthread_detach(play_video); } video_total=player_song_list_display(video_path); gtk_widget_hide_all(window.main_window); gtk_widget_show_all(window.play_video_window); }/*********************************************************************功能:讀取文件夾中的視頻文件*參數(shù): 無(wú)*返回值: 無(wú)********************************************************************/intplayer_song_list_display(constchar*path){ DIR*dir=NULL; structdirent*ptr=NULL; intsong_num=0; dir=opendir(path); if(dir==NULL){ perror("opendir"); return-1; } playvideobutton.clist=sungtk_clist_new(); gtk_fixed_put((GtkFixed*)(playvideobutton.video_fixed),playvideobutton.clist->fixed,0,0); sungtk_clist_set_text_size(playvideobutton.clist,15); sungtk_clist_set_col_width(playvideobutton.clist,300); sungtk_clist_set_row_height(playvideobutton.clist,23); sungtk_clist_set_select_row_signal(playvideobutton.clist,"button-release-event",callback_list_release); while((ptr=readdir(dir))!=NULL) //讀歌曲名,存歌曲 { if(strstr(ptr->d_name,".mpg")!=NULL){ video_name[song_num]=(char*)malloc(strlen(ptr->d_name)+1); memset(video_name[song_num],0,strlen(ptr->d_name)+1); strcpy(video_name[song_num],ptr->d_name); sungtk_clist_append(playvideobutton.clist,ptr->d_name); song_num++; } } sungtk_clist_set_foreground(playvideobutton.clist,"black"); closedir(dir); returnsong_num;}/*********************************************************************功能: 播放視頻線(xiàn)程*參數(shù): NULL*返回值: NULL********************************************************************/void*start_play_video(char*video_name_path){ FILE*fp; if((fp=fopen(current_video,"rb+"))==NULL) { printf("Cannotopenfile!"); returnNULL; } rewind(fp); intjpeg_frame_size=0; while(play_video_flag==TRUE) { sem_wait(&sem_3); gdk_threads_ent
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度教師安全教育與事故調(diào)查處理合同
- 2025年度債權(quán)轉(zhuǎn)讓與投資管理服務(wù)合同范本
- 2025年度海洋工程建設(shè)項(xiàng)目土地征用及海洋環(huán)境保護(hù)合同
- 2025年度綠色礦山土石方治理合同
- 2025年度化工原材料電商平臺(tái)合作合同
- 2025年度企業(yè)間借款及資金監(jiān)管三方合同
- 2025年度新能源汽車(chē)研發(fā)團(tuán)隊(duì)勞動(dòng)合同及知識(shí)產(chǎn)權(quán)保護(hù)協(xié)議
- 現(xiàn)代農(nóng)業(yè)裝備升級(jí)與產(chǎn)能提升策略
- 現(xiàn)代家庭教育中的親子共讀與語(yǔ)言發(fā)展
- 母愛(ài)與科技融合的未來(lái)趨勢(shì)-家庭教育的數(shù)字化匯報(bào)
- 新能源電站單位千瓦造價(jià)標(biāo)準(zhǔn)值(2024版)
- 《阻燃材料與技術(shù)》課件 第4講 阻燃劑性能與應(yīng)用
- 原子結(jié)構(gòu) 教學(xué)設(shè)計(jì) 高二化學(xué)人教版(2019)選擇性必修2
- 2024年2孩離婚協(xié)議書(shū)模板2024電子版
- 浪潮銷(xiāo)售在線(xiàn)測(cè)評(píng)題
- 外研版小學(xué)英語(yǔ)1-6年級(jí)全冊(cè)單詞表
- 高中語(yǔ)文:選擇性必修中冊(cè)第三單元拓展閱讀
- 安全閥校驗(yàn)標(biāo)準(zhǔn)
- 耳穴壓豆課件
- 2023年江蘇省南京市中考化學(xué)真題(原卷版)
- 建筑制圖與識(shí)圖教學(xué)課件:第八章 結(jié)構(gòu)施工圖
評(píng)論
0/150
提交評(píng)論