版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
我們畢業(yè)啦其實是答辯的標題地方Processing創(chuàng)意編程音視頻處理1主講人:江學鋒教學重點(1) 如何向項目添加媒體素材(2) 庫的安裝與調用(3) 基本的Processing播放視頻方法教學難點(1) 庫的安裝與調用(2) 基本的Processing播放視頻方法任務:視頻播放2任務具體要求調用庫實現(xiàn)視頻播放什么是庫?5在學習編程的過程中,我們經(jīng)常聽到“庫”(library)這個詞。就像在制作一雙鞋時需要各種材料和零件一樣,編程也需要各種成熟的“部件”,而這些“部件”就是別人為我們寫好的一堆程序或源代碼,我們可以在自己的程序中引用它,從而達到“編寫一次,多次使用”的效果。庫的使用方法6下載庫文件從官方網(wǎng)站或其他可信來源下載需要的庫文件。安裝/復制庫文件將下載的庫文件解壓縮到計算機上。代碼中導入庫
在Processing代碼中,使用import命令導入庫。庫的下載與安裝7單擊菜單欄的“速寫本”→“引用庫文件”→“ManagerLibraries”,打開ContributionManager窗口。在Libraries選項卡下方的搜索欄輸入Video,選擇與Processing版本對應的VideoLibraryforProcessing4單擊右下角的Install,等待幾分鐘下載和安裝完成。使用ContributionManager管理庫庫的下載與安裝8單擊菜單欄的“文件”→“偏好設定”,“速寫本位置”顯示了Processing儲存文件的地址,將這段地址全部選中并復制打開資源管理器,將地址粘貼到路徑框中,按下回車即可打開速寫本目錄該目錄下的Libraries文件夾便是儲存庫文件的地方。只需要將準備好的庫文件復制到該文件夾,便可完成庫的手動安裝。備用方案:手動下載與安裝庫速寫本目錄下保存的文件相當于為程序運行提供的環(huán)境,當需要轉移程序到另一臺電腦時,也需要將速寫本中用到的庫一并轉移。速寫本的位置可以在偏好設置中改變,為了程序穩(wěn)定,路徑不能包含中文。小知識加載媒體文件9步驟1單擊菜單欄的“文件”→“新建”,新建一個程序;步驟2單擊“文件”→“保存”,將文件命名為“media_01”,并保存到全英文路徑下。步驟3單擊“速寫本”→“添加文件”,打開添加文件窗口,選中要添加的媒體素材并單擊右下角的“打開”,素材就被復制到程序所在的目錄下了。步驟4單擊“速寫本”→“打開程序目錄”,可以看到程序目錄中,除了主程序media_01.pde外多了一個data文件夾,添加的素材就在這個文件夾中。
直接將素材復制到程序所在目錄的data文件夾中,同樣可以添加素材。試試看用到的素材必須放在程序目錄下!任務:播放視頻10單擊菜單欄的“速寫本”→“引用庫文件”→對應Processing版本的“VideoLibrary”,自動添加一行代碼“importProcessing.video.*;”。直接在編輯區(qū)輸入這行代碼另一方法庫的導入在Processing中,使用庫是一種將額外功能集成到項目中的方式。Processing支持通過關鍵字import來引入庫。比如在本案例中,代碼的第一行便是:importprocessing.video.*;使用import關鍵字,后跟庫的名稱,將庫引入代碼中。Processing附帶了許多內置庫,如video、sound、serial等,提供了多數(shù)常用功能。此外,還可以使用外部庫來擴展Processing的功能。一旦引入庫,就可以使用庫中提供的類、函數(shù)和常量。例如,本案例在引入video庫后,可以使用Movie類和相關函數(shù)來處理視頻。庫的引用任務:播放視頻12importprocessing.video.*;//導入視頻處理相關的庫Moviemov;//聲明一個名為mov的視頻對象//設置程序初始環(huán)境voidsetup(){size(1280,720);mov=newMovie(this,"testmovie.mp4");//初始化視頻對象,加載視頻文件
mov.play();//開始播放視頻}//特殊的視頻事件處理函數(shù),在每一幀更新時調用voidmovieEvent(Moviemov){mov.read();//讀取視頻的下一幀}//繪制函數(shù),在每一幀繪制時調用voiddraw(){//將當前視頻幀繪制到屏幕上,起始位置為(0,0),大小與窗口相同
image(mov,0,0,width,height);}要注釋!read()和play()是processing.video庫中的函數(shù),需要導入該庫后才能使用注意!任務:播放視頻13引入多個庫時,可能會出現(xiàn)函數(shù)或類的命名沖突。使用庫的前綴來區(qū)分不同庫中的相同命名的函數(shù)或類。比如在下面這段代碼中同時引入了兩個庫:video庫和sound庫,并且它們都有一個名為play()的函數(shù)。當程序中存在這個play()函數(shù)的時候,由于存在命名沖突,Processing不知道應該使用哪個庫中的play()函數(shù)。這時候需要用庫的前綴來區(qū)分不同庫中的相同命名的函數(shù)或類。命名沖突importprocessing.video.*;importprocessing.sound.*;
voidsetup(){//一些代碼}
voiddraw(){//一些代碼video.play();//調用video庫中的play()函數(shù)sound.play();//調用sound庫中的play()函數(shù)}總結:庫(library)15隨堂測驗-庫趁熱打鐵概念定義:庫是一組預先編寫好的代碼集合,用于解決特定的問題或執(zhí)行特定的任務。作用:提供可重用的代碼,避免重復編寫相同功能的代碼,提高開發(fā)效率。安裝內置管理器:使用ContributionManager管理庫手動下載安裝:從官方網(wǎng)站或其他來源下載所需的庫文件,將解壓后的庫文件夾復制到編程環(huán)境的指定位置導入導入庫:使用import命令導入所需的庫。例:importExampleLibrary.*;調用庫中的函數(shù):通常使用
庫名.函數(shù)名()的方式來調用。例:
ExampleLibrary.functionName()挑戰(zhàn):修改代碼-播放控制16可用代碼語法說明mov.speed()mov.speed(rate)設置播放速度mov.jump()mov.jump(time)跳轉到指定時間(單位:秒)mov.pause()mov.pause()暫停播放mov.play()mov.play()開始播放mov.loop();mov.loop();開始循環(huán)播放//單擊鼠標切換播放/暫停booleanisPlaying=true;//監(jiān)視播放狀態(tài)voidmousePressed(){if(isPlaying){mov.pause();//暫停視頻
}else{mov.play();//播放視頻
}isPlaying=!isPlaying;//切換播放狀態(tài)}可用代碼-3//按下空格重播voidkeyPressed(){if(key=='
'){mov.jump(0);//重新播放視頻(跳轉到開始位置)
isPlaying=true;//更新播放狀態(tài)
}}可用代碼-4視頻循環(huán)播放兩倍播放速度單擊鼠標切換播放/暫停按下空格重播提交作業(yè)【創(chuàng)意編程實踐】5.1-視頻播放任務注:單引號之間有空格任務:播放音頻-準備工作17安裝庫使用內置管理器ContributionManager下載安裝sound庫或手動下載安裝到指定路徑新建項目新建名為“music_01”的項目準備素材在速寫本中添加媒體文件“testmusic.mp3
“或復制媒體文件至程序文件夾下data文件夾內引入庫速寫本中引入庫文件“sound”或直接輸入代碼:importprocessing.sound.*;任務:播放音頻18importprocessing.sound.*;//導入處理音頻的庫SoundFilesound;//聲明一個SoundFile類型的變量,用于存儲音頻文件voidsetup(){size(600,600);//創(chuàng)建一個600x600像素的窗口
background(255);//設置背景顏色為白色
sound=newSoundFile(this,"testmusic.mp3");//加載音頻文件到sound變量中
sound.play();//播放音頻文件}voiddraw(){//持續(xù)更新畫面確保窗口保持活動狀態(tài)}刪掉draw()函數(shù),音樂還會播放嗎?為什么?試一試實現(xiàn)基礎播放功能任務testmusic.mp3素材任務:播放音頻19voidmousePressed(){//單擊鼠標切換播放/暫停
if(sound.isPlaying()){//如果音頻正在播放
sound.pause();//暫停音頻播放
}else{//如果音頻未在播放
sound.play();//播放音頻
}}添加播放控制功能任務sound.isPlaying()用于檢查音頻是否正在播放。如果音頻正在播放,它會返回true,否則返回false。說明任務:播放單擊音效20importprocessing.sound.*;SoundFilesound;voidsetup(){size(600,600);background(255);sound=newSoundFile(this,"testsound.mp3");}voiddraw(){}voidmousePressed(){sound.play();}sound_effect新建項目鼠標快速點擊會導致多個音效同時播放試一試testsound.mp3素材任務:播放單擊音效21importprocessing.sound.*;SoundFilesound;voidsetup(){size(600,600);background(255);sound=newSoundFile(this,"testsound.mp3");}voiddraw(){}voidmousePressed(){if(!sound.isPlaying()){//避免多個按鍵音效同時播放
sound.play();}}testsound.mp3素材避免多個按鍵音效同時播放挑戰(zhàn)sound.isPlaying()用于檢查音頻是否正在播放。如果音頻正在播放,它會返回true,否則返回false。提示1符號!是邏輯運算符,表示邏輯“非”。它用于對布爾值進行取反操作,即將true變?yōu)閒alse,將false變?yōu)閠rue。例:!true提示2數(shù)字音頻有多種格式,每種格式都有其特定的優(yōu)缺點和適用場景。清晰了解每種音頻格式的特點和適用場景,以便更好地選擇合適的格式來滿足項目需求。相關知識:常見音頻格式音頻格式壓縮方式音質文件大小主要用途W(wǎng)AV無損高大音頻編輯、存檔、無損音樂存儲等MP3有損中~高小網(wǎng)絡傳輸、音樂播放器、流媒體服務等OGG有損中~高小音樂流媒體服務、游戲開發(fā)等FLAC無損高小高音質音樂存儲、音樂制作等AAC有損高小數(shù)字音樂、視頻流媒體服務等任務:音量監(jiān)控23任務要求播放音樂,并實時顯示音量數(shù)值。任務:音量監(jiān)控24importprocessing.sound.*;//導入處理音頻的庫SoundFilesound;//聲明一個SoundFile類型的變量,用于存儲音頻文件Amplitudeamp;//聲明一個Amplitude類型的變量,用于分析音頻振幅voidsetup(){size(640,360);//創(chuàng)建一個640x360像素的窗口
background(255);//設置背景顏色為白色
//加載音頻文件"testmusic.mp3"到sound變量中并播放
sound=newSoundFile(this,"testmusic.mp3");sound.play();//創(chuàng)建一個Amplitude對象amp,并將其連接到加載的音頻文件上
amp=newAmplitude(this);amp.input(sound);}voiddraw(){//在控制臺打印當前音頻的振幅值
println(amp.analyze());}任務:音量監(jiān)控25創(chuàng)建Amplitude對象amp,用于分析音頻的振幅,并將其連接到加載的音頻文件上。在draw()函數(shù)中,調用amp.analyze()方法,實時獲取當前音頻的振幅值使用println()函數(shù)將其打印到控制臺上說明創(chuàng)意技巧26將數(shù)字從一個范圍重新映射到另一個范圍。工具:映射函數(shù)map()映射是創(chuàng)意編程中的一項重要技巧,將不同類型或來源的數(shù)據(jù)轉化為具有視覺、聽覺等效果的輸出。這種技巧能夠創(chuàng)造出有趣的互動體驗,使得編程作品更加生動和具有吸引力。創(chuàng)意技巧鼠標鼠標坐標鼠標移動速度鼠標點擊次數(shù)音頻音頻振幅音頻頻譜音調音量鍵盤輸入鍵盤按鍵鍵盤組合鍵鍵盤按鍵持續(xù)時間時間當前時間時間間隔計時器環(huán)境溫度濕度光線強度運動傳感器數(shù)據(jù)隨機要素隨機數(shù)生成器任務二描述任務二:聲音可視化任務具體要求實現(xiàn)隨音量變化的動畫任務:播放音頻-準備工作28新建項目新建名為“AmpAnalyze_02”的項目準備素材在速寫本中添加媒體文件或復制媒體文件至程序文件夾下data文件夾內引入庫速寫本中引入庫文件或直接輸入代碼:importprocessing.sound.*;任務二實現(xiàn)步驟1:單擊菜單欄的“文件”→“新建”,新建一個程序;步驟2:單擊“文件”→“保存”,將文件命名為“AmpAnalyze_02”,并保存到全英文路徑下。步驟3:單擊“速寫本”→“添加文件”,打開添加文件窗口,選中準備好的音頻“testmusic.mp3”,單擊右下角的“打開”,將素材就復制到程序所在的目錄下。步驟4:在代碼編寫區(qū)輸入以下代碼;importprocessing.sound.*;SoundFilesound;Amplitudeamp;voidsetup(){size(640,360);background(255);sound=newSoundFile(this,"testmusic.mp3");
sound.play();amp=newAmplitude(this);
amp.input(sound);}voiddraw(){
println(amp.analyze());background(255);floatrectHeight
=map(amp.analyze(),0,1,0,height);fill(255,0,0);//顏色為紅色
rect(0,height-rectHeight,width,rectHeight);}任務二實現(xiàn)步驟6:單擊按鈕運行程序,可以看到一個隨音樂變化的紅色矩形可視化效果。矩形的高度根據(jù)音頻振幅的大小而變化,使用戶可以通過視覺方式觀察到音頻的振幅變化?!境脽岽蜩F】31附件作業(yè):【創(chuàng)意編程實踐】音頻播放sound_effect聲音可視化:在程序基礎上增加額外的數(shù)值映射特效,如顏色、形狀等。任務三描述任務三:過渡動畫任務具體要求使用lerp()函數(shù)實現(xiàn)平滑運動效果任務:播放音頻-準備工作33新建項目新建名為“AmpAnalyze_03”的項目準備素材在速寫本中添加媒體文件或復制媒體文件至程序文件夾下data文件夾內引入庫速寫本中引入庫文件或直接輸入代碼:importprocessing.sound.*;任務三實現(xiàn)importProcessing.sound.*;SoundFilesound;Amplitudeamp;floattargetRectH=0;//定義矩形目標高度floatcurrentRectH=0;//定義矩形當前高度floatChangeSpeed=0.07;//調整此值以控制矩形高度變化速度voidsetup(){size(640,360);background(0);sound=newSoundFile(this,"testmusic.mp3");
sound.play();
amp=newAmplitude(this);
amp.input(sound);}voiddraw(){background(0);
//獲取音頻振幅并計算矩形高度
floatampLevel=amp.analyze();
targetRectH=map(ampLevel,0,1,0,height);
//平滑過渡矩形高度
currentRectH=lerp(currentRectH,targetRectH,ChangeSpeed);
//添加變色效果
floatRGBcolor=map(ampLevel,0,1,0,255);fill(RGBcolor,0,255-RGBcolor);
//繪制矩形
rect(0,height-currentRectH,width,currentRectH);}lerp()函數(shù)通常用于在動畫、圖形漸變、平滑運動以及其他需要平滑過渡的情況下,生成中間值。它接受三個參數(shù):start:起始值。stop:結束值。amt:插值的程度,通常在0.0到1.0之間。lerp()函數(shù)的數(shù)學表達式如下:lerp(start,stop,amt)=start+(stop-start)*amt動畫過渡在本案例中,定義平滑動畫所需的三個參數(shù):floattargetRectH=0;//定義矩形目標高度floatcurrentRectH=0;//定義矩形當前高度
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年醫(yī)院醫(yī)療規(guī)范執(zhí)行合同
- 民航華東地區(qū)管理局機關服務中心2025年公開招聘工作人員備考題庫及參考答案詳解一套
- 西藏自治區(qū)外事辦公室2026年度急需緊缺人才引進備考題庫及答案詳解一套
- 2025年招商銀行??诜中猩鐣衅競淇碱}庫及一套答案詳解
- 2026年職業(yè)雇傭合同
- 2026年員工福利采購合同
- 2026年醫(yī)療標書制作合同
- 《三角函數(shù)與概率統(tǒng)計知識結構圖解教程》
- do的用法和結構:六至八年級英語基礎語法教學
- 技術項目管理規(guī)劃與設計模板
- 2025年四級營養(yǎng)師考試題庫(含答案)
- 2025貴州銅仁市千名英才·智匯銅仁赴西安引才151人(公共基礎知識)測試題附答案解析
- 復腎寧膠囊質量標準研究
- 2025團員教育評議大會
- 2025年10月自考14462小學綜合性學習與跨學科教學.試題及答案
- 七年級歷史上冊第三次月考卷新教材統(tǒng)編版
- 德國風俗文化概述
- 糖尿病足潰瘍VSD治療創(chuàng)面負壓參數(shù)優(yōu)化方案
- 英語專業(yè)畢業(yè)論文完整版
- 鐵路客運規(guī)章應用課件 1-2 鐵路旅客票價計算
- 三類醫(yī)療器械經(jīng)營企業(yè)負責人試題卷(附答案)
評論
0/150
提交評論