import java.io.IOException; import java.io.File; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; // not portable, but cannot be avoided currently import org.tritonus.share.sampled.AudioFileTypes; import org.tritonus.share.sampled.Encodings; public class GSMEncoder { public static void main(String[] args) { if (args.length != 2) { printUsageAndExit(); } File pcmFile = new File(args[0]); File gsmFile = new File(args[1]); AudioInputStream ais = null; try { ais = AudioSystem.getAudioInputStream(pcmFile); } catch (Exception e) { e.printStackTrace(); } if (ais == null) { System.out.println("cannot open audio file"); System.exit(1); } AudioFormat.Encoding targetEncoding = Encodings.getEncoding("GSM0610"); AudioInputStream gsmAIS = AudioSystem.getAudioInputStream(targetEncoding, ais); AudioFileFormat.Type fileType = AudioFileTypes.getType("GSM", ".gsm"); int nWrittenFrames = 0; try { nWrittenFrames = AudioSystem.write(gsmAIS, fileType, gsmFile); } catch (IOException e) { e.printStackTrace(); } } private static void printUsageAndExit() { System.out.println("GSMEncoder: usage:"); System.out.println("\tjava GSMEncoder "); System.exit(1); } } /*** GSMEncoder.java ***/