Я реализую очень простой аудио-RTMP-сервер.
У меня есть мой код клиента, как это:
// get the default mic
var mic:Microphone= Microphone.getMicrophone();
// best quality (picks up all sounds, no transmission interruptions)
mic.setSilenceLevel(0);
// Using SPEEX codec with quality of 5
mic.codec = SoundCodec.SPEEX;
mic.encodeQuality = 5; // Required bit rate: 16.8 kbits/s,
// Rate is automatically set to 16K Hz if SPEEX codec is set
//mic.rate = 16;
mic.framesPerPacket = 1;
// Attach the mic to the NetStream
ns.attachAudio(mic);
ns.publish("SpeexAudioData", "record");
Затем на сервере я продолжаю получать аудиопакеты размером 43 байта или 11 байтов (другие размеры пока не найдены).
Мои вопросы:
- Почему я получаю размер 43 байта или 11 байтов (из кодировки SPEEX?)?
- Является ли 43 байта = 1 главный байт + 42 байта данных?
- Какой размер 11 байтов?
- Как мне обработать или преобразовать SPEEX в необработанные данные, чтобы мое приложение на стороне сервера могло использовать эти аудиоданные? Моя текущая реализация:
- Я забираю все 43-байтовые пакеты (отбрасываю все 11-байтовые пакеты);
- Пропустить первый 1 байт;
- Расшифруйте левые 42 байта, используя библиотеку Speex.
- Как мне преобразовать необработанные данные обратно в аудиоданные SPEEX?
Спасибо.