Я пытаюсь создать программу голосового чата с использованием OpenAL. Сетевая сторона вещей, похоже, в порядке, но я буду советоваться с этим =]Воспроизведение в режиме OpenAL с записанными аудио данными C++
Проблема, которую я сейчас испытываю, заключается в попытке воспроизведения захваченных аудиоданных с микрофона. Я следил за кодом, найденным here, чтобы получить вход микрофона и повторить его для динамиков.
Это работает нормально, но я не могу воспроизвести полностью записанный звук после завершения захвата.
Когда какой-то звук был захвачен я сохраняю его в список, как так ...
for (int i = 0; i < CAP_SIZE; i++)
{
playbackBuffer.push_back(buffer[i]);
}
, а затем после захвата закончил я пытался (и не удалось) использовать следующий код, чтобы играть в том, что аудио назад
ALuint playbackSource;
alGenSources(1, &playbackSource);
errorCode = alGetError();
ALuint tempPlayback;
alBufferData(tempPlayback, AL_FORMAT_MONO16, &playbackBuffer.front(), playbackBuffer.size()*sizeof(ALuint), FREQ);
// Attach the playback buffer to the new playback source
alSourcei(playbackSource, AL_BUFFER, tempPlayback);
alSourcePlay(playbackSource);
ALint sState = 0;
do
{
alGetSourcei(playbackSource, AL_SOURCE_STATE, &sState);
}
while ((sState == AL_PLAYING));
при отладке я могу видеть, что playbackBuffer имеет много данных в нем и есть раскол второго шума играл в этой точке, но далеко не то, что был взят в плен.
EDIT: Я добавил линию
alGenBuffers(1, &tempPlayback);
после создания tempPlayback и перед вызовом alBufferData (...), и это в настоящее время играет за правильное количество времени, но все, что я слышу высокий -pitched шум весь путь.
Спасибо за ваш ответ, но я чувствую, что я, возможно, не объяснил себя должным образом. Я получил код в ссылке, которую я опубликовал для работы, которая воспроизводит звук одновременно с записью, мне нужно сохранить записанный звук, а затем, когда запись закончена, затем воспроизведите ее. Как уже упоминалось, окончательным результатом этого проекта будет программа стиля голосового чата, поэтому я планирую записать фрагмент звука, отправив этот фрагмент по сети во время записи следующего, а затем этот фрагмент будет воспроизводиться с другой стороны. Опять же, спасибо за помощь. – Ralara