T
tom arnall
I am using AudioInputStream and I find that the 'skip()' method seems not to
work. The thing 'executes' without a murmur, returning a value as if doing
the skip, but in fact nothing gets skipped. Code is:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Line2D;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.util.Vector;
import java.util.Enumeration;
import java.io.*;
import javax.sound.sampled.*;
import java.awt.font.*;
import java.text.*;
..
..
..
..
AudioFormat format = getFormat();
AudioInputStream playbackInputStream =
AudioSystem.getAudioInputStream(format, audioInputStream);
DataLine.Info info = new DataLine.Info(SourceDataLine.class,
format);
if (!AudioSystem.isLineSupported(info)) {
System.out.println("Line matching " + info + " not supported.");
return;
}
try {
line = (SourceDataLine) AudioSystem.getLine(info);
line.open(format, bufSize);
}
catch (LineUnavailableException ex) {
System.out.println("Unable to open the line: " + ex);
return;
}
int frameSizeInBytes = format.getFrameSize();
int bufferLengthInFrames = line.getBufferSize() / 8;
int bufferLengthInBytes = bufferLengthInFrames * frameSizeInBytes;
byte[] data = new byte[bufferLengthInBytes];
int numBytesRead = 0;
// start the source data line
line.start();
int j = 0;
try {
!!!!!!HERE IS
SKIP!!!!!!!!System.out.println(""+playbackInputStream.skip(1000));
}
catch (Exception e) {
System.out.println(e);
}
while (j<1000) {
j++;
try {
if ((numBytesRead = playbackInputStream.read(data)) == -1) {
break;
}
int numBytesRemaining = numBytesRead;
while (numBytesRemaining > 0 ) {
numBytesRemaining -= line.write(data, 0, numBytesRemaining);
}
} catch (Exception e) {
System.out.println("Error during playback: " + e);
break;
}
}
thanks,
tom arnall
north spit, ca
work. The thing 'executes' without a murmur, returning a value as if doing
the skip, but in fact nothing gets skipped. Code is:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Line2D;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.util.Vector;
import java.util.Enumeration;
import java.io.*;
import javax.sound.sampled.*;
import java.awt.font.*;
import java.text.*;
..
..
..
..
AudioFormat format = getFormat();
AudioInputStream playbackInputStream =
AudioSystem.getAudioInputStream(format, audioInputStream);
DataLine.Info info = new DataLine.Info(SourceDataLine.class,
format);
if (!AudioSystem.isLineSupported(info)) {
System.out.println("Line matching " + info + " not supported.");
return;
}
try {
line = (SourceDataLine) AudioSystem.getLine(info);
line.open(format, bufSize);
}
catch (LineUnavailableException ex) {
System.out.println("Unable to open the line: " + ex);
return;
}
int frameSizeInBytes = format.getFrameSize();
int bufferLengthInFrames = line.getBufferSize() / 8;
int bufferLengthInBytes = bufferLengthInFrames * frameSizeInBytes;
byte[] data = new byte[bufferLengthInBytes];
int numBytesRead = 0;
// start the source data line
line.start();
int j = 0;
try {
!!!!!!HERE IS
SKIP!!!!!!!!System.out.println(""+playbackInputStream.skip(1000));
}
catch (Exception e) {
System.out.println(e);
}
while (j<1000) {
j++;
try {
if ((numBytesRead = playbackInputStream.read(data)) == -1) {
break;
}
int numBytesRemaining = numBytesRead;
while (numBytesRemaining > 0 ) {
numBytesRemaining -= line.write(data, 0, numBytesRemaining);
}
} catch (Exception e) {
System.out.println("Error during playback: " + e);
break;
}
}
thanks,
tom arnall
north spit, ca