Делаю озвучку для приложения. Необходимо, чтобы просто-напросто воспроизводились секундные звуковые сообщения. Причём, необходима многопоточность: чтобы два разных звука могли играть в один момент времени, но не один и тот же звук.
Для етого создаю два класса: Audio : QObject и TMediaObject : Phonon::MediaObject. Далее части кода:
TMediaObject::TMediaObject(SoundType st)
{
soundType = st;
connect(this, SIGNAL(finished()), this, SLOT(finish()));
}
void TMediaObject::finish()
{
emit finishedPlaying(soundType);
deleteLater();
}
Audio::~Audio()
{
delete output;
}
void Audio::play(SoundType soundType) //soundType - собственно играемый звук
{
if (!sounds.contains(soundType)) //если данный звук щё не играется
{
sounds.insert(soundType);
media = new TMediaObject(soundType);
connect(media, SIGNAL(finishedPlaying(SoundType)), this, SLOT(finish(SoundType)));
QString mediaFile = soundDescription(soundType); //преобразование типа звука к имени звукового файла
if (mediaFile == "")
qDebug() << «Error: Media file not found»;
else
{
Phonon::createPath(media, output);
media->setCurrentSource(Phonon::MediaSource(theRM.getSoundsPath() + «/» + mediaFile + ".ogg"));
media->play();
}
}
}
void Audio::finish(SoundType soundType)
{
sounds.remove(soundType);
}
Проигрывание звука начинается в Audio::play, в которую передаётся тип звука.
Проблемы такие:
- одновременно два звука игратся не хотят. Если один уже проигрывается, то для второго выдаётся ошибка Phonon::createPath: Cannot connect TMediaObject ( no objectName ) to Phonon::AudioOutput ( no objectName )
- утечки памяти. Я вроде подчищаю все созданные переменные, но память приложения после добавления звука стала кушатся сильнее, причём вскоре звук пропадает вобще. Причём по-разному, либо после 10 вызовов play, либо аж после 100, но пропадает стабильно.
И такие щё вопросы: каким образом можно щё программировать звук под Qt? Может стоит забить на Phonon?
Ответ на:
комментарий
от abr_linux
Ответ на:
комментарий
от Gorthauer
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [Qt][Phonon][VideoWidget] Вывод на label (2010)
- Форум [Qt] [Phonon] Ошибка воспроизведения звука .smb/smb.conf (2010)
- Форум [Qt][Phonon] Неведомая ошибка. Гуглиться не хочет (2011)
- Форум Не проигрывает phonon (2014)
- Форум разрешение изображения для Phonon::MediaObject/MediaSource (2014)
- Форум Как полностью убрать PulseAudio из системы? (2016)
- Форум FFMPEG проблема записи потока (2013)
- Форум Phonon (2012)
- Форум phonon-gstreamer vs phonon-vlc (2015)
- Форум Phonon+amaroK (2012)