Я пытаюсь закодировать необработанные данные PCM как uLaw, чтобы сэкономить полосу пропускания, необходимую для передачи речевых данных.
Я наткнулся на класс под названием UlawEncoderInputStream на этой странице , но там нет документации! : (
Конструктор принимает входной поток и максимальное значение pcm (каким бы оно ни было).
/**
* Create an InputStream which takes 16 bit pcm data and produces ulaw data.
* @param in InputStream containing 16 bit pcm data.
* @param max pcm value corresponding to maximum ulaw value.
*/
public UlawEncoderInputStream(InputStream in, int max) {
После просмотра кода я подозреваю, что мне следует вычислить это «максимальное» значение, используя предоставленную функцию: maxAbsPcm . Проблема в том, что я действительно не понимаю, что мне нужно передать в него! Я записываю свой необработанный ПКМ в файл на SD-карте, поэтому у меня нет одного постоянного массива данных, постоянно хранящегося в памяти, чтобы передать ему.
/**
* Compute the maximum of the absolute value of the pcm samples.
* The return value can be used to set ulaw encoder scaling.
* @param pcmBuf array containing 16 bit pcm data.
* @param offset offset of start of 16 bit pcm data.
* @param length number of pcm samples (not number of input bytes)
* @return maximum abs of pcm data values
*/
public static int maxAbsPcm(byte[] pcmBuf, int offset, int length) {
Еще одна проблема, с которой я столкнулся при использовании этого кода, заключается в том, что я не уверен, какие значения записывать в заголовок для данных uLaw. Как определить, насколько меньше байтовых данных осталось после кодирования с помощью uLaw?
Я прослушал один из (потенциально) файлов в кодировке uLaw, которые я создал в медиаплеере VLC (единственный плеер, который у меня есть, который попытается прочитать файл), и его звуки мерзкие, ломкие и щелкающие, но все еще могу разобрать голос.
Я написание моего волнового заголовка с использованием кода, похожего на найденный мной класс WaveHeader, который можно найти Здесь !
Если у кого-нибудь есть какие-либо мысли по этому поводу, я был бы очень благодарен их выслушать! :)
Большое спасибо Декстер