亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Qt的WAV音頻剪切軟件的實(shí)現(xiàn)

        2021-04-13 04:38:36
        中國新技術(shù)新產(chǎn)品 2021年2期
        關(guān)鍵詞:音頻文件鼠標(biāo)音頻

        徐 晉

        (中國船舶集團(tuán)第七一五研究所,浙江 杭州 310000)

        0 引言

        在研究水聲目標(biāo)時(shí),由于研究人員不知道什么時(shí)間會(huì)出現(xiàn)特征音頻,所以就會(huì)對整個(gè)實(shí)驗(yàn)進(jìn)行全程錄音;這就會(huì)出現(xiàn)錄音時(shí)長較長且錄音文件較大的問題,為后續(xù)對目標(biāo)音頻的特征分析帶來困難。為了解決該問題,研究人員可以使用音頻編輯軟件對感興趣的音頻進(jìn)行裁剪后再做分析?,F(xiàn)在市面上已經(jīng)有了許多非常優(yōu)秀的商業(yè)音頻編輯軟件,例如Cool Edit等。但是由于軟件版權(quán)和系統(tǒng)環(huán)境的限制,就導(dǎo)致了在某些特定場景下無法使用該類軟件。通過運(yùn)用Qt的跨平臺(tái)特性,可以開發(fā)1款擁有自主知識(shí)產(chǎn)權(quán)的跨平臺(tái)音頻編輯軟件。該文主要討論了如何開發(fā)1款基于Qt的WAV音頻剪切軟件,從而解決前文中所提到的問題。

        該軟件使用Qt Creator平臺(tái)進(jìn)行開發(fā)。Qt Creator是Qt推出的1款輕量級集成開發(fā)環(huán)境,它包括項(xiàng)目生成向?qū)А⒏呒壍腃++代碼編輯器、瀏覽文件及類的工具、集成了Qt Designer、Qt Assistant、Qt Linguist、圖形化的 GDB 調(diào)試前端,集成 qmake構(gòu)建工具等。Qt Creator具有跨平臺(tái)的特性,其開發(fā)的軟件可以在Windows、Linux、VxWork以及移動(dòng)平臺(tái)上部署[1]。

        1 軟件架構(gòu)

        WAV音頻裁剪軟件的功能模塊主要分為波形顯示模塊、播放控制模塊、音頻剪切模塊以及音頻錄制模塊。

        波形顯示模塊主要具備繪制音頻文件的時(shí)域幅度圖像、繪制時(shí)長坐標(biāo)、管理水平Slider的樣式以及操作控制等功能。

        播放控制模塊主要具備載入音頻文件、控制音頻文件的播放以及控制媒體音量等功能。

        音頻裁剪模塊實(shí)現(xiàn)了對剪切音頻文件的靜態(tài)參數(shù),該函數(shù)的4個(gè)參數(shù)分別是待裁剪文件的絕對路徑、裁剪后文件的保存路徑、舍棄前段音頻文件時(shí)長以及舍棄的后端音頻文件時(shí)長。

        音頻錄制模塊主要具備音頻錄制以及控制音頻錄制的功能。最后將各個(gè)模塊整合成音頻剪切軟件,打通功能模塊之間的接口并調(diào)用,從而實(shí)現(xiàn)功能菜單欄。

        2 軟件實(shí)現(xiàn)

        2.1 WAV文件介紹

        WAV為微軟公司開發(fā)的1種聲音文件格式,它符合RIFF文件的規(guī)范,可以用來保存Windows平臺(tái)的音頻信息資源,廣泛應(yīng)用于Windows平臺(tái)及其應(yīng)用程序。WAV文件通常使用聲道數(shù)、采樣頻率和采樣位數(shù)來表示聲音。采樣位數(shù)分為8位、16位和24位;聲道分為單聲道和立體聲,單聲道振幅數(shù)據(jù)為n×1的矩陣點(diǎn),立體聲為n×2的矩陣點(diǎn),采樣頻率一般有11025 Hz(11 kHz)、22050 Hz(22 kHz)和44100 Hz(44 kHz)3種[2]。WAV文件的基本格式見表1。

        表1 WAV文件的基本格式

        通過解析WAV文件可以獲取各個(gè)時(shí)刻的音頻振幅信息,也可以按照其格式編輯WAV文件,從而達(dá)到剪切的效果。

        2.2 波形顯示模塊

        2.2.1 時(shí)域幅度圖像繪制

        自定義1個(gè)基于QWiget的波形顯示類WaveDisplay,重載其PainEvent()函數(shù)。在PainEvent()函數(shù)中調(diào)用QPainter的drawLine()函數(shù)繪制時(shí)域幅度圖像,幅度數(shù)據(jù)可以通過對WAV文件數(shù)據(jù)塊解析的方式獲得。根據(jù)WAV文件聲道數(shù)的不同,采用不同的繪制方式。為了支持波形圖像的縮放功能,在繪制時(shí)需要代入圖像的尺寸信息,關(guān)鍵代碼如下。

        2.2.2 時(shí)長坐標(biāo)繪制

        通過調(diào)用播放控制模塊的預(yù)留接口, 可以將WAV文件的時(shí)長信息精確到毫秒。繪制時(shí)長坐標(biāo)分為繪制文字和繪制標(biāo)尺線;使用QPainter的drawText()函數(shù)繪制文字,由于文字顯示的“xx:xx:xx:xxx”字符串較長,如果要讓字符在首部與尾部完整的顯示,就需要進(jìn)行左右搬移,這就會(huì)導(dǎo)致字符串之間的間隔不統(tǒng)一,因此在首部與尾部不繪制文字。使用QPainter的drawLine()函數(shù)繪制標(biāo)尺線,標(biāo)尺分為長橫線和短豎線;為了適應(yīng)縮放,長橫線與時(shí)域幅度圖像等寬;短豎線每繪制若干格就標(biāo)注1個(gè)刻度信息。需要注意的是,每一格坐標(biāo)的長度會(huì)隨著縮放比例的變化而變化,如果單格長度過長就會(huì)顯得坐標(biāo)不夠美觀;因此,時(shí)長坐標(biāo)格數(shù)應(yīng)該隨著縮放比例的變化而變化。在該軟件中,當(dāng)縮放比例小于5倍時(shí),2個(gè)標(biāo)注之間繪制5格;當(dāng)縮放比例大于5倍時(shí),2個(gè)標(biāo)注之間繪制10格。

        2.2.3 水平Slider的樣式管理

        使用Qt自帶的QSlider來實(shí)現(xiàn)用水平Slider去表示當(dāng)前顯示的幅度波形在全局幅度波形中的位置。QSlider總長度表示W(wǎng)AV文件的全長,滑塊長度表示當(dāng)前可視范圍內(nèi)的時(shí)長。通過設(shè)置QSlider的樣式表,可以控制滑塊的長度;調(diào)用QSlider的SetValue()函數(shù)可以設(shè)定滑塊的位置。

        2.2.4 操作控制

        按住鼠標(biāo)左鍵拖拽可以實(shí)現(xiàn)選中的操作。需要重載鼠標(biāo)按下事件(mousePressEvent)、鼠標(biāo)移動(dòng)事件(mouseMoveEvent)以及鼠標(biāo)松開事件(mouseReleaseEvent)。按下鼠標(biāo)左鍵時(shí)記錄按下點(diǎn)的位置坐標(biāo),拖拽時(shí)記錄下最新的位置坐標(biāo),松開鼠標(biāo)左鍵視為完成拖拽操作,根據(jù)起始點(diǎn)與結(jié)束點(diǎn)生成選中區(qū)域。

        調(diào)用setContextMenuPolicy(Qt::ActionsContextMenu)函數(shù)設(shè)置菜單按照默認(rèn)方式彈出即右鍵彈出。在有選中區(qū)域的情況下單擊鼠標(biāo)右鍵,再單擊另存為按鈕就可以調(diào)用音頻裁剪模塊對選中區(qū)域進(jìn)行裁剪。

        重載波形顯示模塊的鼠標(biāo)滾輪事件(wheelEvent)可以實(shí)現(xiàn)對鼠標(biāo)滾輪的操作。滾動(dòng)滾輪調(diào)整可視窗口的前后位置;按住Ctrl鍵時(shí),滾動(dòng)滾輪調(diào)整縮放比例,縮放比例最小為1.0即不做縮放。

        2.3 播放控制模塊

        Qt為音視頻的播放和控制、相機(jī)拍攝以及收音機(jī)等多媒體應(yīng)用提供了強(qiáng)大的支持。Qt5使用了全新的Qt Multimedia模塊來實(shí)現(xiàn)多媒體的功能,Qt4中用來實(shí)現(xiàn)多媒體功能的Phonon模塊已經(jīng)被移除。該軟件使用Qt Multimedia模塊中的QMediaPlayer類來實(shí)現(xiàn)音頻的播放。QMediaPlayer類提供了一些接口函數(shù)來控制音頻播放,例如paly()、pause()以及stop()等。

        播放控制模塊包括界面上的控制按鈕、播放進(jìn)度條以及音量條與時(shí)間信息的顯示。

        新建類型為QMediaPlayer的指針,使用SetMedia()函數(shù)為其設(shè)置待播放的WAV文件。讀取WAV 的時(shí)長信息,并使用該信息繪制時(shí)長坐標(biāo)與設(shè)置進(jìn)度條。調(diào)用play()函數(shù)開始播放WAV文件。建立1個(gè)執(zhí)行周期為50 ms的計(jì)時(shí)器,每當(dāng)計(jì)時(shí)器完成1輪計(jì)時(shí)就可以獲取播放進(jìn)度,并使用播放進(jìn)度在波形顯示模塊繪制進(jìn)度標(biāo)識(shí)線以及更新播放時(shí)間的信息。根據(jù)播放的情況對播放按鈕設(shè)置不同的圖標(biāo)。

        音量控制使用SetVolume()函數(shù),設(shè)定范圍在0音量~100音量之間,0表示靜音;根據(jù)靜音的情況為音量按鈕設(shè)置不同的圖標(biāo)。

        2.4 音頻裁剪模塊

        音頻裁剪模塊通過1個(gè)靜態(tài)函數(shù)來實(shí)現(xiàn),靜態(tài)函數(shù)實(shí)際上是1個(gè)全局函數(shù),不依賴1個(gè)類的對象,不創(chuàng)建對象也可以調(diào)用。靜態(tài)函數(shù)只能訪問類中靜態(tài)成員的變量。函數(shù)的4個(gè)輸入?yún)?shù)分別為待裁剪文件的絕對路徑、裁剪后文件的保存路徑、舍棄前段音頻文件的時(shí)長以及舍棄后段音頻文件的時(shí)長。函數(shù)中應(yīng)當(dāng)添加前后裁剪長度總和不得超過文件總長度的判斷條件。

        使用fopen()函數(shù)讀取待剪裁WAV文件,并將WAV文件的RIFF頭、數(shù)據(jù)類型標(biāo)識(shí)符以及格式塊等信息存入本地定義的結(jié)構(gòu)。計(jì)算前后裁剪量后就可以得到裁剪后文件的大小。將裁剪后的文件大小填入之前保存的WAV文件的RIFF頭與格式塊,使用fwrite()函數(shù)將修改后的WAV文件的RIFF頭與格式塊寫入新的WAV文件,最后寫入裁剪后的數(shù)據(jù);具體實(shí)現(xiàn)代碼如下。

        2.5 音頻錄制模塊

        QAudioInput類提供了1個(gè)接口,用于從音頻輸入設(shè)備中接收音頻數(shù)據(jù)。可以使用系統(tǒng)默認(rèn)的音頻輸入設(shè)備來構(gòu)建音頻輸入;也可以使用特定的QAudioDeviceInfo創(chuàng)建QAudioInput。創(chuàng)建音頻輸入時(shí),還應(yīng)該設(shè)定QAudioFormat用于確定錄制音頻的聲道數(shù)、采樣率以及采樣位數(shù)等參數(shù)。調(diào)用QAudioInput類的start()函數(shù)開始錄制,調(diào)用stop()函數(shù)結(jié)束錄制,并生成.raw格式的原始音頻文件。為.raw文件添加WAV的RIFF頭、數(shù)據(jù)類型標(biāo)識(shí)符和格式塊,再另存為.wav格式就能得到WAV格式的錄音文件。格式塊中的聲道數(shù)、采樣率以及采樣位數(shù)等參數(shù)信息應(yīng)當(dāng)按照錄音文件的特征填寫。

        3 結(jié)論

        通過該文所論述的方法,可以開發(fā)1款基于Qt的WAV音頻剪切軟件。該軟件主要用于解決研究人員在研究過程中遇到的WAV音頻文件過大和時(shí)長過長等問題。該軟件利用了Qt的跨平臺(tái)特性,可以在多種平臺(tái)上運(yùn)行。開發(fā)該軟件的最初目的就是為了解決研究人員現(xiàn)階段所遇到的問題,因此難免存在適應(yīng)性窄以及界面不夠美觀等問題,未來可以繼續(xù)對該軟件進(jìn)行迭代優(yōu)化,添加更多功能,例如支持多種音頻文件格式、添加一系列降噪濾波算法、音頻的插入以及編輯等。

        猜你喜歡
        音頻文件鼠標(biāo)音頻
        Progress in Neural NLP: Modeling, Learning, and Reasoning
        Engineering(2020年3期)2020-09-14 03:42:00
        必須了解的音頻基礎(chǔ)知識(shí) 家庭影院入門攻略:音頻認(rèn)證與推薦標(biāo)準(zhǔn)篇
        基于Daubechies(dbN)的飛行器音頻特征提取
        電子制作(2018年19期)2018-11-14 02:37:08
        音頻分析儀中低失真音頻信號(hào)的發(fā)生方法
        電子制作(2017年9期)2017-04-17 03:00:46
        基于Android手機(jī)的音頻文件取證技術(shù)研究
        Pro Tools音頻剪輯及修正
        人間(2015年8期)2016-01-09 13:12:42
        提取APP中的音頻文件
        電腦愛好者(2015年5期)2015-09-10 07:22:44
        數(shù)字水印在音頻文件篡改檢測中的應(yīng)用
        45歲的鼠標(biāo)
        超能力鼠標(biāo)
        IM家庭電子(2008年11期)2008-12-05 09:49:20
        欧洲女人与公拘交酡视频| 亚洲国产成人久久综合三区| 国产高清一区二区三区视频| 成人av蜜桃在线观看| 日韩精品无码一本二本三本色| 国产第一页屁屁影院| 精品久久久久88久久久| 国产精品国产三级国产专区50| 国产精品永久在线观看| 国产96在线 | 欧美| 日本精品免费一区二区三区| 亚洲激情一区二区三区视频| 精品欧美一区二区三区久久久| 国产精品亚洲一区二区在线观看| 国产真实露脸4p视频| 日本不卡的一区二区三区| 国产内射视频在线免费观看| 亚洲av毛片在线播放| 午夜人妻久久久久久久久| 亚洲日本中文字幕天天更新| 国产免费看网站v片不遮挡| 亚洲国产精品日韩专区av| 免费播放成人大片视频| 久久www免费人成精品| 尤物99国产成人精品视频| 中文字幕一区二区三区97| 国产亚洲精品品视频在线| 午夜精品久久久久久久无码| 成 人 网 站 免 费 av| 蜜桃视频中文在线观看| 国产精品精品国产色婷婷| 午夜视频在线在免费| 日韩欧美国产丝袜视频| 在线不卡中文字幕福利| 国产精品狼人久久影院软件介绍| 国产精品欧美一区二区三区不卡| 国产精品爆乳在线播放| 国产91久久精品成人看网站 | 免费啪啪av人妻一区二区| 久久久99精品免费视频| 中文字幕精品久久久久人妻|