LinuxCOSS音訊程式設計
在linux下也可以寫一個類似麥克風和喇叭這樣的應用程式,只要開啟/dev/dsp這個裝置驅動,對該裝置read讀操作相當於錄音,對這個裝置write寫操作相當於放音。
對於以下出現的一些引數我就不多說了,百度很多,大家可以自行查詢,關於音訊程式設計還有很多,alsa和OSS混合程式設計是目前用得最多的,如果對這方面有興趣的可以深入研究。
以下是當時我在學習這方面知識的時候寫的一個測試程式:
測試的結果就是當對著麥克風說話時,喇叭會放出聲音,前提是你的linux系統需要安裝/dev/dsp這個驅動。
按照這個原理,你應該有能力可以寫一個類似千千靜聽這樣的MP3播放器的軟體了!去試試吧!
#include <stdio.h> #include <sys/ioctl.h> #include <fcntl.h> #include <unistd.h> // /usr/include/linux/videodev2.h //v4l2介面 // /usr/include/linux/soundcard.h //音效卡 #include <linux/soundcard.h> #define SIZE 44100*2*2*5 int main(void) { int fd ; fd = open("/dev/dsp" , O_RDWR); if(-1 == fd ) { perror("Open SoundCard Fail ... "); return -1 ; } //speex 聲音壓縮庫 //ALSA 聲音解碼庫 //讀取音效卡引數 //rate 取樣率 channels 聲道 bits 量化位數 int rate , channels , bits ; char buffer[SIZE] = {0}; //將音效卡配置成MP3標準 //取樣率 rate = 44100 ; //通道數 channels = 2 ; //量化位數 bits = 16 ; if(ioctl(fd , SOUND_PCM_WRITE_RATE , &rate) < 0) perror("write soundcard rate fail"); if(ioctl(fd , SOUND_PCM_WRITE_CHANNELS, &channels) < 0) perror("write soundcard channels fail"); if(ioctl(fd , SOUND_PCM_WRITE_BITS ,&bits ) < 0) perror("write soundcard bits fail"); //讀取引數 if(ioctl(fd , SOUND_PCM_READ_RATE , &rate) <0) perror("read soundcard rate fail"); if(ioctl(fd , SOUND_PCM_READ_CHANNELS, &channels) <0) perror("read soundcard channels fail"); if(ioctl(fd , SOUND_PCM_READ_BITS , &bits) <0) perror("read soundcard bits fail"); printf("rate:%d channels:%d bits:%d " , rate , channels , bits ); int ret ; while(1) { printf("recording ... "); ret = read(fd , buffer , SIZE); printf("playing ... "); write(fd , buffer , ret); } close(fd); return 0 ; }
相關文章
- linux音訊程式設計指南Linux音訊程式設計
- iOS音訊程式設計之實時語音通訊(對講機功能)iOS音訊程式設計
- 【秒懂音視訊開發】09_音訊錄製02_程式設計音訊程式設計
- Linux下的OSS音訊介面程式設計(轉)Linux音訊程式設計
- 音訊設計經驗分享:聲音功能的設計與創意表現音訊
- 高效的音訊製作與槍和車的音訊設計方案音訊
- 《硬核機甲》(Hardcore Mecha)的音訊設計音訊
- 展望遊戲音訊設計的發展方向遊戲音訊
- 程式設計和音樂(3):如何聽音樂程式設計
- 小程式音訊和視訊音訊
- 【梟·音訊】聲隨意動——淺談《暗影火炬城》聲音設計音訊
- 音樂對程式設計的影響程式設計
- 網路通訊程式設計程式設計
- iPhone程式設計之音訊播放iPhone程式設計音訊
- 乾貨丨遊戲音訊與聲音設計相關書籍推薦遊戲音訊
- Mac音樂視覺化程式設計軟體Mac視覺化程式設計
- 程式設計和音樂真的很像嗎?程式設計
- Android 音訊資料流分析之程式設計師幹架產品經理Android音訊程式設計師
- 《硬核機甲》(Hardcore Mecha)的音訊設計 - Part2音訊
- 【視訊】程式設計師鬥碼程式設計師
- 各種程式設計視訊教程程式設計
- 系統程式設計——管道通訊程式設計
- 網路程式設計-Socket通訊程式設計
- PHP多程式程式設計(2):管道通訊PHP程式設計
- 程式設計和音樂(2):聽什麼型別的音樂程式設計型別
- 音視訊--音訊入門音訊
- 音視訊–音訊入門音訊
- CRI新音訊工作室設立、強化音訊(音樂、聲優等)製作業務音訊
- 程式設計和音樂的10個共同點程式設計
- 說唱音樂—程式設計女孩(Coder Girl)程式設計
- MT6739+MT6357音訊設計資料參考音訊
- 音訊_錄音音訊
- 程式設計和音樂(1):為什麼寫程式碼的時候聽音樂程式設計
- “Linux程式設計”小結(程式間通訊)Linux程式設計
- 網路程式設計與通訊原理程式設計
- 從 UI 設計角度探討如何製作 UI 音訊 - Part 1UI音訊
- 從 UI 設計角度探討如何製作 UI 音訊 – Part 2UI音訊
- 如何利用 AVFoundation 設計一個通用穩定的音視訊框架?框架