Непрерывная потоковая передача данных PCM на C++?

StackOverflow https://stackoverflow.com/questions/1868993

Вопрос

У меня есть поток звука PCM, записанный с мобильного телефона, и я хочу его воспроизвести.

Я пытаюсь найти легкий метод воспроизведения этого звука на C++.

Я уже могу добавить заголовок волны и создать файл, который будет воспроизводиться в любом медиаплеере, но я хочу воспроизводить файл в реальном времени по мере его поступления.Я бы не хотел записывать файл на диск только для того, чтобы прочитать его снова, и я также не хочу, чтобы в звуке были паузы, когда я останавливаю один файл и запускаю другой.

Я понимаю, что OpenAL обеспечивает функцию потокового аудио, но я надеялся на что-то более простое.Мне нужно воспроизвести только одноканальный поток PCM.

Кто-нибудь знает легкую, бесплатную (для коммерческого использования) библиотеку или API Windows, которые могут это сделать?

Это было полезно?

Решение

Использовать волнавыход API в Windows

Другие советы

Похоже на срок действия патента истек, поэтому не должно быть никаких юридических осложнений.Прелесть патента в том, что он делает алгоритм общедоступным.

Воспроизведение одного потока PCM, увы, не ТАК просто.Это не так уж и сложно.Я не использовал OpenAL, но в стандартном аудио Windows, XAudio2 или DirectSound легко использовать двойную буферизацию.Воспроизведение буфера 1 при заполнении буфера 2 из потока.Затем воспроизведите буфер 2, заполняя буфер 1, и так далее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top