当我尝试通过创建RTP会话来传输音频时,出现以下错误。
无法打开音频设备进行输入: javax.sound.sampled.LineUnavailableException:格式行 PCM_SIGNED 44100.0 Hz,16位,立体声,4字节/帧,小端 不支持。无法打开音频设备进行输入:
javax.sound.sampled.LineUnavailableException:格式行 PCM_SIGNED 44100.0 Hz,16位,立体声,4字节/帧,小端 不支持。 java.io.IOException:格式为PCM_SIGNED的行 44100.0 Hz,16位,立体声,每帧4字节,不支持little-endian。
[>错误:实例化类时出错: com.sun.media.protocol.javasound.DataSource:java.io.IOException:行 格式PCM_SIGNED 44100.0 Hz,16位,立体声,4字节/帧, 不支持little-endian。
实际上,基于Javasound音频设备的结果,当我在Jmf应用程序中使用captureDevices时,我将javasound://44100设置为MediaLocator。这应该是从我的声卡上发出的声音。但是在创建更多源时会出错。
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());
}
}