菜鳥修煉筆記 alsa 調節音訊音量大小

2021-10-19 19:23:31 字數 2162 閱讀 1868

二。方法二:在linux終端直接設定alsa的引數。

但實際上,我只成功使用了第二種方法,下面將簡單介紹一下第一種方法的原理,和我的嘗試,然後將重點放在第二種方法的介紹上。

由於我沒有成功通過這個方法來放大音量,所以不詳細介紹具體的過程。下面主要是簡單介紹一下這個方法的原理和我做過的相關嘗試。

具體的過程可閱覽參考資料1。

下面是主要的**(未全)

char

*buf;

file *fp;

buf =

(char*)

malloc

(size);//size為錄音檔案大小,int型

memset

(buf,

0x00

, size)

;//開啟音訊檔案

fp =

fopen

(default_path,

"rb");

//default_path為音訊檔案路徑

fread

(buf ,

1, size,fp)

;//取出快取區的資料,放大30倍後放回快取區

int count_value =0;

int size1 = frames * datablock;

//size1為每次寫入音訊裝置的資料大小,

while(1

)snd_pcm_drop

(handle)

;snd_pcm_close

(handle)

;

下面是起放大作用的主要**:(主要的引數同2.1)

snd_pcm_readi

(handle,buffer,frames)

;//讀出錄下的資料於快取

int tmp;

tmp =

(*buffer)*40

;//放大快取

(*buffer)

= tmp;

fwrite

(buffer,

1, size, fd)

;//將快取寫入音訊檔案。

結果也是沒有將音量變大

直接在終端通過alsa的相關命令,先獲取可以設定的引數,然後更改所需引數的值。

執行:

amixer controls
可得:

numid=3,iface=mixer,name=

'master playback volume'

numid=2,iface=mixer,name=

'capture mic path'

numid=1,iface=mixer,name=

'playback path'

numid=4,iface=mixer,name=

'digital capture volume'

由名字可知各個引數的含義。

執行:

amixer contents
可得:

numid=3,iface=mixer,name=

'master playback volume'

; type=integer,access=rw---rw-,values=2,min=0,max=255,step=0

: values=255,255

| dbscale-min=-20.00db,step=0.03db,mute=0

numid=4,iface=mixer,name=

'digital capture volume'

; type=integer,access=rw---rw-,values=2,min=0,max=120,step=0

: values=67,67

| dbscale-min=-30.00db,step=0.41db,mute=0

執行:

amixer cset numid=3,iface=mixer,name=

'master playback volume' 255

amixer cset numid=4,iface=mixer,name=

'digital capture volume' 120

菜鳥修煉第一周

while scanf d a eof while scanf d a eof是end of file的縮寫,表示 文字流 stream 的結尾。這裡的 文字流 可以是檔案 file 也可以是標準輸入 stdin 該巨集定義在stdio.h中。eof不是特殊字元,而是乙個定義在標頭檔案stdio.h...

SQLI LABS修煉筆記(三)

寫在前面 如果該檔案不存在,或因為上面的任一原因而不能被讀出,函式返回空。比較難滿足的 就是許可權,在windows 下,如果ntfs 設定得當,是不能讀取相關的檔案的,當遇到只有 administrators 才能訪問的檔案,users 就別想load file 出來。在實際的注入中,我們有兩個難...

ubuntu菜鳥筆記

linux 基礎 linux 的靈感源自 1969 年就出現的 unix 作業系統,時至今日該系統仍被廣泛使用,並在不斷發展中。unix 背後的許多設計慣例也同樣存在於 linux 中,對系統基本原理的理解至關重要。unix 最初主要使用命令列介面,這在 linux 中也得到了保留。也就是說,圖形使...