⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oss--跨平台的音频接口简介.htm

📁 介绍声卡编程的一些资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html xmlns:fo="http://www.w3.org/1999/XSL/Format"><head><title>OSS--跨平台的音频接口简介</title><meta name="TITLE" content="OSS--跨平台的音频接口简介" /><meta name="zone" content="Linux" /><!-- Linux--><meta name="KEYWORDS" content="Linux, OSS,  interface, audio, 音频, 接口"/><meta name="ABSTRACT" content="OSS(Open Sound System)是 unix 平台上一个统一的音频接口, 即只要音频处理应用程序按照OSS的API来编写,那么在移植到另外一个平台时,只需要重新编译即可。"/><meta name="DESCRIPTION" content="OSS(Open Sound System)是 unix 平台上一个统一的音频接口, 即只要音频处理应用程序按照OSS的API来编写,那么在移植到另外一个平台时,只需要重新编译即可。"/><meta name="DC.DATE" scheme="iso8601" content="2003-3-26"/><meta name="LASTUPDATE" content="2003-3-26"/><!--- common meta part for all zones --><meta http-equiv="Content-Type" content="text/html; charset=GB2312" /><meta name="dWCategory" content="papers_html" /><meta name="OWNER" content="/developerWorks/cn/cncontent.nsf/cn_dW_feedback"/><meta name="source" content="V11"/><meta name="charset" content="GB2312"/><meta name="DC.LANGUAGE" scheme="rfc1766" content="zh-cn"/><meta name="IBM.COUNTRY" content="cn"/><meta name="SECURITY" content="Public"/><meta name="FORMAT" content="text/xhtml"/><meta name="COPYRIGHT" content="Copyright (c) 2002 by IBM Corporation"/><meta name="ROBOTS" content="index,follow"/><meta name="DOCUMENTCOUNTRYCODE" value="cn" /><meta name="DOCUMENTLANGUAGECODE" value="zh" /><meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l gen true comment "RSACi North America Server" by "webmaster@mail.software.ibm.com" for "http://www.ibm.com/software" on "1997.08.13T17:59-0800" r (n 0 s 0 v 0 l 0))' /><meta http-equiv="Expires" content="0" /><script language="JavaScript" src="/developerWorks/cn/js/style.js" type="text/javascript"></script><script language="JavaScript" src="/developerWorks/cn/js/spinbox.js" type="text/javascript"></script></head><body bgcolor="#ffffff" leftmargin="2" marginheight="2" marginwidth="2" topmargin="2"><!-- MASTHEAD--><table width="100%" border="0" cellspacing="0" cellpadding="0"> 
<tr><td width="160" class="tbgc"><a href="/developerWorks/cn/cgi-bin/click.cgi?url=www.ibm.com/cn/&amp;origin=dwheader"><img src="/developerWorks/cn/i/ibm-logo.gif" border="0" alt="IBM" width="160" height="47"/></a></td><td width="70" class="tbg"><font size="2" color="#99ccff"><b>China</b></font><a href="#main"><img src="/developerWorks/cn/i/c.gif" border="0" width="70" 
height="1" alt="Skip to main content"/></a></td><td width="100%" class="tbgc" 
align="right" valign="top">
<table border="0" cellpadding="0" cellspacing="0"> 
	<form method="get" action="http://www-128.ibm.com/developerworks/search/searchResults.jsp" id="form1" name="form1">
	<tr><td colspan="7"><img src="/developerWorks/cn/i/c.gif" 
border="0" width="390" height="4" alt="" /></td></tr>
<tr valign="middle">
<td class="dwsearch"><nobr><font color="#ffffff"><b>搜索:</b></font></nobr>&nbsp;&nbsp;</td>
<td><input type="text" class="dwsearch" name="query" size="23" maxlength="100"/></td>
<td valign="middle" class="dwsearch">&nbsp;<font  color="#ffffff"><b>在</b></font>&nbsp;</td>
<td class="dwsearch"><select class="dwsearch2" name="searchScope">&nbsp;&nbsp;

             <OPTION value=dW selected>dW 全部内容</OPTION> <OPTION 
              value=javaZ>&nbsp;Java 技术</OPTION> <OPTION 
              value=linuxZ>&nbsp;Linux</OPTION> <OPTION 
              value=opensrcZ>&nbsp;开放源码</OPTION> <OPTION 
              value=securityZ>&nbsp;安全</OPTION>  <OPTION 
              value=webservZ>&nbsp;Web 服务</OPTION>
              <OPTION value=xmlZ>&nbsp;XML</OPTION> <OPTION 
              value=dW>.................</OPTION>
              <OPTION value=dmdd>&nbsp;DB2</OPTION>
              <OPTION value=wsdd>&nbsp;WebSphere</OPTION>
              <OPTION value=lotusdd>&nbsp;Lotus 专题</OPTION>
              <OPTION value=tivolidd>&nbsp;Tivoli 专题</OPTION>
               <OPTION value=dW>.................</OPTION>
              <OPTION value=all>IBM 全部内容</OPTION></select></td>
<td><img src="/developerWorks/cn/i/c.gif" border="0" width="5" height="1" alt="" /></td>
<td><input type="image" src="/developerWorks/cn/i/search.gif" width="64" height="23" border="0" value="Search" name="Search" alt="Search button"/></td>
<td valign="top"><img src="/developerWorks/cn/i/c.gif" border="0" width="30" height="1" alt="" /></td>
</tr>
<tr valign="top"><td>&nbsp;</td><td class="dwsearch">&nbsp;<font color="#ffffff">只用 + - &quot;&nbsp;&quot; (&nbsp;)</font><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
	<INPUT type="hidden" name="searchType" value="1">
	<INPUT type="hidden" name="searchSite" value="dWChina">
	<INPUT type="hidden" name="pageLang" value="zh">
	<INPUT type="hidden" name="langEncoding" value="gb2312">
	</form></table></td></tr><a id="main" name="main"/>
<tr><td width="160" height="21" class="hbg">&nbsp;</td>
<td colspan="2" height="21" valign="top" class="bbg">&nbsp;&nbsp;&nbsp;
<a class="mainlink" href="/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/&amp;origin=dwhead">IBM 主页</a>
<span class="divider">&nbsp;&nbsp;|&nbsp;&nbsp;</span>
<a class="mainlink" href="/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/products/index.shtml&amp;origin=dwhead">产品与服务</a>
<span class="divider">&nbsp;&nbsp;|&nbsp;&nbsp;</span>
<a class="mainlink" href="/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/support/index.shtml&amp;origin=dwhead">支持与下载</a>
<span class="divider">&nbsp;&nbsp;|&nbsp;&nbsp;</span>
<a class="mainlink" href="/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/account/index.shtml&amp;origin=dwhead">个性化服务</a></td></tr></table><!-- Color Bar -->
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr class="hil"><td width="100%" height="1"><img src="/developerWorks/cn/i/c.gif" width="592" height="1" alt=""/></td></tr>
<tr class="dwr1"><td width="100%" height="2"><img src="/developerWorks/cn/i/c.gif" width="592" height="2" alt=""/></td></tr>
<tr class="dwg3"><td width="100%" height="1"><img src="/developerWorks/cn/i/c.gif" width="592" height="1" alt=""/></td></tr>
<tr class="bbg"><td width="100%" height="1"><img src="/developerWorks/cn/i/c.gif" width="592" height="1" alt=""/></td></tr>
<tr class="hil"><td width="100%" height="1"><img src="/developerWorks/cn/i/c.gif" width="592" height="1" alt=""/></td></tr>
</table>

<!-- Breadcrumb Trail -->
<table width="100%" cellspacing="0" cellpadding="0" border="0"><tr valign="top">
<!-- RIGHT GUTTER -->
<td width="5"><img src="/developerWorks/cn/i/c.gif" width="5" height="1" border="0" alt=""/></td>
<td width="100%">
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr valign="top">
<td width="100%"><img src="/developerWorks/cn/i/c.gif" width="2" height="4" border="0" alt=""/><br /><b>
<a href="/developerWorks/cn/index.shtml">developerWorks 中国网站</a> : 
<a href="/developerWorks/cn/linux/index.shtml">Linux</a> :
<a href="/developerWorks/cn/cnpapers.nsf/linux-papers-bynewest?OpenView&Count=500"> 所有的文章 </a> </b></td>
<td width="136" align="right"><a href="/developerWorks/cn/index.shtml"><img src="/developerWorks/cn/i/dwlogo-small.gif" width="136" height="24" border="0" alt="developerWorks 中国网站"></a></td>
<td width="5"><img src="/developerWorks/cn/i/c.gif" width="5" height="1" border="0" alt=""/></td>
</tr></table>
</tr></table>
<!-- End Breadcrumb Trail --><!-- Title Area--><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr valign="top"><td colspan="5"><img alt="" border="0" height="15" src="/developerWorks/cn/i/c.gif" width="5" /></td></tr><tr valign="top"><!-- Title--><td width="2"><img alt="" border="0" height="1" src="/developerWorks/cn/i/c.gif" width="2" /></td><td><!-- <span class="astitle">[Series title]:&nbsp;</span>--><span class="atitle">OSS--跨平台的音频接口简介</span></td><td width="8"></td><td width="6"><img alt="" border="0" height="1" src="/developerWorks/cn/i/c.gif" width="6" /></td></tr><!-- Black line separator--><tr valign="top"><td bgcolor="#000000" colspan="5"><img alt="" border="0" height="1" src="/developerWorks/cn/i/c.gif" width="100" /></td></tr><tr valign="top"><td bgcolor="#FFFFFF" colspan="5"><img alt="" border="0" height="8" src="/developerWorks/cn/i/c.gif" width="100" /></td></tr></table><!-- END HEADER AREA and START BODY AREA--><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr valign="top"><!-- LEFT GUTTER--><td width="5"><img alt="" border="0" height="1" src="/developerWorks/cn/i/c.gif" width="5" /></td><!-- START CENTER COLUMN--><td width="100%"><table align="right" border="0" cellpadding="0" cellspacing="0" width="168"><tr><!-- Sidebar Gutter--><td width="8"><img alt="" height="21" src="/developerWorks/cn/i/c.gif" width="5" /></td><td width="160"><!-- Start TOC--><table border="0" cellpadding="0" cellspacing="0" width="160"><tr><td bgcolor="#000000" height="1" width="160"><img alt="" height="1" src="/developerWorks/cn/i/c.gif" width="160" /></td></tr><tr><td align="center" background="/developerWorks/cn/i/bg-gold.gif" height="5"><b>内容:</b></td></tr><tr><td bgcolor="#666666" height="1" width="160"><img alt="" height="1" src="/developerWorks/cn/i/c.gif" width="160" /></td></tr><tr><td align="right"><table border="0" cellpadding="3" cellspacing="0" width="98%"><tr><td><a href="#section1">基础知识</a></td></tr><tr><td><a href="#section2">音频编程</a></td></tr><tr><td><a href="#section3">Mixer编程</a></td></tr><tr><td><a href="#section4">结束语</a></td></tr><tr><td><a href="#resources">参考资料</a></td></tr><!--<tr><td><a href="#author1">关于作者</a></td></tr>--></table></td></tr></table><!-- End TOC--><!-- Start Related Content Area--><table border="0" cellpadding="0" cellspacing="0" width="160"><tr><td bgcolor="#000000" height="1" width="160"><img alt="" height="1" src="/developerWorks/cn/i/c.gif" width="160" /></td></tr><!--<tr><td align="center" background="/developerWorks/cn/i/bg-gold.gif" height="5"><b>相关内容:</b></td></tr><tr><td bgcolor="#666666" height="1" width="160"><img alt="" height="1" src="/developerWorks/cn/i/c.gif" width="160" /></td></tr><tr><td align="right"><table border="0" cellpadding="3" cellspacing="0" width="98%"><tr><td><a href="#1">介绍</a></td></tr><tr><td><a href="#1">介绍</a></td></tr></table></td></tr>--></table><!-- End TOC--><!-- Start Related Content Area--><table border="0" cellpadding="0" cellspacing="0" width="160"><tr><td bgcolor="#000000" height="1" width="160"><img alt="" height="1" src="/developerWorks/cn/i/c.gif" width="160" /></td></tr><tr><td align="center" background="/developerWorks/cn/i/bg-gold.gif" height="5"><a class="nav" href="/developerWorks/cn/linux/index.shtml"><b>在 Linux 专区还有:</b></a></td></tr><tr><td bgcolor="#666666" height="1" width="160"><img alt="" height="1" src="/developerWorks/cn/i/c.gif" width="160" /></td></tr><tr><td align="right"><table border="0" cellpadding="3" cellspacing="0" width="98%"><tr><td><a href="/developerWorks/cn/cnedu.nsf/linux-onlinecourse-bytitle?OpenView&amp;Count=500">教程</a></td></tr><tr><td><a href="/developerWorks/cn/cntools.nsf/dw/linux-codelib-byname?OpenDocument&amp;Count=500">工具与产品</a></td></tr><tr><td><a href="/developerWorks/cn/cntools.nsf/dw/linux-projects-byname?OpenDocument&amp;Count=500">代码与组件</a></td></tr><tr><td><a href="/developerWorks/cn/cnpapers.nsf/linux-papers-bynewest?OpenView&amp;Count=500">文章</a></td></tr></table></td></tr></table><!-- End Related dW Content Area--><table border="0" cellpadding="0" cellspacing="0" width="160"><tr><td bgcolor="#000000" colspan="2" height="2" width="150"><img alt="" height="2" src="/developerWorks/cn/i/c.gif" width="160" /></td></tr><tr><td bgcolor="#FFFFFF" colspan="2" height="2" width="150"><img alt="" height="2" src="/developerWorks/cn/i/c.gif" width="160" /></td></tr></table><!-- END STANDARD SIDEBAR AREA--></td></tr></table><!-- START SUBTITLE AND CONTENT--><p><a href="#author1">汤凯</a> (<a href="mailto:tangk73@hotmail.com">tangk73@hotmail.com</a>)<br /><br /> 2003 年 03 月</p><!--<blockquote>[put your paper abstract here]</blockquote>--><p>OSS(Open Sound System)是unix平台上一个统一的音频接口。以前,每个Unix厂商都会提供一个自己专有的API,用来处理音频。这就意味着为一种Unix平台编写的音频处理应用程序,在移植到另外一种Unix平台上时,必须要重写。不仅如此,在一种平台上具备的功能,可能在另外一个平台上无法实现。但是,OSS出现以后情况就大不一样了,只要音频处理应用程序按照OSS的API来编写,那么在移植到另外一个平台时,只需要重新编译即可。因此,OSS提供了源代码级的可移植性。</p><p>同时,很多的Unix工作站中,只能提供录音与放音的功能。有了OSS后,给这些工作站带来了MIDI功能,加上音频流、语音识别/生成、计算机电话(CT)、JAVA以及其它的多媒体技术,在Unix工作站中,同样可以享受到同Windows、Macintosh环境一样的音频世界。另外,OSS还提供了与视频和动画播放同步的音频能力,这对在Unix中实现动画、游戏提供了帮助。</p><p>本文首先解释在音频编程时经常遇到的名词、设备文件的含义,然后分别在录音、播放、Mixer方面对OSS接口的使用方法进行介绍。由于OSS API十分丰富,因此在本文中只介绍那些最为常用的接口。对于OSS API的一个完整描述,可以参考[1]。</p><p><a name="section1"><span class="atitle2">一、基础知识</span></a></p><p>数字音频设备(有时也称codec,PCM,DSP,ADC/DAC设备):播放或录制数字化的声音。它的指标主要有:采样速率(电话为8K,DVD为96K)、channel数目(单声道,立体声)、采样分辨率(8-bit,16-bit)。</p><p>mixer(混频器):用来控制多个输入、输出的音量,也控制输入(microphone,line-in,CD)之间的切换。</p><p>synthesizer(合成器):通过一些预先定义好的波形来合成声音,有时用在游戏中声音效果的产生。</p><p>MIDI 接口:MIDI接口是为了连接舞台上的synthesizer、键盘、道具、灯光控制器的一种串行接口。</p><p>在Unix系统中,所有的设备都被统一成文件,通过对文件的访问方式(首先open,然后read/write,同时可以使用ioctl读取/设置参数,最后close)来访问设备。在OSS中,主要有以下的几种设备文件:</p><ul><li>/dev/mixer:访问声卡中内置的mixer,调整音量大小,选择音源。</li><li>/dev/sndstat:测试声卡,执行cat /dev/sndstat会显示声卡驱动的信息。</li><li>/dev/dsp 、/dev/dspW、/dev/audio:读这个设备就相当于录音,写这个设备就相当于放音。/dev/dsp与/dev/audio之间的区别在于采样的编码不同,/dev/audio使用μ律编码,/dev/dsp使用8-bit(无符号)线性编码,/dev/dspW使用16-bit(有符号)线形编码。/dev/audio主要是为了与SunOS兼容,所以尽量不要使用。</li><li>l	/dev/sequencer:访问声卡内置的,或者连接在MIDI接口的synthesizer。</li></ul><p>这些设备文件的设备编号见[1]。</p><p><a name="section2"><span class="atitle2">二、音频编程</span></a></p><p>OSS为音频编程提供三种设备,分别是/dev/dsp,/dev/dspW和/dev/audio,前面已经提到了它们之间的区别。</p><p>用户可以直接使用Unix的命令来放音和录音,命令cat /dev/dsp >xyz可用来录音,录音的结果放在xyz文件中;命令cat xyz  >/dev/dsp播放声音文件xyz。</p><p>如果通过编程的方式来使用这些设备,那么Unix平台通过文件系统提供了统一的访问接口。程序员可以通过文件的操作函数直接控制这些设备,这些操作函数包括:open、close、read、write、ioctl等。下面我们就分别讨论打开音频设备、放音、录音和参数调整。</p><p><span class="atitle3">1. 打开音频设备</span><br /></p><p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -