Previously I posed a question about converting a byte[]
to short[]
and a new problem I encountered is converting/ not converting the data from byte[]
to BigEndian.
Here is what is going on:
TargetDataLine
для чтения данных в byte[10000]
.AudioFormat
произвольно имеет значение BigEndian
true.byte[]
нужно преобразовать в short[]
, чтобы его можно было закодировать с помощью Xuggler.Я не знаю, следует ли установить для AudioFormat
BigEndian значение true или false.
Я испробовал оба случая и получил исключение в обоих случаях.
Чтобы преобразовать byte[]
в short[]
, я делаю следующее:
fromMic.read(tempBufferByte, 0, tempBufferByte.length);
for(int i=0;i<tempBufferShort.length;i++){
tempBufferShort[i] = (short) tempBufferByte[i];
}
где:fromMic
равно TargetDataLine
tempBufferbyte
равно byte[10000]
tempBufferShort
равно short[10000]
Я получаю исключение:
java.lang.RuntimeException: failed to write packet: com.xuggle.xuggler.IPacket@90098448[complete:true;dts:12;pts:12;size:72;key:true;flags:1;stream index:1;duration:1;position:-1;time base:9/125;]
Разная информация, которая может понадобиться:
writer.addAudioStream(0,1,fmt.getChannels(),(int)fmt.getSampleRate());
writer.encodeAudio(1,tempBufferShort,timeStamp,TimeUnit.NANOSECONDS);
Документ Java на AudioFormat
...Помимо кодировки, аудиоформат включает в себя другие свойства, которые дополнительно определяют точное расположение данных. К ним относятся количество каналов, частота дискретизации, размер выборки, порядок байтов, частота кадров и размер кадра...
и
Для 16-битных выборок (или любых других выборок размером больше байта) важен порядок байтов; байты в каждом образце расположены либо в стиле «с прямым порядком байтов», либо в стиле «с прямым порядком байтов».
Вопросы:
BigEndian
как true в объекте javax.sound.sampled.AudioFormat
?I guess I get BigEndian data preformatted by the AudioFormat object.
System.out.println(e)
, чтобы получить то, что он содержит. И я получаюjava.lang.RuntimeException: failed to write packet: com.xuggle.xuggler.IPacket@90098448[complete:true;dts:12;pts:12;size:72;key:true;flags:1;stream index:1;duration:1;position:-1;time base:9/125;]
- person An SO User   schedule 26.12.2012