Difference between revisions of "Development/Tutorials/Phonon/Introduction"

Jump to: navigation, search
(doing something against weird spacing as discussed in chat with valorie)
(The Code: Fix use of deprecated MediaSource constructor.)
 
(14 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Infobox tutorial|time=20 min|distribution=SUSE Linux 11.3|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.
+
=Abstract=
 +
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>.
  
= Using the phonon API =
+
=The Code=
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>.
+
All the code we need will be in one file, <tt>main.cpp</tt>. Create that file with the code below:
 
+
<syntaxhighlight lang="cpp-qt">
== CMakeLists.txt ==
+
You need a file CMakeLists.txt to compile the software later:
+
CMakeLists.txt
+
project (tutorial2)
+
find_package(KDE4 REQUIRED)
+
include (KDE4Defaults)
+
include_directories(${KDE4_INCLUDES})
+
set(tutorial1_SRCS tutorial2.cpp)
+
kde4_add_executable(tutorial2 ${tutorial1_SRCS})
+
target_link_libraries(tutorial2 ${KDE4_KDEUI_LIBS} phonon)
+
install(TARGETS tutorial2  ${INSTALL_TARGETS_DEFAULT_ARGS})
+
 
+
== tutorial2.cpp ==
+
<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 29:
 
{
 
{
 
     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(QUrl::fromLocalFile(QFileDialog::getOpenFileName(0,QString("Select a file to play"),QString())));
 
     media->play();
 
     media->play();
 
}
 
}
Line 62: Line 43:
 
}
 
}
  
#include "tutorial2.moc"
+
#include "main.moc"
</pre>
+
</syntaxhighlight>
 +
 
 +
=Build=
 +
As usual, we use CMake for build operations:
 +
 
 +
== CMakeLists.txt ==
 +
You need a file CMakeLists.txt to compile the software:
 +
<syntaxhighlight lang="cmake">
 +
project (phonon_tutorial1)
 +
find_package(KDE4 REQUIRED)
 +
include (KDE4Defaults)
 +
include_directories(${KDE4_INCLUDES})
 +
set(phonon_tutorial1_SRCS main.cpp)
 +
kde4_add_executable(phonon_tutorial1 ${phonon_tutorial1_SRCS})
 +
target_link_libraries(phonon_tutorial1 ${KDE4_KDEUI_LIBS} ${PHONON_LIBS})
 +
install(TARGETS phonon_tutorial1  ${INSTALL_TARGETS_DEFAULT_ARGS})
 +
</syntaxhighlight>
  
== Compile and run it ==
+
==Make And Run==
cmake . && make && ./tutorial2
+
<syntaxhighlight lang="bash">
 +
cmake . && make && ./phonon_tutorial1
 +
</syntaxhighlight>
  
= Getting more help =
+
= Getting More Help =
 
To talk among phonon experts, point your irc client to the server irc.freenode.org, channel #phonon.
 
To talk among phonon experts, point your irc client to the server irc.freenode.org, channel #phonon.
  
= See also =
+
= See Also =
 
* [[Development/Tutorials/Phonon/Introduction/Python]] - same example in Python
 
* [[Development/Tutorials/Phonon/Introduction/Python]] - same example in Python
  

Latest revision as of 23:46, 23 August 2013

Contents

[edit] 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.

[edit] Abstract

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.

[edit] The Code

All the code we need will be in one file, main.cpp. Create that file with the code below:

#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(QUrl::fromLocalFile(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"

[edit] Build

As usual, we use CMake for build operations:

[edit] CMakeLists.txt

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

project (phonon_tutorial1)
find_package(KDE4 REQUIRED)
include (KDE4Defaults)
include_directories(${KDE4_INCLUDES})
set(phonon_tutorial1_SRCS main.cpp)
kde4_add_executable(phonon_tutorial1 ${phonon_tutorial1_SRCS})
target_link_libraries(phonon_tutorial1 ${KDE4_KDEUI_LIBS} ${PHONON_LIBS})
install(TARGETS phonon_tutorial1  ${INSTALL_TARGETS_DEFAULT_ARGS})

[edit] Make And Run

cmake . && make && ./phonon_tutorial1

[edit] Getting More Help

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

[edit] See Also


This page was last modified on 23 August 2013, at 23:46. This page has been accessed 42,405 times. Content is available under Creative Commons License SA 3.0 as well as the GNU Free Documentation License 1.2.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal