Название: Проигрывание звукового потока в Phonon Отправлено: vunder от Сентябрь 15, 2010, 11:20 Получаю звуковой поток через сеть, через свой xml-протокол. Необходимо воспроизвести его. Сначала делал через QAudioOutput? но приложение должно собираться под Qt 4.5, а там еще нет этого класса, поэтому переделываю на Phonon.
Код
Код
При получении звука: Код
Звука нет. В чем проблема? Название: Re: Проигрывание звукового потока в Phonon Отправлено: vunder от Сентябрь 17, 2010, 16:11 Немного разобрался. Оказывается для фонона нужно каждый блок снабжать заголовком, причем именно тем, какого формата данные (в моем случае это wav-header).
Следующий затык был в потоковом воспроизведении. Сделал, как рекомендуется воспроизводить в Windows: - создаю массив буферов - по мере поступления данные записываются в очередной элемент массива - после записи блока данных он помещается в очередь на воспроизведение Phonon::MediaObject::enqueue. Однако после воспроизведения первого блока звук прекращался. Попробовал вызывать Phonon::MediaObject::play после накопления некоторого числа буферов в очереди - сработало, однако звук прерывистый получается Название: Re: Проигрывание звукового потока в Phonon Отправлено: vunder от Октябрь 03, 2010, 17:49 Частично решил проблему. Алгоритм такой:
- после запуска накапливаю 2 секунды звука, после чего добавляю его в очередь воспроизведения методом MediaObject::enqueue() и запускаю воспроизведение - пока проигрывается звук продолжаю накапливать данные, но в новый буфер - при получении сигнала aboutToFinish() от MediaObject добавляю буфер в очередь воспроизведения, а накапливать продолжаю в очередной буфер. На деле получается не очень сдорово. Звук иногда прерывается, иногда некоторые звуковые блоки повторно воспроизводятся. Это возможно из-за неправильного использования буфера. Проблемы с воспроизведением можно решить, если воспроизводить не столько данных, сколько успели накопить, а фиксированные. Опыты показали, что при длине буфера более 2 секунды звук не прерывается. Если проблему решу, обязательно поделюсь результатами |