420 lines
23 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="header">
<div class="subTitle">
javax.sound.sampled
</div>
<h2 class="title" title="Interface Clip">Interface Clip</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">Clip</span>
extends <a href="../../../javax/sound/sampled/DataLine.html" title="interface in javax.sound.sampled">DataLine</a></pre>
<div class="block">
<span><code>Clip</code>接口表示一种特殊类型的数据线,其音频数据可以在播放之前加载,而不是实时流式传输。</span>
<p> <span>因为数据是预加载的,并且具有已知的长度,所以您可以设置一个剪辑,以便在其音频数据中的任何位置开始播放。</span> <span>您也可以创建一个循环,这样当剪辑被播放时,它将重复循环。</span> <span>循环用起始和结束采样帧指定,循环应该播放的次数。</span> </p>
<p> <span>剪辑可以从支持这种类型的行的<code><a href="../../../javax/sound/sampled/Mixer.html" title="interface in javax.sound.sampled"><code>Mixer</code></a></code>获得。</span> <span>数据在打开时被加载到剪辑中。</span> </p>
<p> <span>音频剪辑的播放可以使用<code>start</code><code>stop</code>方法启动和停止。</span> <span>这些方法不会重置媒体位置;</span> <span><code>start</code>使播放从最后停止播放的位置继续播放。</span> <span>要重新从剪辑的音频数据的开始播放时,只需按照的调用<code><a href="../../../javax/sound/sampled/DataLine.html#stop--"><code>stop</code></a></code>与setFramePosition0其中倒带媒体剪辑的开始。</span> </p>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.3
</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>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- --> </a> <h3>Field Summary</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Field Summary table, listing fields, and an explanation">
<caption>
<span>Fields</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sound/sampled/Clip.html#LOOP_CONTINUOUSLY">LOOP_CONTINUOUSLY</a></span></code>
<div class="block">
一个值,指示循环应该在无限期之后继续,而不是在特定循环数之后完成。
</div> </td>
</tr>
</tbody>
</table> </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>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sound/sampled/Clip.html#getFrameLength--">getFrameLength</a></span>()</code>
<div class="block">
获取样品帧中的介质长度。
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sound/sampled/Clip.html#getMicrosecondLength--">getMicrosecondLength</a></span>()</code>
<div class="block">
获取媒体持续时间(以微秒为单位)
</div> </td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sound/sampled/Clip.html#loop-int-">loop</a></span>(int count)</code>
<div class="block">
从当前位置开始循环播放。
</div> </td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sound/sampled/Clip.html#open-javax.sound.sampled.AudioFormat-byte:A-int-int-">open</a></span>(<a href="../../../javax/sound/sampled/AudioFormat.html" title="class in javax.sound.sampled">AudioFormat</a> format, byte[] data, int offset, int bufferSize)</code>
<div class="block">
打开剪辑,这意味着它应该获取任何所需的系统资源并可以运行。
</div> </td>
</tr>
<tr class="altColor" id="i4">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sound/sampled/Clip.html#open-javax.sound.sampled.AudioInputStream-">open</a></span>(<a href="../../../javax/sound/sampled/AudioInputStream.html" title="class in javax.sound.sampled">AudioInputStream</a> stream)</code>
<div class="block">
以提供的音频输入流中存在的格式和音频数据打开剪辑。
</div> </td>
</tr>
<tr class="rowColor" id="i5">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sound/sampled/Clip.html#setFramePosition-int-">setFramePosition</a></span>(int frames)</code>
<div class="block">
设置采样帧中的介质位置。
</div> </td>
</tr>
<tr class="altColor" id="i6">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sound/sampled/Clip.html#setLoopPoints-int-int-">setLoopPoints</a></span>(int start, int end)</code>
<div class="block">
设置将在循环中播放的第一个和最后一个采样帧。
</div> </td>
</tr>
<tr class="rowColor" id="i7">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/sound/sampled/Clip.html#setMicrosecondPosition-long-">setMicrosecondPosition</a></span>(long microseconds)</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">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- --> </a> <h3>字段详细信息</h3> <a name="LOOP_CONTINUOUSLY">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>LOOP_CONTINUOUSLY</h4> <pre>static final int LOOP_CONTINUOUSLY</pre>
<div class="block">
一个值,指示循环应该在无限期之后继续,而不是在特定循环数之后完成。
</div>
<dl>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/sound/sampled/Clip.html#loop-int-"><code>loop(int)</code></a>
<a href="../../../constant-values.html#javax.sound.sampled.Clip.LOOP_CONTINUOUSLY">Constant Field Values</a>
</dd>
</dl> </li>
</ul> </li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="open-javax.sound.sampled.AudioFormat-byte:A-int-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,
byte[] data,
int offset,
int bufferSize)
throws <a href="../../../javax/sound/sampled/LineUnavailableException.html" title="class in javax.sound.sampled">LineUnavailableException</a></pre>
<div class="block">
<span>打开剪辑,这意味着它应该获取任何所需的系统资源并可以运行。</span>
<span>剪辑被打开,并显示格式和音频数据。</span>
<span>如果此操作成功,该行将被标记为打开,并且<code><a href="../../../javax/sound/sampled/LineEvent.Type.html#OPEN"><code>OPEN</code></a></code>事件将发送到该行的监听器。</span>
<p> <span>在已经打开的行上调用此方法是非法的可能会导致IllegalStateException异常。</span> </p>
<p> <span>请注意,一旦关闭,一些行不能重新打开。</span> <span>尝试重新打开此行将始终导致<code><a href="../../../javax/sound/sampled/LineUnavailableException.html" title="class in javax.sound.sampled"><code>LineUnavailableException</code></a></code></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>format</code> - 提供的音频数据的格式
</dd>
<dd>
<code>data</code> - 一个包含加载到剪辑中的音频数据的字节数组
</dd>
<dd>
<code>offset</code> - 开始复制的点,以数组开头的
<em>字节表示</em>
</dd>
<dd>
<code>bufferSize</code> - 从数组加载到剪辑中的数据的
<em>字节数</em>
</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/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/LineListener.html" title="javax.sound.sampled中的接口"><code>LineListener</code></a></span>
</dd>
</dl> </li>
</ul> <a name="open-javax.sound.sampled.AudioInputStream-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>open</h4> <pre>void open(<a href="../../../javax/sound/sampled/AudioInputStream.html" title="class in javax.sound.sampled">AudioInputStream</a> stream)
throws <a href="../../../javax/sound/sampled/LineUnavailableException.html" title="class in javax.sound.sampled">LineUnavailableException</a>,
<a href="../../../java/io/IOException.html" title="class in java.io">IOException</a></pre>
<div class="block">
<span>以提供的音频输入流中存在的格式和音频数据打开剪辑。</span>
<span>打开一个剪辑意味着它应该获取任何所需的系统资源,并可以运行。</span>
<span>如果这个操作输入流。</span>
<span>如果此操作成功,该行将被标记为打开,并且<code><a href="../../../javax/sound/sampled/LineEvent.Type.html#OPEN"><code>OPEN</code></a></code>事件将调度到该行的监听器。</span>
<p> <span>在已经打开的行上调用此方法是非法的可能会导致IllegalStateException异常。</span> </p>
<p> <span>请注意,一旦关闭,一些行不能重新打开。</span> <span>尝试重新打开此行将始终导致<code><a href="../../../javax/sound/sampled/LineUnavailableException.html" title="class in javax.sound.sampled"><code>LineUnavailableException</code></a></code></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>stream</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/io/IOException.html" title="class in java.io">IOException</a></code> - 如果在读取数据流期间发生I / O异常
</dd>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></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/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/LineListener.html" title="javax.sound.sampled中的接口"><code>LineListener</code></a></span>
</dd>
</dl> </li>
</ul> <a name="getFrameLength--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getFrameLength</h4> <pre>int getFrameLength()</pre>
<div class="block">
获取样品帧中的介质长度。
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
媒体长度,以采样帧表示,如果行不开,
<code>AudioSystem.NOT_SPECIFIED</code>
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/sound/sampled/AudioSystem.html#NOT_SPECIFIED"><code>AudioSystem.NOT_SPECIFIED</code></a>
</dd>
</dl> </li>
</ul> <a name="getMicrosecondLength--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getMicrosecondLength</h4> <pre>long getMicrosecondLength()</pre>
<div class="block">
获取媒体持续时间(以微秒为单位)
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
媒体持续时间,以微秒为单位,如果线路不开放,
<code>AudioSystem.NOT_SPECIFIED</code>
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../../javax/sound/sampled/AudioSystem.html#NOT_SPECIFIED"><code>AudioSystem.NOT_SPECIFIED</code></a>
</dd>
</dl> </li>
</ul> <a name="setFramePosition-int-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setFramePosition</h4> <pre>void setFramePosition(int frames)</pre>
<div class="block">
<span>设置采样帧中的介质位置。</span>
<span>位置为零;</span>
<span>第一帧是帧号零。</span>
<span>当剪辑在下一次开始播放时,将从此位置播放帧开始。</span>
<p> <span>为了获得以示例帧的当前位置,使用<code><a href="../../../javax/sound/sampled/DataLine.html#getFramePosition--"><code>getFramePosition</code></a></code>的方法<code>DataLine</code></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>frames</code> - 所需的新媒体位置,以示例框架表示
</dd>
</dl> </li>
</ul> <a name="setMicrosecondPosition-long-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setMicrosecondPosition</h4> <pre>void setMicrosecondPosition(long microseconds)</pre>
<div class="block">
<span>以微秒设置媒体位置。</span>
<span>当剪辑在下一次开始播放时,它将从此位置开始。</span>
<span>精度水平不能保证。</span>
<span>例如,实现可以从当前帧位置和音频采样帧速率计算微秒位置。</span>
<span>然后,微秒的精度将被限制为每个采样帧的微秒数。</span>
<p> <span>为了获得在微秒的当前位置,使用<code><a href="../../../javax/sound/sampled/DataLine.html#getMicrosecondPosition--"><code>getMicrosecondPosition</code></a></code>的方法<code>DataLine</code></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>microseconds</code> - 所需的新媒体位置,以微秒表示
</dd>
</dl> </li>
</ul> <a name="setLoopPoints-int-int-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>setLoopPoints</h4> <pre>void setLoopPoints(int start,
int end)</pre>
<div class="block">
<span>设置将在循环中播放的第一个和最后一个采样帧。</span>
<span>结束点必须大于或等于起始点,并且两者必须在加载的介质的大小之内。</span>
<span>起始点的值为0表示加载的媒体的开头。</span>
<span>类似地,结束点的值为-1表示媒体的最后一帧。</span>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>start</code> - 循环的起始位置,在采样帧(从零开始)
</dd>
<dd>
<code>end</code> - 循环的结束位置,以采样帧(从零为基础)或-1表示最终帧
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果所请求的循环点不能被设置,通常是因为一个或两个都位于媒体的持续时间之外,或者因为终点在起始点之前
</dd>
</dl> </li>
</ul> <a name="loop-int-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>loop</h4> <pre>void loop(int count)</pre>
<div class="block">
<span>从当前位置开始循环播放。</span>
<span>播放将继续循环的终点,然后循环回循环起始点<code>count</code>次,最后继续播放到剪辑的末尾。</span>
<p> <span>如果调用此方法时的当前位置大于循环结束点,则回放将简单地继续到剪辑的结尾而不进行循环。</span> </p>
<p> <span><code>count</code>值为0表示任何当前循环都应该停止播放应该继续到剪辑的末尾。</span> <span>当在循环操作期间使用任何其他值调用此方法时,行为是未定义的。</span> </p>
<p> <span>如果在循环过程中播放停止,则当前循环状态被清除;</span> <span>后续循环和启动请求的行为不受中断循环操作的影响。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>count</code> - 播放应该从循环的结束位置循环回循环的起始位置的次数,或
<code><a href="../../../javax/sound/sampled/Clip.html#LOOP_CONTINUOUSLY"><code>LOOP_CONTINUOUSLY</code></a></code> ,以指示循环应该继续直到中断
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>