Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries. Thanks for all your past and future contributions.
Maemo multimedia applications - Part I
As explained in the article GStreamer, most Maemo multimedia applications are developed using the GStreamer framework. If GStreamer is installed on your desktop (or Internet Tablet), you can use two important command line tools that help the development of GStreamer applications: gst-inspect and gst-launch.
The gst-inspect shows the description of GStreamer plug-ins and elements that are installed on your machine; otherwise, an error will occur because a GStreamer-based application cannot find a certain element that is used to decode a MP3 file, for example. If you execute gst-inspect without arguments, it will list all plug-ins and elements installed on your machine, as in the following output:
user@desktop:~$ gst-inspect jrtp: rtpbin: RTP Bin jrtp: rtprecv: JRTP Session jrtp: rtpsend: JRTP Session gstrtpmanager: gstrtpbin: RTP Bin gstrtpmanager: gstrtpclient: RTP Client gstrtpmanager: gstrtpjitterbuffer: RTP packet jitter-buffer gstrtpmanager: gstrtpptdemux: RTP Demux gstrtpmanager: gstrtpsession: RTP Session gstrtpmanager: gstrtpssrcdemux: RTP SSRC Demux schro: schroparse: Dirac Parser schro: schrodec: Dirac Decoder schro: schroenc: Dirac Encoder schro: schrotoy: Video Filter Template siddec: siddec: Sid decoder realmedia: rdtdepay: RDT packet parser realmedia: rademux: RealAudio Demuxer realmedia: rmdemux: RealMedia Demuxer mpegstream: dvddemux: DVD Demuxer mpegstream: mpegdemux: MPEG Demuxer mpegstream: mpegparse: MPEG System Parser mpegaudioparse: mp3parse: MPEG1 Audio Parser mpeg2dec: mpeg2dec: mpeg1 and mpeg2 video decoder ...
Futhermore, if you want more description about a certain plug-in or element (name, libs, properties, etc.), you can execute the gst-inspect command with the name of the plug-in or element you are looking for. For example:
user@desktop:~$ gst-inspect mpeg2dec Factory Details: Long name: mpeg1 and mpeg2 video decoder Class: Codec/Decoder/Video Description: Uses libmpeg2 to decode MPEG video streams Author(s): Wim Taymans <email@example.com> Rank: secondary (128)
Plugin Details: Name: mpeg2dec Description: LibMpeg2 decoder Filename: /usr/lib/gstreamer-0.10/libgstmpeg2dec.so Version: 0.10.6 License: GPL Source module: gst-plugins-ugly Binary package: GStreamer Ugly Plugins (Ubuntu) Origin URL: https://launchpad.net/ubuntu/+source/gst-plugins-ugly0.10
The gst-launch builds and runs a GStreamer pipeline. It helps the programmer to test if a certain pipeline really works. For example, we can use gst-launch to build and run a very simple pipeline with the playbin element (you can see more information about it by running gst-inspect playbin).
user@desktop:~$ gst-launch playbin uri="file:///home/user/Videos/myvideo.avi" Setting pipeline to PAUSED ... Pipeline is PREROLLING ... No accelerated IMDCT transform found sh: jackd: not found Caught interrupt -- Pipeline is PREROLLED ... Setting pipeline to PLAYING ... ...
The argument uri is a property of the playbin element (you can check it with the gst-inspect command) that tells the URI of the media to play. You can also notice the pipeline state chaging: PAUSE, PLAYING, etc. More complex GStreamer pipelines can be created with the gst-launch command.