javax.sound.sampled.LineUnavailableException: строка с форматом PCM_SIGNED 44100,0 Гц, 16 бит, стерео, 4 байта / кадр, младший порядок не поддерживается - PullRequest
0 голосов
/ 27 августа 2018

Когда я пытаюсь передать аудио, создавая сеанс RTP, я получаю следующую ошибку.

Невозможно открыть аудиоустройство для ввода: javax.sound.sampled.LineUnavailableException: строка с форматом PCM_SIGNED 44100,0 Гц, 16 бит, стерео, 4 байта / кадр, младший порядок не поддерживается. Не могу открыть аудиоустройство для ввода:

javax.sound.sampled.LineUnavailableException: строка с форматом PCM_SIGNED 44100,0 Гц, 16 бит, стерео, 4 байта / кадр, младший порядок не поддерживается. java.io.IOException: строка с форматом PCM_SIGNED 44100,0 Гц, 16 бит, стерео, 4 байта / кадр, младший порядок не поддерживается.

[> ошибка: ошибка создания экземпляра класса: com.sun.media.protocol.javasound.DataSource: java.io.IOException: line с форматом PCM_SIGNED 44100,0 Гц, 16 бит, стерео, 4 байта / кадр, little-endian не поддерживается.

Фактически, основываясь на результатах аудиоустройства Javasound, я сделал javasound: // 44100 для MediaLocator, когда я использую captureDevices в приложении Jmf. Предполагалось, что он будет звучать прямо с моей звуковой карты. Но это делает ошибку при создании большего количества источника.

  public void startMedia() {
    try {
        MediaLocator locator = new MediaLocator("javasound://44100");

        DataSource dataSource = Manager.createDataSource(locator);             
        ContentDescriptor outputFile = new ContentDescriptor(ContentDescriptor.RAW_RTP);   
        AudioFormat[] aFormat = new AudioFormat[1];
        aFormat[0] = new AudioFormat(AudioFormat.LINEAR, 44100, 16, 2, 0, 1);

        ProcessorModel processorModel = new ProcessorModel(dataSource, aFormat, outputFile);
        processor = Manager.createRealizedProcessor(processorModel);

        outDataSource = processor.getDataOutput();

    } catch (IOException | CannotRealizeException | NoDataSourceException | NoProcessorException e) {
        System.out.println("error sd: " + e.getMessage());
    }
}
...