760e358a

Проигрывание аудиоклипа



Листинг 15.15. Проигрывание аудиоклипа

import javax.sound.sampled.*;

import java.io.*;

class PlayAudio{


PlayAudio(String s){

play(s);

}

public void play(String file){ 

Clip line = null; 

try{

// Создаем объект, представляющий файл 

File f = new File (file);

// Получаем информацию о способе записи файла 

AudioFileFormat aff = AudioSystem.getAudioFileFormat(f);

// Получаем информацию о способе записи звука 

AudioFormat af = aff.getFormat();

// Собираем всю информацию вместе, 

// добавляя сведения о классе 

Class DataLine.Infо info = new DataLine.Info(Clip.class, af) ;

// Проверяем, можно ли проигрывать такой формат 

if (!AudioSystem.isLineSupported(info)){

System.err.printlnt"Line is not supported");
 

System.exit(0);
 

}

// Получаем линию связи с файлом 

line = (Clip)AudioSystem.getLine(info);

// Создаем поток байтов из файла 

AudioInputStream ais - AudioSystem.getAudioInputStream(f);

// Открываем линию 

line.open(ais);
 

}catch(Exception e){

System.err.println(e);

}

// Начинаем проигрывание 

line.start();

// Здесь надо сделать задержку до окончания проигрывания 

// или остановить его следующим методом: 

line.stop();

//По окончании проигрывания закрываем линию 

line.close();
 

}

public static void main(String[] args){ 

if (args.length != 1)

System.out.printlnt"Usage: Java PlayAudio filename");
 

new PlayAudio(args[0]);
 

}

Как видите, методы Java Sound API выполняют элементарные действия, которые надо повторять из программы в программу. Как говорят, это методы "низкого уровня" (low level).

Второй способ, использующий методы интерфейса SourceDataLine, требует предварительного создания буфера произвольного размера.



Содержание раздела