Я пишу кроссплатформенную программу на базе Qt, которая время от времени должна воспроизводить аудио, подаваемое извне (вне моего контроля), в виде необработанного PCM. Точный формат 16-разрядного PCM с прямым порядком байтов при различных общих частотах дискретизации.
Моей первой очевидной идеей было использование собственного Phonon в Qt для воспроизведения звука, но с этим подходом есть две проблемы:
- Насколько я понимаю, Phonon не поддерживает данные PCM без заголовков. Мне придется взломать это и подделать WAV-заголовок каждый раз, когда начинается воспроизведение. Но не шоу-стоппер.
- Что еще более важно: похоже, нет никакого способа контролировать, как Phonon (и его бэкэнды, такие как xine, PulseAudio, DirectX и т. Д.) Буферизуют. Его поведение по умолчанию похоже на 5 секунд предварительной буферизации, что для меня слишком много . Я предпочел бы около 1 секунды, и я определенно хотел бы иметь возможность контролировать это!
В настоящее время я смотрю на Gstreamer, FFMPEG и libvlc. Какие-нибудь мысли? Поскольку мой звук в очень простом формате, и мне не нужно делать какие-то смешанные вещи (просто регулировку громкости), я бы хотел простой , бесплатный (как в свободе), крест -платформа и широко доступная библиотека .