Phonon: Difference between revisions

    From KDE TechBase
    (doing something against weird spacing as discussed in chat with valorie)
    (9 intermediate revisions by 2 users not shown)
    Line 1: Line 1:
    {{Infobox tutorial|time=20 min|distribution=SUSE Linux 11.3|type=Howto|happyreaders=2|unhappyreaders=0}}
    {{Infobox tutorial|time=20 min|distribution=SUSE Linux 11.4|type=Howto|happyreaders=2|unhappyreaders=0}}


    = Introduction =
    = Introduction =
    The following is based on the documentation available here
    [http://www.englishbreakfastnetwork.org/apidocs/apidox-kde-4.0/kdelibs-apidocs/phonon/html/index.html Phonon API].
    By getting involved with Phonon, you can choose between three different main tasks.
    By getting involved with Phonon, you can choose between three different main tasks.
    * '''Using the Phonon API''', which allows you to develop your own multimedia application. In fact any application which needs sound can take benefits from the phonon API.
    * '''Using the Phonon API''', which allows you to develop your own multimedia application. '''This is discussed here.'''


    * '''Hacking the Phonon library'''.
    * '''Hacking the Phonon library'''.


    * '''Writing Phonon backend''', this consists in writing interfaces that allows Phonon to use different sound/video engine. This usually requires good skills and knowledge of the engine you interface with.
    * '''Writing Phonon backend''', this consists in writing interfaces that allows Phonon to use different sound/video engine. This usually requires good skills and knowledge of the engine you interface with.
    Beginners will probably be more interested by the first task.


    = Using the phonon API =
    = Using the phonon API =
    The following example is taken from [http://www.englishbreakfastnetwork.org/apidocs/apidox-kde-4.0/kdelibs-apidocs/phonon/html/index.html englishbreakfastnetwork]. It plays /tmp/example.wav. To change the sound device that is used by default, use the command <tt>systemsettings</tt>.
    The following example lets you select a music file and plays it. To change the sound device that is used by default, use the command <tt>systemsettings</tt>.


    == CMakeLists.txt ==
    == CMakeLists.txt ==
    You need a file CMakeLists.txt to compile the software later:
    You need a file CMakeLists.txt to compile the software later:
    CMakeLists.txt
      project (tutorial2)
      project (tutorial2)
      find_package(KDE4 REQUIRED)
      find_package(KDE4 REQUIRED)
      include (KDE4Defaults)
      include (KDE4Defaults)
      include_directories(${KDE4_INCLUDES})
      include_directories(${KDE4_INCLUDES})
      set(tutorial1_SRCS tutorial2.cpp)
      set(tutorial1_SRCS main.cpp)
      kde4_add_executable(tutorial2 ${tutorial1_SRCS})
      kde4_add_executable(tutorial2 ${tutorial1_SRCS})
      target_link_libraries(tutorial2 ${KDE4_KDEUI_LIBS} phonon)
      target_link_libraries(tutorial2 ${KDE4_KDEUI_LIBS} phonon)
      install(TARGETS tutorial2  ${INSTALL_TARGETS_DEFAULT_ARGS})
      install(TARGETS tutorial2  ${INSTALL_TARGETS_DEFAULT_ARGS})


    == tutorial2.cpp ==
    == main.cpp ==
    <pre>
    <pre>
    #include <phonon/mediaobject.h>
    #include <phonon/mediaobject.h>
    #include <phonon/audiooutput.h>
    #include <phonon/audiooutput.h>


    #include <QFileDialog>
    #include <QtGui/QApplication>
    #include <QtGui/QApplication>
    #include <QtGui/QMainWindow>
    #include <QtGui/QMainWindow>
    Line 48: Line 43:
    {
    {
         Phonon::MediaObject* media = new Phonon::MediaObject(this);
         Phonon::MediaObject* media = new Phonon::MediaObject(this);
         createPath(media, new Phonon::AudioOutput(Phonon::MusicCategory, this));
         Phonon::createPath(media, new Phonon::AudioOutput(Phonon::MusicCategory, this));
         media->setCurrentSource(QUrl("/tmp/example.wav"));
         media->setCurrentSource(QFileDialog::getOpenFileName(0,QString("Select a file to play"),QString()));
         media->play();
         media->play();
    }
    }
    Line 62: Line 57:
    }
    }


    #include "tutorial2.moc"
    #include "main.moc"
    </pre>
    </pre>



    Revision as of 08:33, 26 September 2011


    Tutorial Factbox
    Time to replay 20 min
    Example Distro SUSE Linux 11.4
    Type Howto
    Happy readers 2
    Unhappy readers 0

    Introduction

    By getting involved with Phonon, you can choose between three different main tasks.

    • Using the Phonon API, which allows you to develop your own multimedia application. This is discussed here.
    • Hacking the Phonon library.
    • Writing Phonon backend, this consists in writing interfaces that allows Phonon to use different sound/video engine. This usually requires good skills and knowledge of the engine you interface with.

    Using the phonon API

    The following example lets you select a music file and plays it. To change the sound device that is used by default, use the command systemsettings.

    CMakeLists.txt

    You need a file CMakeLists.txt to compile the software later:

    project (tutorial2)
    find_package(KDE4 REQUIRED)
    include (KDE4Defaults)
    include_directories(${KDE4_INCLUDES})
    set(tutorial1_SRCS main.cpp)
    kde4_add_executable(tutorial2 ${tutorial1_SRCS})
    target_link_libraries(tutorial2 ${KDE4_KDEUI_LIBS} phonon)
    install(TARGETS tutorial2  ${INSTALL_TARGETS_DEFAULT_ARGS})
    

    main.cpp

    #include <phonon/mediaobject.h>
    #include <phonon/audiooutput.h>
    
    #include <QFileDialog>
    #include <QtGui/QApplication>
    #include <QtGui/QMainWindow>
    #include <QUrl>
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
        public:
            MainWindow();
    };
    
    MainWindow::MainWindow()
    {
        Phonon::MediaObject* media = new Phonon::MediaObject(this);
        Phonon::createPath(media, new Phonon::AudioOutput(Phonon::MusicCategory, this));
        media->setCurrentSource(QFileDialog::getOpenFileName(0,QString("Select a file to play"),QString()));
        media->play();
    }
    
    int main(int argc, char **argv)
    {
        QApplication app(argc, argv);
        QApplication::setApplicationName("Phonon Tutorial 2");
        MainWindow mw;
        mw.show();
        return app.exec();
    }
    
    #include "main.moc"
    

    Compile and run it

    cmake . && make && ./tutorial2
    

    Getting more help

    To talk among phonon experts, point your irc client to the server irc.freenode.org, channel #phonon.

    See also