




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
音頻視頻處理庫音頻錄制與回放利用pyaudio進行錄音,關(guān)鍵步驟有三步:
①建立音頻流對象;②建立wav文件;③循環(huán)將音頻流中的數(shù)據(jù)寫入wav文件。建立音頻流對象需使用pyAudio類的open方法,其參數(shù)包括采樣格式(format)、聲道數(shù)(channels)、采樣率(rate)、數(shù)據(jù)塊大?。╢rames_per_buffer)、是否為輸入流(input)、是否為輸出流(output)等。錄音時將參數(shù)input設(shè)為True,播音時將參數(shù)output設(shè)為True。錄音文件可利用wave模塊的open方法建立。為了正確存儲音頻,新建的wav文件的參數(shù)(采樣格式、聲道數(shù)等)應(yīng)該和音頻流對應(yīng)的參數(shù)保持一致西安交通大學(xué)計算機教學(xué)實驗中心2音頻編輯音頻剪輯可以使用pydub庫實現(xiàn)。該模塊自身只支持wav格式的文件處理。如果想處理其他格式的音頻,那么需要在本地安裝FFmpeg庫。31.打開音頻文件打開音頻文件要使用pydub的AudioSegment類,下面是打開不同格式音頻文件的方法:frompydubimportAudioSegmentmusic=AudioSegment.from_wav('東方紅.wav') #讀取wav文件music=AudioSegment.from_mp3('東方紅.mp3') #讀取mp3文件music=AudioSegment.from_ogg('東方紅.ogg') #讀取ogg文件music=AudioSegment.from_flv('東方紅.flv') #讀取flv文件的音頻音頻編輯42.音頻剪切打開音頻文件后,就可以進行剪切、拼接等操作。例如:clip=music[:20*1000] #截取前20秒clip=music[-20000:] #截取后20秒clip=music[20*1000:40*1000] #從第20秒截取到第40秒以上括號內(nèi)的時間都要轉(zhuǎn)換成以毫秒為單位。3.音頻拼接兩段音頻的拼接用加號就可以實現(xiàn),例如:clip1=music[:20*1000] #裁剪前20秒音頻clip2=music[-20*1000:] #裁剪后20秒音頻clip=clip1+clip2 #拼接音頻音頻編輯54.調(diào)節(jié)音量音量的增減只需要用音頻對象加一個常數(shù)即可:music=music-5 #音量減少5dBmusic=music+5 #音量增加5dB5.漸入漸出效果在連續(xù)演奏多段音樂時,交叉漸入漸出(淡入、淡出)是兩段音樂之間常見的過渡方式。假如有music1和music2兩段音頻,有6秒的交叉過度:music3=music1.append(music2,crossfade=6000) 視頻回放6ffpyplayer庫共有Player、Writer、Images、Tools四個模塊Player模塊用于音視頻播放Writer模塊用于生成視頻文件(不含音頻)Images模塊用于圖像格式轉(zhuǎn)換Tools模塊用于獲取編碼信息、編碼轉(zhuǎn)換等操作。Player模塊只有一個MediaPlayer類,它移植了FFmpeg中的播放器FFplay的大多數(shù)功能。該類使用get_frame()函數(shù)獲取視頻中的一幀圖像,同時利用SDL自動播放音頻。
視頻回放7視頻播放器使用了ffpyplayer庫的MediaPlayer類、Image
類,pillow庫的Image類、ImageTk類。其中ImageTk可以從pillow圖像創(chuàng)建適合Tkinter使用的位圖圖像。最終圖像在Tkinter的Label上顯示。具體步驟如下:①利用MediaPlayer類的get_frame()方法獲取每一幀圖像;②利用ffpyplayer的Image類方法to_memoryview()將圖像轉(zhuǎn)換成內(nèi)存中的數(shù)組;③利用pillow的Image類方法fromarray()將得到的數(shù)組轉(zhuǎn)換成pillow圖像;④利用pillow的ImageTk類方法將pillow圖像轉(zhuǎn)換成適合Tkinter使用的圖像,并在Label上顯示該圖像。
視頻回放8fromtkinterimport*importnumpyasnpfromPILimportImage,ImageTkfromffpyplayer.playerimportMediaPlayerval=''player=NonedefPlayVideo():globalvalframe,val=player.get_frame()whileval!='eof':ifframeisnotNone:
img,tm=frame
#獲取幀的圖及當前時間[w,h]=img.get_size() #獲取圖像寬、高arr=np.asarray(img.to_memoryview()[0]).reshape(h,w,3)
#將圖像轉(zhuǎn)為數(shù)組列表current_image=Image.fromarray(arr).resize((560,320))
#數(shù)組轉(zhuǎn)換成圖像,縮放imgtk=ImageTk.PhotoImage(image=current_image)
#創(chuàng)建適用于tkinter的圖像movieLabel.config(image=imgtk)
#動態(tài)修改標簽上的圖像
movieLabel.update() #每次執(zhí)行都更新界面frame,val=player.get_frame() #讀取下一幀player.close_player()視頻回放9defcloseWindow():ifval!='eof': player.close_player()#若正在播放則先停止播放root.destroy()player=MediaPlayer("西遷精神.mp4")root=Tk()root.title('視頻播放')root.geometry("580x350+400+200")#更改大小和位置img1=Image.new("RGB",(560,320),'darkgray') #建立圖像img2=ImageTk.PhotoImage(image=img1)
#轉(zhuǎn)換圖像為Tk圖像movieLabel=Label(root,image=img2) #創(chuàng)建用于播放視頻的容器movieLabel.pack(padx=10,pady=10)tocol('WM_DELETE_WINDOW',closeWindow)PlayVideo()視頻編輯10可以利用moviepy或opencv進行,它們都需要FFmpeg的支持才能很好地工作。安裝這兩個模塊只需運行pip命令即可。相比而言,利用moviepy操作視頻更加便利,本節(jié)僅介紹moviepy的簡單使用方法。1.打開視頻文件引入moviepy.editor下的全部類:frommoviepy.editorimport*利用VideoFileClip類打開視頻,建立相關(guān)對象:video=VideoFileClip('西遷精神.mp4')2.保存視頻片段假設(shè)clip是修改完成的視頻對象,使用下面方法可以保存視頻文件:clip.write_videofile("newclip.mp4")視頻編輯113.獲取視頻信息輸出視頻片段clip的時長(秒)、圖像分辨率(寬和高)、每秒幀數(shù):print(clip.duration,clip.size,clip.fps)4.截取視頻片段假設(shè)clip是修改完成的視頻對象,使用下面方法可以保存視頻文件:clip.write_videofile("newclip.mp4")5.視頻片段拼接假設(shè)clip1和clip2為兩個視頻片段,用concatenate_videoclips方法拼接,下面語句中的參數(shù)method='compose'表示對于任何視頻參數(shù)均以原視頻的最大值為基礎(chǔ)進行拼接。final_clip=concatenate_videoclips([clip1,clip2],method='compose')
final_clip.write_videofile("composition.mp4") #保存片段視頻編輯126.按區(qū)域裁剪視頻對象類的crop()方法可以裁剪一個矩形區(qū)域的視頻,其參數(shù)(x1,y1)指定區(qū)域的左上角,(x2,y2)指定區(qū)域的右下角。cropped=clip.crop(x1=0,y1=0,x2=460,y2=275) #裁剪clip的一個區(qū)域cropped.write_videofile("cut.mp4") #保存結(jié)果7.截取一幀圖像下面用視頻對象類的save_frame()函數(shù)截取視頻clip中第7.2秒的視頻畫面并存儲為screen.jpg。clip.save_frame('screen.jpg',t=7.2)視頻編輯138.調(diào)節(jié)音量大小視頻對象類的的volumex()函數(shù)用于調(diào)節(jié)音量大小,參數(shù)為實數(shù)。#在生成的clip1中調(diào)低音量為當前的70%(volume*0.7)clip1=clip.volumex(0.7) #在生成的clip1中調(diào)高音量為當前的2倍(volume*2.0)clip1=clip.volumex(2.0)9.調(diào)整分辨率可以用視頻對象類的resize()方法調(diào)整分辨率。以下兩個語句是等價的。clip_scale=clip.resize((clip.w//2,clip.h//2)) #寬度和高度都縮一半clip_scale=clip.resize(0.5) #等比縮放0.5視頻編輯1410.調(diào)整播放速度可以用視頻對象類的speedx()方法調(diào)整播放速度。clip_sp2x=clip.speedx(2) #創(chuàng)建倍速視頻clip_sp05x=clip.speedx(0.5) #創(chuàng)建速度減半的視頻11.調(diào)節(jié)視頻幀
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年中國聯(lián)通博爾塔拉蒙古自治州分公司公開招聘筆試參考題庫附帶答案詳解
- 項目團隊沖突管理的相關(guān)考點試題及答案
- 2023年中國電信股份有限公司贛州分公司章貢區(qū)分局招聘勞務(wù)派遣制工作人員筆試參考題庫附帶答案詳解
- 2024年項目管理專業(yè)人士考點試題及答案揭秘
- 2024年項目管理資格考試知識的重要性試題及答案
- 2024年微生物領(lǐng)域的熱點問題試題及答案
- 2023年中交一公局(呂梁)集中供熱建設(shè)運營有限公司社會招聘筆試參考題庫附帶答案詳解
- 木片在室內(nèi)裝飾領(lǐng)域的應(yīng)用考核試卷
- 2024年項目管理考試內(nèi)容試題及答案
- 2023年《中國煙草》雜志社有限公司招聘筆試參考題庫附帶答案詳解
- PFMEA的嚴重度SOD的評分和優(yōu)先級別
- 婚育情況登記表
- INVOICE-商業(yè)發(fā)票樣本格式
- 圓周率1000000位 完整版
- DB33-1036-2021《公共建筑節(jié)能設(shè)計標準》
- 巖芯鑒定手冊
- 快速排序算法高校試講PPT
- 甘肅歷史與甘肅文化
- 工程勘察設(shè)計收費標準
- 高邊坡施工危險源辨識及分析
- 江蘇工業(yè)企業(yè)較大以上風(fēng)險目錄
評論
0/150
提交評論