进入旧版 | 服务项目 | 成功案例 | 联系方式 | 过客留言 | 友情链接
   
设为首页
加入收藏
联系我们
网站首页 | 新闻资讯 | 操作系统 | 办公软件 | 网络软件 | 工具软件 | 媒体动画 | 网页制作 | 网站开发 | 程序开发 | 平面设计
Photoshop视频教程 | Word入门 | Flash入门 | JScript | VBScript | ASP | PHP | ADO | 网页特效 | 3DS MAX6.0命令 | 系统进程
您当前的位置:GOODSGY电脑学习网 -> 操作系统 -> Linux -> 文章内容  
Linux操作系统的声音设备编程实例

www.goodsgy.com

对声卡编程 www.goodsgy.com

  只要我们不是进行诸如驱动设备开发之类的工作,对声卡的编程和上面对扬声器的编程没有什么本质的区别。当你试图来编写诸如CD播放器、MP3播放器之类的复杂的程序时,你的工作是取获得与CDROM控制、MP3解码之类的信息,而读写系统设备的这一步在Linux下超互想象的简单。例如, Linux下最简单的播放wav的程序只有一行:cp $< >/dev/audio。将它写成一个shell文件,同样是一个程序(shell 编程)。 www.goodsgy.com

  我们首先需要知道一台机器上是否有声卡,一个检查的办法是检查文件/dev/sndstat文件,如果打开此文件错误,并且错误号是ENODEV,则说明此机器没有安装声卡。除此之外,试着去打开文件/dev/dsp也可以来检查是否安装了声卡。 www.goodsgy.com

  Linux下和声卡相关的文件有许多,如采集数字样本的/dev/dsp文件,针对混音器的/dev/mixer文件以及用于音序器的 /dev/sequencer等。文件/dev/audio是一个基于兼容性考虑的声音设备文件,它实际是到上述数字设备的一个映射,它最大的特色或许是对诸如wav这类文件格式的直接支持。我们下面的例子即使用了此设备文件实现了一个简单的录音机:我们从声卡设备(当然要用麦克风)读取音频数据,并将它存放到文件test.wav中去。要播放这个wav文件,只要如前面所述,使用命令cp test.wav >/dev/audio即可,当然你也可以用Linux下其他的多媒体软件来播放这个文件。 www.goodsgy.com

  下面即是完整的程序清单: www.goodsgy.com

/* 此文件中定义了下面所有形如SND_的变量*/ #include  #include  #include  #include  #include  main() { /* id:读取音频文件描述符;fd:写入的文件描述符。i,j为临时变量*/ int id,fd,i,j; /* 存储音频数据的缓冲区,可以调整*/ char testbuf[4096]; /* 打开声卡设备,失败则退出*/ if ( ( id = open ( "/dev/audio", O_RDWR ) ) < 0 ) { fprintf (stderr, " Can't open sound device!\n"); exit ( -1 ) ; } /* 打开输出文件,失败则退出*/ if ( ( fd = open ("test.wav",O_RDWR))<0){ fprintf ( stderr, " Can't open output file!\n"); exit (-1 ); } /* 设置适当的参数,使得声音设备工作正常*/ /* 详细情况请参考Linux关于声卡编程的文档*/ i=0; ioctl (id,SNDCTL_DSP_RESET,(char *)&i) ; ioctl (id,SNDCTL_DSP_SYNC,(char *)&i); i=1; ioctl (id,SNDCTL_DSP_NONBLOCK,(char *)&i); i=8000; ioctl (id,SNDCTL_DSP_SPEED,(char *)&i); i=1; ioctl (id,SNDCTL_DSP_CHANNELS,(char *)&i); i=8; ioctl (id,SNDCTL_DSP_SETFMT,(char *)&i); i=3; ioctl (id,SNDCTL_DSP_SETTRIGGER,(char *)&i); i=3; ioctl (id,SNDCTL_DSP_SETFRAGMENT,(char *)&i); i=1; ioctl (id,SNDCTL_DSP_PROFILE,(char *)&i); /* 读取一定数量的音频数据,并将之写到输出文件中去*/ for ( j=0; j<10;){ i=read(id,testbuf,4096); if(i>0){ write(fd,filebuf,i); j++; } } /* 关闭输入、输出文件*/ close(fd); close(id); }
www.goodsgy.com

上一页  [1] [2] 

在百度中搜索:Linux操作系统的声音设备编程实例
在Google中搜索:Linux操作系统的声音设备编程实例
在Yahoo中搜索:Linux操作系统的声音设备编程实例

收藏到网摘:新浪VIVI 365key 我摘 POCO网摘 博采中心 YouNote 和讯网摘 天天收藏
[] [返回上一页] [打 印] [收 藏]

 相关文章    最新文章
· 十大注意事项 让Linux启动更快速
· Linux软件安装指南
· [组图] 快速体验Linux的3种方式
· Linux下Tomcat自启动的设置技巧
· 装有双系统用户 如何卸载Linux
· [组图] 在Linux操作系统上创建ADSL拨号上网..
· 高效使用Linux的七个习惯
· [组图] 怎样让PPLive更加流畅的播放
· 为了Dreamweaver Adobe停止研发GoLive
· Novell:Linux消费市场开发仍需3-5年时间..
 
· 十大注意事项 让Linux启动更快速
· Linux软件安装指南
· [组图] 快速体验Linux的3种方式
· Linux下Tomcat自启动的设置技巧
· 装有双系统用户 如何卸载Linux
· [组图] 在Linux操作系统上创建ADSL拨号上网..
· 高效使用Linux的七个习惯
· 基础知识:什么是Fedora Linux
· Linux操作系统下的umask函数详解
· Ubuntu Linux 8.04操作系统4月24日发布

∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
站内搜索

精彩图文
  网站导航  
操作系统 办公软件 网络软件
Vista Windows2003 WindowsXP Windows2000/NT Windows9X/ME Linux 其他 Word Excel Powerpoint Outlook 金山系列 其他 网页浏览 上传下载 联络聊天 邮件工具 服务器软件 网络辅助
工具软件 媒体动画 网页制作
系统工具 媒体工具 压缩工具 图文处理 文件管理 其他 3DMAX Authorware Director Maya 视频处理 其他 Flash Dreamweaver FireWorks FrontPage LiveMotion Golive HTML/CSS 其它
网站开发 平面设计 程序设计
ASP JSP PHP CGI JavaScript VBScript XML/SOAP Web服务器 Photoshop PhotoImpact CorelDraw Illustrator Freehand 设计欣赏 其他 VB VC .NET C/C++ DELPHI JAVA

冀ICP备05019428号
Copyright © 2004-2008 电脑学习网 Inc.All rights reserved.
TEL:13832340607
QQ:39873155
E_Mail:goodsgy(#)hotmail.com   (把(#)替换成@)
MSN:goodsgy(#)hotmail.com   (把(#)替换成@)