新聞中心
在今天的音頻應(yīng)用程序中,與音頻驅(qū)動(dòng)程序相關(guān)的技術(shù)是非常關(guān)鍵的。Linux ALSA (Advanced Linux Sound Architecture) 就是 Linux 下的一種新一代音頻驅(qū)動(dòng)架構(gòu),其替代了 2.4 內(nèi)核以前的 OSS (Open Sound System)。

創(chuàng)新互聯(lián)公司主營(yíng)武安網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件定制開發(fā),武安h5重慶小程序開發(fā)搭建,武安網(wǎng)站營(yíng)銷推廣歡迎武安等地區(qū)企業(yè)咨詢
在實(shí)現(xiàn)音頻驅(qū)動(dòng)相關(guān)功能時(shí),音頻流的采集、傳輸和播放都是必須解決的問題。為了更好地了解 ALSA 音頻驅(qū)動(dòng)的實(shí)現(xiàn)和原理,本文將以 ALSA 音頻驅(qū)動(dòng)的使用實(shí)例為主線,給出了 ALAS 音頻驅(qū)動(dòng)技術(shù)的詳解。
一. ALSA 音頻驅(qū)動(dòng)入門
ALSA 音頻驅(qū)動(dòng)的安裝可以通過以下命令完成:
“`
sudo apt-get install libasound2-dev
“`
它將包括 alsa-lib 庫(kù)、alsa-tools 程序和 alsa-utils 工具套件,可以輕松地實(shí)現(xiàn) ALSA 音頻驅(qū)動(dòng)的運(yùn)行和應(yīng)用程序的開發(fā)。
二. ALSA 音頻驅(qū)動(dòng)程序中的 PCM 流
PCM 為 Pulse Code Modulation 的簡(jiǎn)稱,表示脈沖編碼調(diào)制的一種。這種編碼方式可將連續(xù)模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),進(jìn)而在計(jì)算機(jī)中處理聲音。PCM 流即 PCM 格式的音頻數(shù)據(jù),PCM 格式是目前最為常用的一種數(shù)字音頻格式,其用于表示音頻樣本的數(shù)字值,使得音頻信號(hào)的采樣和重放都變得十分簡(jiǎn)單。
ALSA 中處理 PCM 流的方式為 snd_pcm_xxx() 函數(shù),其中 xxx 可以替換為 snd_pcm_writei、snd_pcm_readi、snd_pcm_write_n() 或 snd_pcm_read_n()。x 等于 i 表示調(diào)用者需要使用非阻塞方式讀寫 PCM 流數(shù)據(jù),x 等于 n 可以在阻塞下以特定數(shù)量的樣本讀取或?qū)懭?PCM 流數(shù)據(jù)。
三. ALSA 音頻驅(qū)動(dòng)中的音量控制
音頻設(shè)備在聲音播放時(shí)需要有音量控制,這其中包括硬件方面的音量控制,以及 ALSA 音頻驅(qū)動(dòng)程序中的 ALSA Mixer。該 Mixer 提供了不同聲道、不同倍增數(shù)的兩個(gè)音量控制條,并能讓使用者通過手動(dòng)調(diào)節(jié)的形式來實(shí)現(xiàn)對(duì)聲音的調(diào)節(jié)。
四. ALSA 音頻驅(qū)動(dòng)中的音頻拾取設(shè)備
對(duì)于數(shù)字音頻設(shè)備,開發(fā)者需要用到一種稱為音頻拾取設(shè)備(capture device)的特殊硬件,并通過 ALSA 音頻驅(qū)動(dòng)程序中的接口函數(shù)進(jìn)行控制。一旦掌握了 ALSA 音頻驅(qū)動(dòng)中音頻拾取設(shè)備的相關(guān)知識(shí),開發(fā)者就可以輕松地實(shí)現(xiàn)對(duì)聲音的采集和處理。
五. ALSA 音頻驅(qū)動(dòng)中的調(diào)試技術(shù)
我們還要掌握 ALSA 音頻驅(qū)動(dòng)中的調(diào)試技術(shù)。使用該技術(shù),開發(fā)者可以進(jìn)一步優(yōu)化代碼,從而實(shí)現(xiàn)更好的音頻處理效果。在 ALSA 音頻驅(qū)動(dòng)中,一旦遇到了問題,開發(fā)者可以打開調(diào)試等級(jí),讓 ALSA 音頻驅(qū)動(dòng)程序輸出更詳細(xì)的信息,從而幫助開發(fā)者更快地解決問題。
結(jié)語
本文通過對(duì) ALSA 音頻驅(qū)動(dòng)使用實(shí)例的詳細(xì)講解,使讀者能夠更好地了解 ALSA 音頻驅(qū)動(dòng)技術(shù)的實(shí)現(xiàn)和應(yīng)用。當(dāng)然,在學(xué)習(xí) ALSA 音頻驅(qū)動(dòng)技術(shù)時(shí),需要按照一定的順序逐步學(xué)習(xí);同時(shí),還需要時(shí)刻關(guān)注實(shí)現(xiàn)過程中可能出現(xiàn)的問題,并通過調(diào)試技術(shù)進(jìn)行迅速排查。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
紅旗linux4.0系統(tǒng)如何配置聲卡
就Linux系統(tǒng)對(duì)硬件設(shè)備的支持特性而言,對(duì)聲卡的支持是很糟糕的。不過現(xiàn)在好了,有兩種驅(qū)動(dòng)程序可以彌補(bǔ)Linux系統(tǒng)的不足。一種是OSS(開放聲音系統(tǒng)),一種是ALSA(先進(jìn)Linux聲音架構(gòu))。OSS是一個(gè)商業(yè)聲卡驅(qū)動(dòng)程序,需要花錢購(gòu)買,否則每次啟動(dòng)后,你只可以免費(fèi)使用240分鐘;ALSA是自由軟件,可以免費(fèi)使用。
一、安裝OSS聲卡驅(qū)動(dòng)程序
1.從
下載OSS驅(qū)動(dòng)程序
2.啟動(dòng)Linux,把下載下來的osslinux393q-2217-UP.tar.gz拷到一個(gè)臨時(shí)目錄中,如慶禪:
cp osslinux393q-2217-UP.tar.gz /tmp/
cd /tmp
tar zxvf osslinux392v-glibc-2212-UP.tar.gz
此時(shí)文件已經(jīng)解開,你可以看到在當(dāng)前目錄下有四個(gè)文件:INSTALL、LICENSE、oss-install和oss.pkg文件,其中INSTALL是安裝幫助文件,如果你是之一次安裝一定要好好看一看。
3.配置
以root用戶身份運(yùn)行oss-install:
./oss-install
如果出現(xiàn)了“No such file or directory”的錯(cuò)誤信息,那是因?yàn)槟阆螺d的OSS驅(qū)動(dòng)程序的版本和你用的Linux不匹配,可以重新到上述站點(diǎn),下載相應(yīng)的驅(qū)動(dòng)程序就可以了。
這時(shí)候一般會(huì)提示:你的Linux以模塊的形式加載了聲卡驅(qū)動(dòng)程序,要不要安裝程序自動(dòng)將它去掉?選擇去掉就可以了。
接下來就是處理過程、協(xié)議及一大堆東西,接受協(xié)議安裝,使用默認(rèn)安裝路徑即可(/usr/lib/oss)。oss一般可以自動(dòng)檢測(cè)出大部分聲卡,你可以看看結(jié)果是不是和你的聲卡相符,如果相符,直接在菜單中選擇“Save changes and Exit..”即可。對(duì)于那些不能直接探測(cè)到的聲卡,你就只有用手工方法選擇了。如對(duì)Yamaha OPL3-SAX (YMF715/YMF719) chip 可以選擇:“Generic Yamaha OPL3-SAx (YMF715/YMF719) non-PnP”driver。
4.打開/關(guān)閉聲卡
在默認(rèn)的安裝目錄/usr/local/bin里有一個(gè)soundon命令,它可以用來打開oss驅(qū)動(dòng),同樣的你也可以用soundoff命令關(guān)閉oss驅(qū)動(dòng)。
5.疑難解譽(yù)中塵決
有時(shí)也可能出現(xiàn)這樣的情況,你的聲卡檢測(cè)到了,而且安裝過程也好像培返一切正常,但是聲卡就是不能正常工作。不要急,OSS還有可以讓你手工調(diào)節(jié)設(shè)置參數(shù)的地方,其實(shí),在“Save changes and Exit”的同一個(gè)窗口中,還有一個(gè)選項(xiàng)“Manual Configuration”,它就是讓你手工調(diào)整設(shè)置參數(shù)的,你可以在這里設(shè)置聲卡的IO、DMA等參數(shù)。
二、安裝ALSA聲卡驅(qū)動(dòng)程序
1.到
下載下面四個(gè)軟件包:
alsa-driver-0.5.9.tar.bz2
alsaconf-0.4.3b.tar.gz
alsa-lib-0.5.9.tar.bz2
alsa-utils-0.5.9.tar.bz2
2.先安裝alsa-driver-0.5.9.tar.bz2這個(gè)文件:
(1)cp alsa-driver-0.5.9.tar.bz2 /tmp
將alsa-driver-0.5.9.tar.bz2 拷到/tmp目錄下。
(2)bunzip2 alsa-driver-0.5.9.tar.bz2
解壓縮這個(gè)文件,會(huì)在/tmp目錄下生成一個(gè)文件叫做alsa-driver-0.5.9.tar。
(3)tar xvf alsa-driver-0.5.9.tar
將會(huì)在/tmp目錄下產(chǎn)生一個(gè)子目錄叫做alsa-driver-0.5.9,alsa的所有文件就存放在這個(gè)目錄下。
(4)cd alsa-driver-0.5.9
進(jìn)入alsa的驅(qū)動(dòng)程序所存放的目錄,準(zhǔn)備配置和編譯它。這時(shí)你可以看一下目錄下的INSTALL文件來了解安裝的步驟和注意事項(xiàng)。
(5)依次運(yùn)行下面三個(gè)命令:
./configure
make install
./snddevices
3.編輯/etc/ modules.conf文件
這個(gè)文件的配置雖然比較麻煩,但用alsaconf-0.4.3b.tar.gz也可以配好它,運(yùn)行命令:
(1)cp alsaconf-0.4.3b.tar.gz /tmp
將alsaconf-0.4.3b.tar.gz 拷到/tmp目錄下。
(2)tar zxvf alsaconf-0.4.3b.tar.gz
解壓縮這個(gè)文件,會(huì)在/tmp目錄下生成一個(gè)子目錄叫做alsaconf-0.4.3b。
(3)./alsaconf
會(huì)出現(xiàn)一個(gè)窗口叫你選擇聲卡,像SoundBlaster及ESS1868、S3_SonicVibes_PCI、Ensoniq_AudioPCI_ES等,很多目前的kernel還不支持的聲卡它都可以支持了。
選好聲卡之后系統(tǒng)會(huì)問你一些問題,都回答OK,然后會(huì)回到之一個(gè)畫面問你要不要繼續(xù)設(shè)第二張聲卡,選“No_more_cards”退出即可。完成這個(gè)步驟之后,/etc/modules.conf這個(gè)文件就基本上自動(dòng)配置好了,重新啟動(dòng)電腦后聲卡就可以發(fā)聲了。
4.如果還不行,那么你就還需要安裝alsa-lib和alsa-utils,安裝方法和alsa-driver一樣,注意要先安裝alsa-lib,再安裝alsa-utils。將文件拷到/tmp目錄,解壓縮,然后運(yùn)行命令make和make install,具體請(qǐng)參照上面alsa-driver的安裝步驟。
安裝后到alsa-utils(解開alsa-utils-0.5.9.tar.bz2會(huì)產(chǎn)生該目錄)目錄下的alsamixer子目錄執(zhí)行
./alsamixer
這樣你的聲卡應(yīng)該能發(fā)聲了。
看你是采用哪一中芯片了,我前段時(shí)間也按了linux沒聲音,下了ALSA也不好使,后來是在nforce的網(wǎng)站上找的,在linux下還有很多都不回的,希望交個(gè)朋友共同探討一下
以下是資料:
一、nForce 驅(qū)動(dòng)的下載選擇;
您可以到下面的地址下載:
選擇最新的輪慶版本號(hào),看ftp的日期;amd64是64位架構(gòu)機(jī)器的驅(qū)動(dòng);如果您的機(jī)器是這樣的,您可以下載amd64的;
當(dāng)前最新的x86驅(qū)動(dòng)是 1.的
所以我們以后的安裝以 1.為例子;
二、nForce 驅(qū)動(dòng)的安裝;
# sh NFORCE-Linux-x86-1.pkg1.run
Please select packages for installation:
NVIDIA audio driver for Linux-x86 (1.0-6)
NVIDIA network driver for Linux-x86 (1.0-12)
/usr/share/doc/nforce/ReleaseNotes.html
如果提到OK或者 Accept 就接受;
三、配置nforce 網(wǎng)卡和聲卡;
如果您用 Fedora Core 2.0以上,請(qǐng)修改 /etc/modprobe.conf 文件;請(qǐng)刪除eth0和聲卡相關(guān)的行;然后加入:如果您用的是Fedora 1.0 或者 Redhat 就修改 /etc/modules.conf ;
alias eth0 nvnet
alias forcedeth off
alias sound-slot-0 nvsound
alias snd-intel8x0 off
alias i810_audio off
然后臘纖握運(yùn)行;
# modprobe nvnet
# modprobe nvsound
如果您用的是Fedora Core 3.0 以上豎叢版本,請(qǐng)?jiān)?etc/rc.local中加入一行
/usr/bin/nvmix-reg -f /etc/nvmixrc -L >/dev/null 2>&1
對(duì)于聲卡,在Fedora 3.0以上的版本,您還要下載;
或
或
安裝nvmixter ;
# tar zxvf nvmixer.tgz
# cd nvmixer
# make
# make install
# nvmixer關(guān)于linux alsa 例子的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
四川成都云服務(wù)器租用托管【創(chuàng)新互聯(lián)】提供各地服務(wù)器租用,電信服務(wù)器托管、移動(dòng)服務(wù)器托管、聯(lián)通服務(wù)器托管,云服務(wù)器虛擬主機(jī)租用。成都機(jī)房托管咨詢:13518219792
創(chuàng)新互聯(lián)(www.cdcxhl.com)擁有10多年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)、開啟建站+互聯(lián)網(wǎng)銷售服務(wù),與企業(yè)客戶共同成長(zhǎng),共創(chuàng)價(jià)值。
當(dāng)前名稱:使用LinuxALSA的示例:快速掌握音頻驅(qū)動(dòng)技術(shù)(linuxalsa例子)
網(wǎng)站URL:http://fisionsoft.com.cn/article/coochsi.html


咨詢
建站咨詢
