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

Jump to: navigation, search
(Introduction)
(45 intermediate revisions by 5 users not shown)
Line 1: Line 1:
These tutorials are now under construction, please be patient.
+
{{Infobox tutorial|time=20 min|distribution=SUSE Linux 11.4|type=Howto|happyreaders=2|unhappyreaders=0}}
This document has born the 28th of February 2007.
+
In order to make the revision process clear, I introduce a confident index, 0 means that nobody except me had reviews the text. I please the reviewers to increment the counter to prove the validity of the tutorials.
+
  
If you are a Phonon developer and you realize errors, you're missing some details or a whole chapter. Please feel free to complete the followings.
+
= Introduction =
You can contact me on #phonon on the irc.freenode.org to give me any feedback.
+
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.'''
  
=Introduction=
+
* '''Hacking the Phonon library'''.
''Confident Index =0''
+
  
The following is based on the documentation available here
+
* '''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.
[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.
+
= Using the phonon API =
* '''Using the Phonon API''', which allows you to develop your own multimedia application. In fact any application that needs sound can take benefits form 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 <tt>systemsettings</tt>.
 +
 
 +
== 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 ==
 +
<pre>
 +
#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();
 +
}
  
* '''Hacking the Phonon library''', (try to develop more this topic).
+
int main(int argc, char **argv)
 +
{
 +
    QApplication app(argc, argv);
 +
    QApplication::setApplicationName("Phonon Tutorial 2");
 +
    MainWindow mw;
 +
    mw.show();
 +
    return app.exec();
 +
}
  
* '''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.
+
#include "main.moc"
 +
</pre>
  
By the way the beginners will probably be interested by the first task.
+
== 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 =
 +
* [[Development/Tutorials/Phonon/Introduction/Python]] - same example in Python
  
 
[[Category:KDE4]]
 
[[Category:KDE4]]
 
[[Category:Phonon]]
 
[[Category:Phonon]]
 +
[[Category:Tutorial]]

Revision as of 09: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

Contents

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


KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal