Mini Player

Plasma 4 Extensions

Source (link to git-repo or to original if based on someone elses unmodified work): Add the source-code for this project on opencode.net

13
8 .2
Description:

Advanced media player for Plasma which lets you to listen to your favorite music and watch videos directly on your desktop.
Developed and tested on KDE 4.8 with Qt 4.8 (Kubuntu 12.04).

Warning!
Video output has inverted colors with older versions of GStreamer backend (which is recommended), https://bugs.kde.org/show_bug.cgi?id=234019.

Source (main repository, with more frequent updates) is located at:
https://github.com/Emdek/plasmoid-mini-player/

Features:
- multiple playlists support;
- ability to import from PLS, M3U, XSPF and ASX playlist formats;
- ability to export to PLS and M3U playlist formats;
- streams support;
- optical discs support;
- full MPRIS2 D-Bus interface to control player (disabled by default);
- basic video settings;
- drag and drop support;
- possibility to start playback of last used playlist on startup;
- keyboard shortcuts:
-- pausing and playing (Space);
-- stopping playback (S);
-- play next and previous track (Page Up and Page Down);
-- seeking video (left and right arrow);
-- changing volume (+ and -) and (un)mute (M);
-- toggling full screen (F);
-- toggling controls visibility (C);
-- toggling play list visibility (P);
-- accessing volume slider (V);
-- accessing file open dialog (O);
-- accessing URL open dialog (U);
-- accessing jump to position dialog (G).

If you have found bugs or have suggestions you can contact me via email, message or using comments, before you will vote bad.
And remember that not everybody has enough time for fast replying. ;-)

Don't be silly, don't vote bad just for fun!
Last changelog:

8 years ago

2.5 (01.07.2012):
- allow to toggle playback state using single mouse click on video widget;
- move tracks instead of copying them when dragging inside playlist view;
- try to avoid showing tooltip when there is full screen window;
- allow to copy tracks between tabs by dragging them;
- switch tabs when dragging URLs over their handles;
- allow to copy selected tracks to another playlist;
- added support for media buttons;
- allow to select multiple tracks;
- some other fixes.

2.4 (25.05.2012):
- updated DBus interface to MPRIS2 specification;
- added Current Track Once playback mode;
- fixed Play Previous and Play Next actions;
- enable Apply button when configuration values are changed;
- added Play Previous and Play Next to set of available controls and to toolbars of playlist dialog and full screen view;
- some other fixes and lots of internal changes.

patkoscsaba

11 years ago

Are there any plans to implement playback of online radio? I would like to use this to listen some online radio. Right now it can't open http://some-radio-server/playlist.m3u nor the direct stream link.

This would be a great addon to this plasmoid and would make it more usefull.

Thanks.

Report

C

Emdek

11 years ago

I've added support for it yesterday and maybe I'll release new version during next weekend with some other improvements.

Report

patkoscsaba

11 years ago

Great, can't wait for it :D

Report

C

Emdek

11 years ago

It's finally ready for testing. ;-)
Small tip, importing of remote play lists not always works fully reliable so if this would fail you can open streams using Open URL action.

Report

patkoscsaba

11 years ago

This is FANTASTIC! It works perfectly with the radio station I listen to and it uses very little CPU too.

I love it now, on my laptop it integrates seemlessly into the desktop and it is not a resource hug ... well at least after the first 5 minutes.

I am curious if it remembers what I was listening to when I restart KDE (or the computer). I will not restart just for this, so I'll see tomorrow.

Great job, you have e new fan.

Report

C

Emdek

11 years ago

Thanks. :-)

Now all play lists should be always remembered but you can always export it to PLS or M3U.

Report

C

Emdek

11 years ago

Interesting idea, I'll try to add support for this in near future.

Report

Takahani

11 years ago

Hi, thanks for your work, and I'm really interested in it since I'm trying to write a video player applet in amarok, which is basically the same problem, embedded a VideoWidget inside an applet

On two different computers :
Kubuntu 64 bit 8.10 qt4.4.3 nvidia 3D ok
Kubuntu 32 bit 9.04 qt4.5 intel 3D ok,
I can't get a video playing neither with xine or gstreamer backend :/
Sound ok, but black video ...

I've got the same pb on my playground applet in amarok which use the trunk version of plasma::VideoWidget

I always get a black screen ..


On both computer something might be wrong with the phonon/xine/gstreamer/qt/plasma configuration, but i don't where to go ...

Do you have any clue about this problem of not working video ?
Thanks for your work !
Simon



Report

C

Emdek

11 years ago

Sorry, I've no idea why this happens. :-/
But this could be probably problem with Phonon or it's backend (or maybe something between Phonon and Plasma).
Maybe author of that widget (Marco Martin) or someone on Plasma IRC channel has some ideas...

Report

Takahani

11 years ago

Have asked Marco on irc but he says that there is no solution for now

Here is a bug report :
https://bugs.kde.org/show_bug.cgi?id=191696

Thanks for updating this nice plasmoid

Report

C

Emdek

11 years ago

Thanks for information, I've added link to bug report.

Report

Takahani

11 years ago

Hi again !

In fact the video works fine with gstreamer now, but don't know what has changed ...

If U find the reason, let me know

Thks

Report

universe777

11 years ago

Hi, I've compiled the new version 0.7 with Kubuntu Jaunty RC KDE4-Dev and it seems to work now :) No crashes until now and no overlay of songs anymore, thx. Also made a .deb package.

Report

C

Emdek

11 years ago

This was probably caused by stupid problem with position slider (finally identified and fixed).

Report

universe777

11 years ago

Hi,

sorry,I forgot to mention that I use Kubuntu 9.04 RC,Qt Version 4.5 and I use Phonon Xine backend. I've compiled the player with the 9.04 Beta,now using the RC of Kubuntu Jaunty.Same effects there.Player overlays the mp3 after the first play,like 3 mp3's running at the same time.Usage of config or volume slider causes plasma to crash.
There was a back trace I sent to launchpad, but I can't find it any more,maybe it already has been deleted on launchpad... Do I get the back trace stored on my system in case of a crash ? If it is,please tell me where I can find it. I also made a deb package, If someone is interested to test.

Report

C

Emdek

11 years ago

Could you try to check how it works with GStreamer backend?

As far as I know, back traces aren't stored in file, so we need new one...
You can try to run applet using this command: plasmoidviewer miniplayer, then Plasma won't crash, only viewer window (better for testing).

Report

universe777

11 years ago

Hi,

I've installed the new version 0.6, but plasma crashes every time with kdebase, as I could see in the bug report.When I try to use the config or play a mp3, plasma hangs up. Video also not working, just sound.

regards,

Universe777

Report

C

Emdek

11 years ago

Please provide back trace if there is any, without it I can't check what causes crash.
And which distribution, Qt version and Phonon backend are you using?

Report

milamby

11 years ago

I've got a backtrace for you. When I exit the configuration dialog the miniplayer gets into an infinite loop over volume changes.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fc71c46e7a0 (LWP 5124)]
0x00007fc71e705fe4 in _dbus_marshal_skip_basic (str=Cannot access memory at address 0x7fff2fb0fff8
) at dbus-marshal-basic.c:1084
1084 dbus-marshal-basic.c: No such file or directory.
in dbus-marshal-basic.c
Current language: auto; currently c
(gdb) bt
#0 0x00007fc71e705fe4 in _dbus_marshal_skip_basic (str=Cannot access memory at address 0x7fff2fb0fff8
) at dbus-marshal-basic.c:1084
#1 0x00007fc71e6ee117 in base_reader_next (reader=0x7fff2fb10230, current_type=111) at dbus-marshal-recursive.c:479
#2 0x00007fc71e6ee727 in _dbus_type_reader_next (reader=0x7fff2fb10230) at dbus-marshal-recursive.c:1054
#3 0x00007fc71e6effbd in writer_write_reader_helper (writer=0x7fff2fb10270, reader=0x7fff2fb10230, start_after=0x7fff2fb107a0, start_after_new_pos=4, start_after_new_len=20,
fixups=0x7fff2fb105f8, inside_start_after=0) at dbus-marshal-recursive.c:2617
#4 0x00007fc71e6efda9 in writer_write_reader_helper (writer=0x7fff2fb10390, reader=0x7fff2fb10350, start_after=0x7fff2fb107a0, start_after_new_pos=4, start_after_new_len=20,
fixups=0x7fff2fb105f8, inside_start_after=0) at dbus-marshal-recursive.c:2510
#5 0x00007fc71e6efda9 in writer_write_reader_helper (writer=0x7fff2fb104b0, reader=0x7fff2fb10470, start_after=0x7fff2fb107a0, start_after_new_pos=4, start_after_new_len=20,
fixups=0x7fff2fb105f8, inside_start_after=0) at dbus-marshal-recursive.c:2510
#6 0x00007fc71e6efda9 in writer_write_reader_helper (writer=0x7fff2fb10640, reader=0x7fff2fb10600, start_after=0x7fff2fb107a0, start_after_new_pos=4, start_after_new_len=20,
fixups=0x7fff2fb105f8, inside_start_after=0) at dbus-marshal-recursive.c:2510
#7 0x00007fc71e6f00d6 in _dbus_type_writer_write_reader_partial (writer=0x7fff2fb10640, reader=0x7fff2fb10600, start_after=0x7fff2fb107a0, start_after_new_pos=4,
start_after_new_len=20, fixups=0x7fff2fb105f8) at dbus-marshal-recursive.c:2682
#8 0x00007fc71e6ee956 in replacement_block_replace (block=0x7fff2fb106f0, reader=0x7fff2fb107a0, realign_root=0x7fff2fb10850) at dbus-marshal-recursive.c:1181
#9 0x00007fc71e6eeab4 in reader_set_basic_variable_length (reader=0x7fff2fb107a0, current_type=111, value=0x7fff2fb10948, realign_root=0x7fff2fb10850)
at dbus-marshal-recursive.c:1287
#10 0x00007fc71e6eeb82 in _dbus_type_reader_set_basic (reader=0x7fff2fb107a0, value=0x7fff2fb10948, realign_root=0x7fff2fb10850) at dbus-marshal-recursive.c:1381
#11 0x00007fc71e6ebffb in set_basic_field (reader=0x7fff2fb10890, field=1, type=111, value=0x7fff2fb10948, realign_root=0x7fff2fb10850) at dbus-marshal-header.c:355
#12 0x00007fc71e6ecf16 in _dbus_header_set_field_basic (header=0x173ec08, field=1, type=111, value=0x7fff2fb10948) at dbus-marshal-header.c:1259
#13 0x00007fc71e6f1dc0 in set_or_delete_string_field (message=0x173ec00, field=1, typecode=111, value=0x173eb18 "/AudioOutputs/0") at dbus-message.c:309
#14 0x00007fc71e6f5862 in dbus_message_set_path (message=0x173ec00, object_path=0x173eb18 "/AudioOutputs/0") at dbus-message.c:2535
#15 0x00007fc725ba08b2 in huntAndEmit (connection=0x645010, msg=0x173e960, needle=0x8707a0, haystack=@0x684d70, isScriptable=false, isAdaptor=true, path=@0x7fff2fb10b10)
at ./qdbus_symbols_p.h:280
#16 0x00007fc725ba07e8 in huntAndEmit (connection=0x645010, msg=0x173e960, needle=0x8707a0, haystack=@0x912df0, isScriptable=false, isAdaptor=true, path=@0x7fff2fb10c30)
at qdbusintegrator.cpp:568
#17 0x00007fc725ba07e8 in huntAndEmit (connection=0x645010, msg=0x173e960, needle=0x8707a0, haystack=@0x6411e0, isScriptable=false, isAdaptor=true, path=@0x7fff2fb10dc0)
at qdbusintegrator.cpp:568
#18 0x00007fc725ba0e33 in QDBusConnectionPrivate::relaySignal (this=0x641130, obj=0x8707a0, mo=<value optimized out>, signalId=<value optimized out>, args=@0x7fff2fb11020)
at qdbusintegrator.cpp:1161
#19 0x00007fc725bcb683 in QDBusConnectionPrivate::qt_metacall (this=0x641130, _c=QMetaObject::InvokeMetaMethod, _id=7, _a=0x7fff2fb10f90)
at .moc/release-shared/moc_qdbusconnection_p.cpp:92
#20 0x00007fc72588c600 in QMetaObject::activate (sender=0x92d360, from_signal_index=6, to_signal_index=6, argv=0x7fff2fb10f90) at kernel/qobject.cpp:3057
#21 0x00007fc72588ca47 in QMetaObject::activate (sender=0x92d360, m=0x7fc725dd8380, local_signal_index=2, argv=0x7fff2fb10f90) at kernel/qobject.cpp:3134
#22 0x00007fc725bb89c4 in QDBusAdaptorConnector::relaySignal (this=0x173ec08, _t1=0x8707a0, _t2=0x7fc71d95ba00, _t3=9, _t4=@0x6c) at qdbusabstractadaptor.cpp:377
#23 0x00007fc725bb8db8 in QDBusAdaptorConnector::relay (this=0x92d360, senderObj=<value optimized out>, lastSignalIdx=9, argv=0x7fff2fb111f0) at qdbusabstractadaptor.cpp:306
#24 0x00007fc725bb935e in QDBusAdaptorConnector::qt_metacall (this=0x92d360, _c=QMetaObject::InvokeMetaMethod, _id=800129584, _a=0x7fff2fb111f0) at qdbusabstractadaptor.cpp:364
#25 0x00007fc72588c600 in QMetaObject::activate (sender=0x871d50, from_signal_index=9, to_signal_index=9, argv=0x7fff2fb111f0) at kernel/qobject.cpp:3057
#26 0x00007fc72588ca47 in QMetaObject::activate (sender=0x871d50, m=0x7fc71d95ba00, local_signal_index=5, argv=0x7fff2fb111f0) at kernel/qobject.cpp:3134
#27 0x00007fc71d74ddc3 in ?? () from /usr/lib/libphonon.so.4
#28 0x00007fc71d74e457 in ?? () from /usr/lib/libphonon.so.4
#29 0x00007fc72588c600 in QMetaObject::activate (sender=0x8707a0, from_signal_index=4, to_signal_index=4, argv=0x7fff2fb11390) at kernel/qobject.cpp:3057
#30 0x00007fc72588ca47 in QMetaObject::activate (sender=0x8707a0, m=0x7fc71d95a620, local_signal_index=0, argv=0x7fff2fb11390) at kernel/qobject.cpp:3134
#31 0x00007fc71d73be10 in Phonon::AudioOutput::volumeChanged () from /usr/lib/libphonon.so.4
#32 0x00007fc71d73e3d6 in Phonon::AudioOutput::qt_metacall () from /usr/lib/libphonon.so.4
#33 0x00007fc72588c600 in QMetaObject::activate (sender=0x68cf60, from_signal_index=4, to_signal_index=4, argv=0x7fff2fb11540) at kernel/qobject.cpp:3057
#34 0x00007fc72588ca47 in QMetaObject::activate (sender=0x68cf60, m=0x7fc709dcf8e0, local_signal_index=0, argv=0x7fff2fb11540) at kernel/qobject.cpp:3134
#35 0x00007fc709ba8950 in ?? () from /usr/lib64/kde4/plugins/phonon_backend/phonon_xine.so
#36 0x00007fc71d73c1f8 in Phonon::AudioOutput::setVolume () from /usr/lib/libphonon.so.4
#37 0x00007fc70b5e5720 in MiniPlayer::volumeChanged (this=0x9739e0, volume=0.80000000000000004) at miniplayer-0.9/applet/MiniPlayer.cpp:555
#38 0x00007fc70b5f4a99 in MiniPlayer::qt_metacall (this=0x9739e0, _c=QMetaObject::InvokeMetaMethod, _id=4, _a=0x7fff2fb117d0)
at miniplayer-0.9/applet/build/MiniPlayer.moc:145
#39 0x00007fc72588c600 in QMetaObject::activate (sender=0x8707a0, from_signal_index=4, to_signal_index=4, argv=0x7fff2fb117d0) at kernel/qobject.cpp:3057
#40 0x00007fc72588ca47 in QMetaObject::activate (sender=0x8707a0, m=0x7fc71d95a620, local_signal_index=0, argv=0x7fff2fb117d0) at kernel/qobject.cpp:3134
#41 0x00007fc71d73be10 in Phonon::AudioOutput::volumeChanged () from /usr/lib/libphonon.so.4
#42 0x00007fc71d73e3d6 in Phonon::AudioOutput::qt_metacall () from /usr/lib/libphonon.so.4
#43 0x00007fc72588c600 in QMetaObject::activate (sender=0x68cf60, from_signal_index=4, to_signal_index=4, argv=0x7fff2fb11980) at kernel/qobject.cpp:3057
#44 0x00007fc72588ca47 in QMetaObject::activate (sender=0x68cf60, m=0x7fc709dcf8e0, local_signal_index=0, argv=0x7fff2fb11980) at kernel/qobject.cpp:3134
#45 0x00007fc709ba8950 in ?? () from /usr/lib64/kde4/plugins/phonon_backend/phonon_xine.so
#46 0x00007fc71d73c1f8 in Phonon::AudioOutput::setVolume () from /usr/lib/libphonon.so.4
#47 0x00007fc70b5e5720 in MiniPlayer::volumeChanged (this=0x9739e0, volume=0.80000000000000004) at miniplayer-0.9/applet/MiniPlayer.cpp:555
#48 0x00007fc70b5f4a99 in MiniPlayer::qt_metacall (this=0x9739e0, _c=QMetaObject::InvokeMetaMethod, _id=4, _a=0x7fff2fb11c10)
at miniplayer-0.9/applet/build/MiniPlayer.moc:145
#49 0x00007fc72588c600 in QMetaObject::activate (sender=0x8707a0, from_signal_index=4, to_signal_index=4, argv=0x7fff2fb11c10) at kernel/qobject.cpp:3057
#50 0x00007fc72588ca47 in QMetaObject::activate (sender=0x8707a0, m=0x7fc71d95a620, local_signal_index=0, argv=0x7fff2fb11c10) at kernel/qobject.cpp:3134
#51 0x00007fc71d73be10 in Phonon::AudioOutput::volumeChanged () from /usr/lib/libphonon.so.4
#52 0x00007fc71d73e3d6 in Phonon::AudioOutput::qt_metacall () from /usr/lib/libphonon.so.4
#53 0x00007fc72588c600 in QMetaObject::activate (sender=0x68cf60, from_signal_index=4, to_signal_index=4, argv=0x7fff2fb11dc0) at kernel/qobject.cpp:3057
#54 0x00007fc72588ca47 in QMetaObject::activate (sender=0x68cf60, m=0x7fc709dcf8e0, local_signal_index=0, argv=0x7fff2fb11dc0) at kernel/qobject.cpp:3134
#55 0x00007fc709ba8950 in ?? () from /usr/lib64/kde4/plugins/phonon_backend/phonon_xine.so
#56 0x00007fc71d73c1f8 in Phonon::AudioOutput::setVolume () from /usr/lib/libphonon.so.4
#57 0x00007fc70b5e5720 in MiniPlayer::volumeChanged (this=0x9739e0, volume=0.80000000000000004) at miniplayer-0.9/applet/MiniPlayer.cpp:555

Ad infinitum...

Report

C

Emdek

11 years ago

Thanks, this backtrace tells everything that was needed. :-)
I'll release new version that should fix that problem (and add some new features) most probably on 01.06.2009.
For now you can try to comment out or replace these lines in applet/MiniPlayer.cpp:

mutedChanged(configuration.readEntry("mute", false));

volumeChanged(configuration.readEntry("volume", 0.8));

By:

m_player->audioOutput()->setMuted(configuration.readEntry("mute", false));

m_player->audioOutput()->setVolume(configuration.readEntry("volume", 0.8));


And remove these two lines from above from declarations of these methods:

void MiniPlayer::mutedChanged(bool muted)

void MiniPlayer::volumeChanged(qreal volume)

Report

Kirilo

11 years ago

Could you please post your backtrace, because I have the same problem but don't get a backtrace (even with kdebase4-workspace-devel, to respond to the last post but one).

Report

Kirilo

11 years ago

Hello again ;-)

Thanks for adding the ability to hide the video window.
Unfortunately, this somehow introduced a new bug: With everey reboot the mini player gets smaller, after 3 - 4 times the buttons are just little dots, and one cannot resize it unless the video window is enabled again.
I have this problem on two different PCs (KDE 4.2.2 and KDE 4.3svn, OpenSuse 11.1).

Another problem (already in 0.4): Doing something in the settings or trying to change loudness reproduceably crashes plasma (I have to start it manually and don't get a backtrace, sorry).

Report

C

Emdek

11 years ago

Problems with sizing are known bugs, I'll try to fix them as soon as possible.

I don't know what to do with these crashes because these doesn't happen on my computer... So backtrace would be very useful.
Could you try to reproduce this using plasmoidviewer miniplayer command, maybe then window with crash information will show?

Report

Kirilo

11 years ago

Oh, I didn't know of this function, quite handy.

Anyway, I can reproduce the crash there, too, unfortunately the only output I get is unspecific "segmentation fault"...

Report

C

Emdek

11 years ago

I'm not sure how it looks in other distributions, but maybe you need to install package that contains this tool, named drkonqi (in my case it is in kdebase-runtime package) or maybe enable kind of option somewhere. I don't know, on my distribution it works out of the box.

Report

8 years ago

2.5 (01.07.2012):
- allow to toggle playback state using single mouse click on video widget;
- move tracks instead of copying them when dragging inside playlist view;
- try to avoid showing tooltip when there is full screen window;
- allow to copy tracks between tabs by dragging them;
- switch tabs when dragging URLs over their handles;
- allow to copy selected tracks to another playlist;
- added support for media buttons;
- allow to select multiple tracks;
- some other fixes.

2.4 (25.05.2012):
- updated DBus interface to MPRIS2 specification;
- added Current Track Once playback mode;
- fixed Play Previous and Play Next actions;
- enable Apply button when configuration values are changed;
- added Play Previous and Play Next to set of available controls and to toolbars of playlist dialog and full screen view;
- some other fixes and lots of internal changes.

12345678910
16
product-maker DJKnusper Feb 16 2015 9 excellent
product-maker sealbhach Jul 01 2012 9 excellent
product-maker Contrast Jul 01 2012 9 excellent
product-maker gericom May 26 2012 9 excellent
product-maker lazx888 May 25 2012 9 excellent
product-maker CobraDOT May 11 2012 9 excellent
product-maker step-2 Mar 30 2012 9 excellent
product-maker stathisq Feb 26 2012 9 excellent
product-maker sylgil88 Dec 31 2011 9 excellent
product-maker mreloads Dec 07 2011 9 excellent
product-maker pejakm Dec 06 2011 9 excellent
product-maker tobaj Dec 05 2011 9 excellent
product-maker buschmann23 Dec 02 2011 9 excellent
product-maker deabru Dec 01 2011 9 excellent
product-maker symbianflo Dec 01 2011 9 excellent
product-maker vitoubien Dec 01 2011 9 excellent
product-maker Base: 4 x 5.0 Ratings
Be the first to comment
Landis
Nov 05 2015
nekoprog
Oct 01 2012
gericom
May 26 2012
HATRED
May 26 2012
tobaj
Dec 05 2011
wackenroader
Aug 20 2009
madsheytan
Aug 01 2009
doktor5000
Jul 24 2009
Kirilo
Jun 12 2009
CobraDOT
May 30 2009
patkoscsaba
May 12 2009
universe777
Apr 18 2009
Frank
Dec 23 2008
File (click to download) Version Description Downloads Date Filesize DL OCS-Install MD5SUM
*Needs pling-store or ocs-url to install things
Pling
0 Affiliates
Details
license
version
2.5
updated Jul 01 2012
added Dec 21 2008
downloads 24h
0
mediaviews 24h 0
pageviews 24h 1