/*
Java Media APIs: Cross-Platform Imaging, Media and Visualization
Alejandro Terrazas
Sams, Published November 2002,
ISBN 0672320940
*/
import javax.media.*;
import javax.media.protocol.*;
import javax.media.format.*;
/*******************************************************************************
* Simple example to show the Location2Location class in action. The
* Location2Location class transfer media from one location to another
* performing any requested tanscoding (format changes) at the same time.
*
* The class is used twice. Once to transform a short wave audio file of an
* electric guitar (guitar.wav) into MP3 format. The second example converts of
* Quicktime version of the example video from chapter 7, encoded with the Indeo
* 5.o codec and GSM audio into an AVI version with Cinepak codec for the video
* and linear encoding for the audio.
******************************************************************************/
public class StaticTranscode {
public static void main(String[] args) {
String src;
String dest;
Format[] formats;
ContentDescriptor container;
int waited;
Location2Location dupe;
/////////////////////////////////////////////////////////////////
// Transcode a wave audio file into an MP3 file, transferring it
// to a new location (dest) at the same time.
////////////////////////////////////////////////////////////////
src = "file://d:\\jmf\\book\\media\\guitar.wav";
dest = "file://d:\\jmf\\book\\media\\guitar.mp3";
formats = new Format[1];
formats[0] = new AudioFormat(AudioFormat.MPEGLAYER3);
container = new FileTypeDescriptor(FileTypeDescriptor.MPEG_AUDIO);
dupe = new Location2Location(src, dest, formats, container);
System.out.println("After creation, state = " + dupe.getStateName());
waited = dupe.transfer(10000);
System.out.println("Waited " + waited + " milliseconds. State is now "
+ dupe.getStateName());
///////////////////////////////////////////////////////////////////
// Transcode a Quicktime version of a movie into an AVI version.
// The video codec is altered from Indeo5.0 to Cinepak,the audio
// track is transcoded from GSM to linear, and is result is saved
// as a file "qaz.avi".
//////////////////////////////////////////////////////////////////
src = "file://d:\\jmf\\book\\media\\videoexample\\iv50_320x240.mov";
dest = "file://d:\\jmf\\book\\media\\qaz.avi";
formats = new Format[2];
formats[0] = new VideoFormat(VideoFormat.CINEPAK);
formats[1] = new AudioFormat(AudioFormat.LINEAR);
container = new FileTypeDescriptor(FileTypeDescriptor.MSVIDEO);
dupe = new Location2Location(src, dest, formats, container, 5.0f);
System.out.println("After creation, state = " + dupe.getStateName());
waited = dupe.transfer(Location2Location.INDEFINITE);
int state = dupe.getState();
System.out.println("Waited " + (waited / 1000)
+ " seconds. State is now " + dupe.getStateName()
+ ", rate was " + dupe.getRate());
System.exit(0);
}
}
|