2010-12-17 27 views
11

¿Cómo puedo reproducir sonido con Qt? He intentado esto:Cómo reproducir sonido con Qt

QSound::play("sounds/croack.wav"); 

QSound no funciona en mi ubuntu (parece que requiere NAS, aunque después de lo instalé aún no funciona). ¿Hay una solución simple de Qt solo de una línea o debo agregar SDL o algo más?

+0

Probé QSound en Ubuntu, Windows y Mac y todos ellos funcionaba bien. –

Respuesta

3

Ok Tengo algunos progresos, puedo reproducir archivos ogg pero no wav (no sé por qué).

#include <QtGui> 
#include <phonon/phonon> 

int main(int argc, char* argv[]) { 
    QApplication app(argc, argv); 
    app.setApplicationName("bla"); 
    Phonon::MediaObject *mediaObject = Phonon::createPlayer(Phonon::NoCategory, Phonon::MediaSource("sounds/4.wav")); 
    mediaObject->play(); 
    return app.exec(); 
} 

compilado con g++ ``pkg-config QtGui phonon --cflags --libs``.

+0

Realmente aprecio tener un ejemplo tan mínimo, es lo que finalmente me permite hacerlo funcionar. ¡Gracias! – daveagp

5

Probar con phonon. Es mucho más poderoso que QSound. Aquí hay un ejemplo mínimo para reproducir un archivo de video. Si omite el VideoWidget, debería simplemente reproducir audio.

#include <QApplication> 
#include <QUrl> 

#include <phonon/audiooutput.h> 
#include <phonon/mediaobject.h> 
#include <phonon/mediasource.h> 
#include <phonon/videowidget.h> 

using namespace Phonon; 

int main(int argc, char** argv) { 
    QApplication app(argc, argv); 
    app.setApplicationName(QLatin1String("testphonon")); 
    const QUrl url = QUrl(QLatin1String("file:///somepath/somefile")); 
    MediaSource src(url); 
    MediaObject obj; 
    obj.setCurrentSource(src); 
    VideoWidget video; 
    video.show(); 
    AudioOutput audio(VideoCategory); 
    Phonon::createPath(&obj, &video); 
    Phonon::createPath(&obj, &audio); 
    obj.play(); 
    return app.exec(); 
} 
+0

Lo intenté, pero esto no funciona en mi ubuntu, no se reproduce ningún sonido. –

+0

@Helltone: Phonon es solo una envoltura de backends nativos como gstreamer. Si el phonon no funciona, es un problema con ese backend (si un formato funciona pero otro no lo es), o con el phonon no configurado correctamente. Comprueba si algún reproductor de video que usa gstreamer tiene los mismos problemas. –

+0

¿Es estándar el fonón? ¿Qué encabezados debo incluir? –

4

Usted tiene algunas opciones:

  • QSound (que se rompe sin remedio - no lo use)
  • Phonon (hará lo que usted quiera, pero me pareció que para ser "demasiado", especialmente cuando solo desea reproducir algunos sonidos de notificación)
  • Otras bibliotecas como SDL.
+0

¿Puedes dar un ejemplo de solo reproducir un sonido? –

4

En QT5, Phonon se ha eliminado de la versión oficial. QSound funciona en su mayor parte, pero tenga en cuenta que QSound no admite la reproducción de archivos de onda con todas las frecuencias de muestreo (como descubrí por las malas). QT5 QSound does not play all wave files.

Si usa QSound, puede reproducir una ola como lo hizo; pero asegúrese de estar reproduciendo un archivo desde un disco; no es un recurso de QT. Dado que los recursos aún no son compatibles. Puede copiar un archivo de onda desde un recurso a un disco duro sobre la marcha y luego reproducirlo; que es lo que estoy haciendo en mi aplicación.

3

Se puede utilizar tanto para QMediaPlayer formato de archivos .mp3 y .wav

#include <QtMultimedia/QMediaPlayer> 

QMediaPlayer *player = new QMediaPlayer; 
player->setMedia(QUrl::fromLocalFile("/path")); 
player->setVolume(50); 
player->play(); 
+1

Pero asegúrese de que un códec de plataforma esté instalado para MP3. – Trilarion

Cuestiones relacionadas