Во время аудиозаписи происходит исключение ...! - PullRequest
0 голосов
/ 01 января 2011

Я сделал программу для записи звука ... Проверьте это .

import java.io.*;
import javax.sound.sampled.*;
public class pp extends Thread
{
    TargetDataLine tdl;
    AudioFileFormat.Type afft;
    AudioInputStream ais;
    File f1;
    public pp(TargetDataLine l,AudioFileFormat.Type t,File f2)
    {
        tdl=l;
        ais=new AudioInputStream(tdl);
        t=afft;
        f1=f2;
    }
    public void start()
    {
        tdl.start();
        super.start();
    }
    public void sr()
    {
        tdl.stop();
        tdl.close();
    }
    public void run()
    {
        try
        {
            AudioSystem.write(ais,afft,f1);
        }
        catch(Exception e)
        {
            e.printStackTrace();
            System.out.println("Exception caught ");
        }
    }
        public static void main(String args[])
        {
            String s=args[0];
            File f=new File(s);
            AudioFormat ff=new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,44100.0F, 16, 2, 4, 44100.0F, false);
            DataLine.Info inf=new DataLine.Info(TargetDataLine.class,ff);
            TargetDataLine td=null;
            try
            {
                td=(TargetDataLine)AudioSystem.getLine(inf);
                td.open(ff);
            }
            catch(Exception e)
            {
                //e.printStackTrace();
                System.out.println("Exception caught ");
            }
            AudioFileFormat.Type t5=AudioFileFormat.Type.AIFC;
            pp p=new pp(td,t5,f);
            System.out.println("enter to start recording");
            try
            {
                System.in.read();
            }
            catch(Exception e)
            {
                System.out.println("exception caught ");
            }
            p.start();
            System.out.println("enter to stop recording");
            try
            {
                System.in.read();
            }
            catch(Exception e)
            {
                System.out.println("exception caught ");
            }
            p.sr();
            System.out.println("recording stoped");
        }
}

Будет показано исключение, как ....

java.lang.IllegalArgumentException: could not write audio file: file type not supported: null
    at javax.sound.sampled.AudioSystem.write(AudioSystem.java:1363)
    at pp.run(pp.java:30)

Может ли кто-нибудь помочь мне решить эту проблему .... !!

1 Ответ

30 голосов
/ 01 января 2011

Вот ваша ошибка:

public pp(TargetDataLine l,AudioFileFormat.Type t,File f2)
{
    tdl=l;
    ais=new AudioInputStream(tdl);
    // This line doesn't do anything useful, does it?
    t=afft;
    f1=f2;
}

Вместо

t = afft;

, которая устанавливает значение параметра в значение переменной экземпляра ,вы хотите наоборот:

afft = t;

Конечно, вы можете использовать более четкие имена и использовать те же имена для параметров и переменных экземпляра, а затем использовать this, чтобы указать, какие использовать:

public AudioRecorder(TargetDataLine inputLine,
                     AudioFileFormat.Type fileType
                     File outputFile)
{
     this.inputLine = inputLine;
     this.inputStream = new AudioInputStream(inputLine);
     this.fileType = fileType;
     this.outputFile = outputFile;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...