Для моего приложения мне нужно записать аудио с MIC на Android-телефоне и отправить его через TCP на другой Android-телефон, где он должен быть воспроизведен.Android: потоковое аудио через TCP-сокеты
Я использую AudioRecord
и AudioTrack
класс. Это отлично работает с файлом - записывайте аудио в файл с помощью DataOutputStream
и читайте его с помощью DataInputStream
.
Однако, если я получаю один и тот же поток из сокета вместо файла и пытаюсь записать его, я получаю исключение.
Я затрудняюсь понять, что может произойти неправильно. Любая помощь будет принята с благодарностью.
EDIT: проблема такая же, даже если я попробую с большими размерами буфера (65535 байт, 160000 байт).
Это код:
Recorder:
int bufferSize = AudioRecord.getMinBufferSize(11025, , AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
AudioRecord recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC, 11025, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
byte[] tempBuffer = new byte[bufferSize];
recordInstance.startRecording();
while (/*isRecording*/) {
bufferRead = recordInstance.read(tempBuffer, 0, bufferSize);
dataOutputStreamInstance.write(tempBuffer);
}
DataOutputStream выше получается:
BufferedOutputStream buff = new BufferedOutputStream(out1); //out1 is the socket's outputStream
DataOutputStream dataOutputStreamInstance = new DataOutputStream (buff);
Не могли бы вы, пожалуйста, смотрите, и дайте мне знать, что это что я могу ошибаться здесь?
Спасибо,
Вам удалось отправить аудиофайл на другие устройства? – B770