Hi, I am writing a Java application and i am playing some Windows Media Video (.wmv) and Wave Sounds (.wav). They play perfectly if I give the full path to the file,but I want to play them without doing this. The .wmv file is located in a subfolder of the current directory called 'Videos' and the .wav file is located in a subfolder of the current directory called 'Audio'. The code I am using is posted below.
Help is much appreciated.
//----------------------------------------------------------------------------
public class wmvopen
{ //class
public static void main(String args[])
{ //main
try //try statement
{ //try
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "Q:\\Java123\\Videos\\Movie.wmv"); //open the file movie.wmv
} //try
catch (Exception e) //catch any exceptions here
{ //catch
System.out.println("Error" + e ); //print the error
} //catch
} //main
} //class
//----------------------------------------------------------------------------
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;
public class IntroWave extends Thread
{
private String filename;
private final int EXTERNAL_BUFFER_SIZE = 524288; // 128Kb
public IntroWave(String wavfile)
{
filename = wavfile;
}
public void run()
{ //run
File soundFile = new File(filename);
AudioInputStream audioInputStream = null;
try
{
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
}
catch (UnsupportedAudioFileException e1)
{
e1.printStackTrace();
return;
}
catch (IOException e1)
{
e1.printStackTrace();
return;
}
AudioFormat format = audioInputStream.getFormat();
SourceDataLine auline = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
try {
auline = (SourceDataLine) AudioSystem.getLine(info);
auline.open(format);
} catch (LineUnavailableException e) {
e.printStackTrace();
return;
} catch (Exception e) {
e.printStackTrace();
return;
}
auline.start();
int nBytesRead = 0;
byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];
try {
while (nBytesRead != -1) {
nBytesRead = audioInputStream.read(abData, 0, abData.length);
if (nBytesRead >= 0)
auline.write(abData, 0, nBytesRead);
}
} catch (IOException e) {
e.printStackTrace();
return;
} finally {
auline.drain();
auline.close();
}
} //run
public static void main(String[] args)
{
IntroWave theThread = new IntroWave("Q:\\Java123\\Audio\\JMF.wav");
theThread.start();
}
}
