Непрерывная потоковая передача данных PCM на C++?
-
18-09-2019 - |
Вопрос
У меня есть поток звука PCM, записанный с мобильного телефона, и я хочу его воспроизвести.
Я пытаюсь найти легкий метод воспроизведения этого звука на C++.
Я уже могу добавить заголовок волны и создать файл, который будет воспроизводиться в любом медиаплеере, но я хочу воспроизводить файл в реальном времени по мере его поступления.Я бы не хотел записывать файл на диск только для того, чтобы прочитать его снова, и я также не хочу, чтобы в звуке были паузы, когда я останавливаю один файл и запускаю другой.
Я понимаю, что OpenAL обеспечивает функцию потокового аудио, но я надеялся на что-то более простое.Мне нужно воспроизвести только одноканальный поток PCM.
Кто-нибудь знает легкую, бесплатную (для коммерческого использования) библиотеку или API Windows, которые могут это сделать?
Решение
Использовать волнавыход API в Windows
Другие советы
Похоже на срок действия патента истек, поэтому не должно быть никаких юридических осложнений.Прелесть патента в том, что он делает алгоритм общедоступным.
Воспроизведение одного потока PCM, увы, не ТАК просто.Это не так уж и сложно.Я не использовал OpenAL, но в стандартном аудио Windows, XAudio2 или DirectSound легко использовать двойную буферизацию.Воспроизведение буфера 1 при заполнении буфера 2 из потока.Затем воспроизведите буфер 2, заполняя буфер 1, и так далее.