?? p6.7.c
字號:
//p6.7.c#include <unistd.h>#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <linux/soundcard.h>#define Audio_Device "/dev/dsp"/* 不同的聲音文件有著不同的播放參數(shù),這些參數(shù)可以使用file命令獲得*/#define Sample_Size 16 #define Sample_Rate 8000 /* 取樣率 */int play_sound(char *filename){ struct stat stat_buf; unsigned char *buf = NULL; int handler,fd; int result; int arg,status;/*打開聲音文件,將文件讀入內(nèi)存*/ fd = open(filename, O_RDONLY); if (fd<0) return -1; if (fstat(fd, &stat_buf)) { close(fd); return -1; } if (!stat_buf.st_size) { close(fd); return -1; } buf = malloc(stat_buf.st_size); if (!buf) { close(fd); return -1; } if (read(fd, buf, stat_buf.st_size) < 0) { free(buf); close(fd); return -1; } /*打開聲卡設(shè)備,并設(shè)置聲卡播放參數(shù),這些參數(shù)必須與聲音文件參數(shù)一致 */ handler = open(Audio_Device, O_WRONLY); if (handler == -1) { perror("open Audio_Device fail"); return -1; } arg=Sample_Rate; status=ioctl(handler,SOUND_PCM_WRITE_RATE,&arg); if(status==-1){ perror("error from SOUND_PCM_WRITE_RATE ioctl"); return -1;} arg=Sample_Size; status=ioctl(handler,SOUND_PCM_WRITE_BITS,&arg); if(status==-1){ perror("error from SOUND_PCM_WRITE_BITS ioctl"); return -1; } result=write(handler,buf,stat_buf.st_size); if(result==-1){ perror("Fail to play the sound!"); return -1; } free(buf); close(fd); close(handler); return result;}void main(void){ play_sound("/root/Online.wav");}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -