mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-07-04 07:42:45 +08:00
264 lines
18 KiB
HTML
264 lines
18 KiB
HTML
<div class="header">
|
||
<div class="subTitle">
|
||
javax.sound.sampled
|
||
</div>
|
||
<h2 class="title" title="Interface TargetDataLine">Interface TargetDataLine</h2>
|
||
</div><div class="contentContainer">
|
||
<div class="description">
|
||
<ul class="blockList">
|
||
<li class="blockList">
|
||
<dl>
|
||
<dt>
|
||
All Superinterfaces:
|
||
</dt>
|
||
<dd>
|
||
<span><a href="../../../java/lang/AutoCloseable.html" title="java.lang中的接口">AutoCloseable</a> , <a href="../../../javax/sound/sampled/DataLine.html" title="javax.sound.sampled中的接口">DataLine</a> , <a href="../../../javax/sound/sampled/Line.html" title="javax.sound.sampled中的接口">Line</a></span>
|
||
</dd>
|
||
</dl>
|
||
<hr/> <br/> <pre>public interface <span class="typeNameLabel">TargetDataLine</span>
|
||
extends <a href="../../../javax/sound/sampled/DataLine.html" title="interface in javax.sound.sampled">DataLine</a></pre>
|
||
<div class="block">
|
||
<span>目标数据线是可<code><a href="../../../javax/sound/sampled/DataLine.html" title="interface in javax.sound.sampled"><code>DataLine</code></a></code>读取音频数据的类型<code><a href="../../../javax/sound/sampled/DataLine.html" title="interface in javax.sound.sampled"><code>DataLine</code></a></code> 。</span>
|
||
<span>最常见的示例是从音频捕获设备获取其数据的数据线。</span>
|
||
<span>(该设备实现为写入目标数据线的混音器。)</span>
|
||
<p> <span>请注意,此接口的命名约定反映了线路与其调音台之间的关系。</span> <span>从应用的角度来看,目标数据线可以用作音频数据的源。</span> </p>
|
||
<p> <span>目标数据线可以通过调用具有适当的<code><a href="../../../javax/sound/sampled/DataLine.Info.html" title="class in javax.sound.sampled"><code>DataLine.Info</code></a></code>对象的<code>Mixer</code>的<code><a href="../../../javax/sound/sampled/Mixer.html#getLine-javax.sound.sampled.Line.Info-"><code>getLine</code></a></code>方法从混合器获得。</span> </p>
|
||
<p> <span><code>TargetDataLine</code>接口提供了从目标数据线缓冲区读取捕获数据的方法。记录音频的应用程序应该从目标数据行读取数据足够快,以防止缓冲区溢出,这可能导致被捕获的数据的不连续性作为点击。</span> <span>应用程序可以使用<code><a href="../../../javax/sound/sampled/DataLine.html#available--"><code>available</code></a></code>中所定义的方法<code>DataLine</code>界面来确定当前在数据线的缓冲器排队的数据的量。</span> <span>如果缓冲区溢出,则丢弃最旧的排队数据并替换为新数据。</span> </p>
|
||
</div>
|
||
<dl>
|
||
<dt>
|
||
<span class="simpleTagLabel">从以下版本开始:</span>
|
||
</dt>
|
||
<dd>
|
||
1.3
|
||
</dd>
|
||
<dt>
|
||
<span class="seeLabel">另请参见:</span>
|
||
</dt>
|
||
<dd>
|
||
<span><a href="../../../javax/sound/sampled/Mixer.html" title="javax.sound.sampled中的接口"><code>Mixer</code></a> , <a href="../../../javax/sound/sampled/DataLine.html" title="javax.sound.sampled中的接口"><code>DataLine</code></a> , <a href="../../../javax/sound/sampled/SourceDataLine.html" title="javax.sound.sampled中的接口"><code>SourceDataLine</code></a></span>
|
||
</dd>
|
||
</dl> </li>
|
||
</ul>
|
||
</div>
|
||
<div class="summary">
|
||
<ul class="blockList">
|
||
<li class="blockList">
|
||
<!-- ======== NESTED CLASS SUMMARY ======== -->
|
||
<ul class="blockList">
|
||
<li class="blockList"><a name="nested.class.summary">
|
||
<!-- --> </a> <h3>Nested Class Summary</h3>
|
||
<ul class="blockList">
|
||
<li class="blockList"><a name="nested.classes.inherited.from.class.javax.sound.sampled.DataLine">
|
||
<!-- --> </a> <h3>Nested classes/interfaces inherited from interface javax.sound.sampled.<a href="../../../javax/sound/sampled/DataLine.html" title="interface in javax.sound.sampled">DataLine</a></h3> <code><a href="../../../javax/sound/sampled/DataLine.Info.html" title="class in javax.sound.sampled">DataLine.Info</a></code></li>
|
||
</ul> </li>
|
||
</ul>
|
||
<!-- ========== METHOD SUMMARY =========== -->
|
||
<ul class="blockList">
|
||
<li class="blockList"><a name="method.summary">
|
||
<!-- --> </a> <h3>方法摘要</h3>
|
||
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Method Summary table, listing methods, and an explanation">
|
||
<caption>
|
||
<span class="activeTableTab" id="t0"><span>所有方法</span><span class="tabEnd"> </span></span>
|
||
<span class="tableTab" id="t2"><span><a href="javascript:show(2);">接口方法</a></span><span class="tabEnd"> </span></span>
|
||
<span class="tableTab" id="t3"><span><a href="javascript:show(4);">抽象方法</a></span><span class="tabEnd"> </span></span>
|
||
</caption>
|
||
<tbody>
|
||
<tr>
|
||
<th class="colFirst" scope="col">Modifier and Type</th>
|
||
<th class="colLast" scope="col">Method and Description</th>
|
||
</tr>
|
||
<tr class="altColor" id="i0">
|
||
<td class="colFirst"><code>void</code></td>
|
||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sound/sampled/TargetDataLine.html#open-javax.sound.sampled.AudioFormat-">open</a></span>(<a href="../../../javax/sound/sampled/AudioFormat.html" title="class in javax.sound.sampled">AudioFormat</a> format)</code>
|
||
<div class="block">
|
||
以指定的格式打开行,使该行获取任何所需的系统资源,并可以运行。
|
||
</div> </td>
|
||
</tr>
|
||
<tr class="rowColor" id="i1">
|
||
<td class="colFirst"><code>void</code></td>
|
||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sound/sampled/TargetDataLine.html#open-javax.sound.sampled.AudioFormat-int-">open</a></span>(<a href="../../../javax/sound/sampled/AudioFormat.html" title="class in javax.sound.sampled">AudioFormat</a> format, int bufferSize)</code>
|
||
<div class="block">
|
||
打开具有指定格式和请求的缓冲区大小的行,使该行获取任何所需的系统资源并变为可操作。
|
||
</div> </td>
|
||
</tr>
|
||
<tr class="altColor" id="i2">
|
||
<td class="colFirst"><code>int</code></td>
|
||
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sound/sampled/TargetDataLine.html#read-byte:A-int-int-">read</a></span>(byte[] b, int off, int len)</code>
|
||
<div class="block">
|
||
从数据线的输入缓冲区读取音频数据。
|
||
</div> </td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<ul class="blockList">
|
||
<li class="blockList"><a name="methods.inherited.from.class.javax.sound.sampled.DataLine">
|
||
<!-- --> </a> <h3>Methods inherited from interface javax.sound.sampled.<a href="../../../javax/sound/sampled/DataLine.html" title="interface in javax.sound.sampled">DataLine</a></h3> <code><a href="../../../javax/sound/sampled/DataLine.html#available--">available</a>, <a href="../../../javax/sound/sampled/DataLine.html#drain--">drain</a>, <a href="../../../javax/sound/sampled/DataLine.html#flush--">flush</a>, <a href="../../../javax/sound/sampled/DataLine.html#getBufferSize--">getBufferSize</a>, <a href="../../../javax/sound/sampled/DataLine.html#getFormat--">getFormat</a>, <a href="../../../javax/sound/sampled/DataLine.html#getFramePosition--">getFramePosition</a>, <a href="../../../javax/sound/sampled/DataLine.html#getLevel--">getLevel</a>, <a href="../../../javax/sound/sampled/DataLine.html#getLongFramePosition--">getLongFramePosition</a>, <a href="../../../javax/sound/sampled/DataLine.html#getMicrosecondPosition--">getMicrosecondPosition</a>, <a href="../../../javax/sound/sampled/DataLine.html#isActive--">isActive</a>, <a href="../../../javax/sound/sampled/DataLine.html#isRunning--">isRunning</a>, <a href="../../../javax/sound/sampled/DataLine.html#start--">start</a>, <a href="../../../javax/sound/sampled/DataLine.html#stop--">stop</a></code></li>
|
||
</ul>
|
||
<ul class="blockList">
|
||
<li class="blockList"><a name="methods.inherited.from.class.javax.sound.sampled.Line">
|
||
<!-- --> </a> <h3>Methods inherited from interface javax.sound.sampled.<a href="../../../javax/sound/sampled/Line.html" title="interface in javax.sound.sampled">Line</a></h3> <code><a href="../../../javax/sound/sampled/Line.html#addLineListener-javax.sound.sampled.LineListener-">addLineListener</a>, <a href="../../../javax/sound/sampled/Line.html#close--">close</a>, <a href="../../../javax/sound/sampled/Line.html#getControl-javax.sound.sampled.Control.Type-">getControl</a>, <a href="../../../javax/sound/sampled/Line.html#getControls--">getControls</a>, <a href="../../../javax/sound/sampled/Line.html#getLineInfo--">getLineInfo</a>, <a href="../../../javax/sound/sampled/Line.html#isControlSupported-javax.sound.sampled.Control.Type-">isControlSupported</a>, <a href="../../../javax/sound/sampled/Line.html#isOpen--">isOpen</a>, <a href="../../../javax/sound/sampled/Line.html#open--">open</a>, <a href="../../../javax/sound/sampled/Line.html#removeLineListener-javax.sound.sampled.LineListener-">removeLineListener</a></code></li>
|
||
</ul> </li>
|
||
</ul> </li>
|
||
</ul>
|
||
</div>
|
||
<div class="details">
|
||
<ul class="blockList">
|
||
<li class="blockList">
|
||
<!-- ============ METHOD DETAIL ========== -->
|
||
<ul class="blockList">
|
||
<li class="blockList"><a name="method.detail">
|
||
<!-- --> </a> <h3>方法详细信息</h3> <a name="open-javax.sound.sampled.AudioFormat-int-">
|
||
<!-- --> </a>
|
||
<ul class="blockList">
|
||
<li class="blockList"> <h4>open</h4> <pre>void open(<a href="../../../javax/sound/sampled/AudioFormat.html" title="class in javax.sound.sampled">AudioFormat</a> format,
|
||
int bufferSize)
|
||
throws <a href="../../../javax/sound/sampled/LineUnavailableException.html" title="class in javax.sound.sampled">LineUnavailableException</a></pre>
|
||
<div class="block">
|
||
<span>打开具有指定格式和请求的缓冲区大小的行,使该行获取任何所需的系统资源并变为可操作。</span>
|
||
<p> <span>缓冲区大小以字节指定,但必须表示整数个采样帧。</span> <span>以不满足此要求的请求缓冲区大小调用此方法可能会导致IllegalArgumentException异常。</span> <span>开放行的实际缓冲区大小可能与请求的缓冲区大小不同。</span> <span>实际设置的值可以随后调用<code><a href="../../../javax/sound/sampled/DataLine.html#getBufferSize--"><code>DataLine.getBufferSize()</code></a></code>来查询</span> </p>
|
||
<p> <span>如果此操作成功,该行将被标记为打开,并且<code><a href="../../../javax/sound/sampled/LineEvent.Type.html#OPEN"><code>OPEN</code></a></code>事件将调度到该行的监听器。</span> </p>
|
||
<p> <span>在已经打开的行上调用此方法是非法的,可能会导致<code>IllegalStateException</code> 。</span> </p>
|
||
<p> <span>一些封闭的线条无法重新开放。</span> <span>尝试重新打开此行将始终导致<code>LineUnavailableException</code> 。</span> </p>
|
||
</div>
|
||
<dl>
|
||
<dt>
|
||
<span class="paramLabel">参数</span>
|
||
</dt>
|
||
<dd>
|
||
<code>format</code> - 所需的音频格式
|
||
</dd>
|
||
<dd>
|
||
<code>bufferSize</code> - 所需的缓冲区大小(以字节为单位)。
|
||
</dd>
|
||
<dt>
|
||
<span class="throwsLabel">异常</span>
|
||
</dt>
|
||
<dd>
|
||
<code><a href="../../../javax/sound/sampled/LineUnavailableException.html" title="class in javax.sound.sampled">LineUnavailableException</a></code> - 如果由于资源限制,该行无法打开
|
||
</dd>
|
||
<dd>
|
||
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果缓冲区大小不表示采样帧的整数,或者
|
||
<code>format</code>未完全指定或无效
|
||
</dd>
|
||
<dd>
|
||
<code><a href="../../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></code> - 如果该行已经打开
|
||
</dd>
|
||
<dd>
|
||
<code><a href="../../../java/lang/SecurityException.html" title="class in java.lang">SecurityException</a></code> - 如果由于安全限制,该行无法打开
|
||
</dd>
|
||
<dt>
|
||
<span class="seeLabel">另请参见:</span>
|
||
</dt>
|
||
<dd>
|
||
<span><a href="../../../javax/sound/sampled/TargetDataLine.html#open-javax.sound.sampled.AudioFormat-"><code>open(AudioFormat)</code></a> , <a href="../../../javax/sound/sampled/Line.html#open--"><code>Line.open()</code></a> , <a href="../../../javax/sound/sampled/Line.html#close--"><code>Line.close()</code></a> , <a href="../../../javax/sound/sampled/Line.html#isOpen--"><code>Line.isOpen()</code></a> , <a href="../../../javax/sound/sampled/LineEvent.html" title="javax.sound.sampled中的类"><code>LineEvent</code></a></span>
|
||
</dd>
|
||
</dl> </li>
|
||
</ul> <a name="open-javax.sound.sampled.AudioFormat-">
|
||
<!-- --> </a>
|
||
<ul class="blockList">
|
||
<li class="blockList"> <h4>open</h4> <pre>void open(<a href="../../../javax/sound/sampled/AudioFormat.html" title="class in javax.sound.sampled">AudioFormat</a> format)
|
||
throws <a href="../../../javax/sound/sampled/LineUnavailableException.html" title="class in javax.sound.sampled">LineUnavailableException</a></pre>
|
||
<div class="block">
|
||
<span>以指定的格式打开行,使该行获取任何所需的系统资源,并可以运行。</span>
|
||
<p> <span>该实现选择一个缓冲区大小,以字节为单位测量,但包含整数个采样帧。</span> <span>系统选择的缓冲区大小可以随后调用<code><a href="../../../javax/sound/sampled/DataLine.html#getBufferSize--"><code>DataLine.getBufferSize()</code></a></code>来查询</span> </p>
|
||
<p> <span>如果此操作成功,该行将被标记为打开,并且<code><a href="../../../javax/sound/sampled/LineEvent.Type.html#OPEN"><code>OPEN</code></a></code>事件将调度到该行的监听器。</span> </p>
|
||
<p> <span>在已经打开的行上调用此方法是非法的,可能会导致<code>IllegalStateException</code> 。</span> </p>
|
||
<p> <span>一些封闭的线条无法重新开放。</span> <span>尝试重新打开此行将始终导致<code>LineUnavailableException</code> 。</span> </p>
|
||
</div>
|
||
<dl>
|
||
<dt>
|
||
<span class="paramLabel">参数</span>
|
||
</dt>
|
||
<dd>
|
||
<code>format</code> - 所需的音频格式
|
||
</dd>
|
||
<dt>
|
||
<span class="throwsLabel">异常</span>
|
||
</dt>
|
||
<dd>
|
||
<code><a href="../../../javax/sound/sampled/LineUnavailableException.html" title="class in javax.sound.sampled">LineUnavailableException</a></code> - 如果由于资源限制,该行无法打开
|
||
</dd>
|
||
<dd>
|
||
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果
|
||
<code>format</code>未完全指定或无效
|
||
</dd>
|
||
<dd>
|
||
<code><a href="../../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></code> - 如果该行已经打开
|
||
</dd>
|
||
<dd>
|
||
<code><a href="../../../java/lang/SecurityException.html" title="class in java.lang">SecurityException</a></code> - 如果由于安全限制,该行无法打开
|
||
</dd>
|
||
<dt>
|
||
<span class="seeLabel">另请参见:</span>
|
||
</dt>
|
||
<dd>
|
||
<span><a href="../../../javax/sound/sampled/TargetDataLine.html#open-javax.sound.sampled.AudioFormat-int-"><code>open(AudioFormat, int)</code></a> , <a href="../../../javax/sound/sampled/Line.html#open--"><code>Line.open()</code></a> , <a href="../../../javax/sound/sampled/Line.html#close--"><code>Line.close()</code></a> , <a href="../../../javax/sound/sampled/Line.html#isOpen--"><code>Line.isOpen()</code></a> , <a href="../../../javax/sound/sampled/LineEvent.html" title="javax.sound.sampled中的类"><code>LineEvent</code></a></span>
|
||
</dd>
|
||
</dl> </li>
|
||
</ul> <a name="read-byte:A-int-int-">
|
||
<!-- --> </a>
|
||
<ul class="blockListLast">
|
||
<li class="blockList"> <h4>read</h4> <pre>int read(byte[] b,
|
||
int off,
|
||
int len)</pre>
|
||
<div class="block">
|
||
<span>从数据线的输入缓冲区读取音频数据。</span>
|
||
<span>请求的字节数被读入指定的数组,从指定的偏移开始到数组中,以字节为单位。</span>
|
||
<span>该方法阻塞,直到所请求的数据量被读取为止。</span>
|
||
<span>但是,如果在读取请求的数据量之前关闭数据线,停止,排出或刷新,则该方法不再阻塞,但返回到目前为止读取的字节数。</span>
|
||
<p> <span>可以不受阻塞读取的字节数可以使用被确定<code><a href="../../../javax/sound/sampled/DataLine.html#available--"><code>available</code></a></code>所述的方法<code>DataLine</code>接口。</span> <span>(虽然保证这个字节数可以无阻塞地读取,但不能保证读取附加数据的尝试将被阻止。)</span> </p>
|
||
<p> <span>要读取的字节数必须表示整数个采样帧,使得:</span> <br/></p>
|
||
<center>
|
||
<code>[ bytes read ] % [frame size in bytes ] == 0</code>
|
||
</center>
|
||
<br/>
|
||
<span>返回值将始终满足此要求。</span>
|
||
<span>读取表示非整数样本帧的字节数的请求无法实现,并可能导致IllegalArgumentException异常。</span>
|
||
</div>
|
||
<dl>
|
||
<dt>
|
||
<span class="paramLabel">参数</span>
|
||
</dt>
|
||
<dd>
|
||
<code>b</code> - 当该方法返回时将包含所请求的输入数据的字节数组
|
||
</dd>
|
||
<dd>
|
||
<code>off</code> - 数组
|
||
<code>off</code>的偏移量(以字节为单位)
|
||
</dd>
|
||
<dd>
|
||
<code>len</code> - 要读取的请求的字节数
|
||
</dd>
|
||
<dt>
|
||
<span class="returnLabel">结果</span>
|
||
</dt>
|
||
<dd>
|
||
实际读取的字节数
|
||
</dd>
|
||
<dt>
|
||
<span class="throwsLabel">异常</span>
|
||
</dt>
|
||
<dd>
|
||
<span><code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果请求的字节数不表示整数个样本帧。</span>
|
||
<span>或者如果<code>len</code>为负数。</span>
|
||
</dd>
|
||
<dd>
|
||
<code><a href="../../../java/lang/ArrayIndexOutOfBoundsException.html" title="class in java.lang">ArrayIndexOutOfBoundsException</a></code> - 如果
|
||
<code>off</code>为负数,或
|
||
<code>off+len</code>大于阵列长度
|
||
<code>b</code> 。
|
||
</dd>
|
||
<dt>
|
||
<span class="seeLabel">另请参见:</span>
|
||
</dt>
|
||
<dd>
|
||
<a href="../../../javax/sound/sampled/SourceDataLine.html#write-byte:A-int-int-"><code>SourceDataLine.write(byte[], int, int)</code></a> ,
|
||
<a href="../../../javax/sound/sampled/DataLine.html#available--"><code>DataLine.available()</code></a>
|
||
</dd>
|
||
</dl> </li>
|
||
</ul> </li>
|
||
</ul> </li>
|
||
</ul>
|
||
</div>
|
||
</div> |