upnpplayer for sailfish os

Rating: 
4.75
Your rating: None Average: 4.8 (4 votes)

Note: stable release are on official jolla store, here are pre-release/and stable that may require some tweak to be delivered on jolla store.

This application implement a basic dlna/upnp remote controler. With this application you can stream your favorite webradio url to your dlna/upnp media renderer (stereo)

Implemented feature:

  • device detection through ssdp,
  • save device info (limit needs of device detection, when restarting application)
  • url create, modify, delete, select, ...
  • play, pause, stop, mute, unmute, volume control
  • browse minidlna and mediatomb server, possibilty to queue media to play

At home I've a sony cmt-sbt 300w so this should work at least with this device. please indicate if it works with your device and do not hesitate to give feed back (good or bad, I'll try to take them into account).

I'm still working on this application, so update will probably comes soon.

last change :

Release 0.2r2 (beta): tweaked UI and correct some bugs

  • Use tap for browsing down to directory (instead of swipe right)
  • Add more infos about devices
  • Add more infos on directories when availlable.
  • Swipe-right allow to change media server (swipe left too but only on root directory)
  • display volume info when pressing volume up or volume down button
  • add filter "*" in browse request to workaround minidlna 1.1.2 crash when filter is empty, (was working well on raspbian pi with minidlna 1.0.24)
  • remove check of childcount for browsing (plex and freebox do not indicate them in storage folders)
  • make package compatible with harbour rules

Release 0.2r1 (beta): Refactored UI and lot's of internals.

here is a list of change (not exhaustive)

  • - refactored almost everythings.
  • - made UI more in sailfish phylosophy (most of feature are on main screen).
  • - use swipe when possible (browse, next/prev, select renderer/server)
  • - refactorer internal cpp too to be more qt like.
  • - Provide metadata to renderer. (aka more devices should be supported)
  • - get volume of device when creating associated renderer
  • - use volume button to set volume of device.
  • - volume increment/decrement is 5% except when going to high volume for increment only. - reduce volume increment to 2% when volume is higher than 50
  • - reduce volume increment to 1% when volume is higher than 75
  • - use cache for playable item when browsing (so not parse same media twice)
  • - limit some object copy between server and renderer
  • - shuffle/loop mode.
  1. NOTE: mute/unmute not present on this version (not sure to add it back as volume buttons are doing same job)
  2. NOTE2: Adding stream like web radio is not present on this release for the moment but I'm going to add it on a next version when this part will be refactored too.

0.2r0 - change release number to 0.2 to follow harbour compliance rule about version, some minor ui tweak too.

0.1r12 - put dbus call to c++ part in order to be harbour compliant

0.1r11 - some UI tweaks, some work on music transitions to simplify code remove cpu keepalive to keep only blanking pause (just prevent screen from sleeping seems enough to keep jolla alive and timer working)

0.1r10 - check played media on device before submiting next, prevent jolla from sleeping when playing. (known problem: can stop playing after some times, around 10 songs for me), next release will be candidate to official jolla store.

0.1r9 - better timer managment, they are still active when device is going to sleep - next and previous still need some tweak - actual timer solution may be battery consumer as tick is still counted when device is sleeping, next work will be to adapt to device state...

0.1r8 (beta, need to fix few thing on next/previous button) - add some nice icon on media server side - add a context menu on playable media (icon that is not a folder icon) - (beta) possibility to select more than one media to play, using setNextAVTransportURI and timers (may be inacurrate if media duration information is not accurate or if renderer make some transition effect that change media duration). - indicate remaining media duratio when playing - indicate position of media in queue when selected.

0.1r7 - made some UI change due to asynchronous device detection (introduced on 0.1r6) - able to browse mediatomb dlna server correctly - add possibility to go back to last selected mediaserver directory - add media duration information (when known).

0.1r6 correct freeze when application is minimized during device detection, fixed some crash case.

0.1r5 correct a bug seen in 0.1r4 after delivery (server list not correctly cleaned)

0.1r4 (major, beta) Can now browse upnp media server, (note this is still under finalisation), this is an early release as I'm still working on stabilzing this code, but seems to be stable enough to work with minidlna

0.1r3 (minor) Change setting location to be compliant with jolla harbour, setting are moved from .config/frederic.frances/harbour-upnpplayer.conf to .local/share/harbour-upnpplayer/harbour-upnpplayer.conf, so if you move configuration file to correct location this should work as before.

Screenshots: 
Application versions: 
AttachmentSizeDate
File harbour-upnpplayer-0.1-1.armv7hl.rpm44.45 KB01/02/2014 - 02:28
File harbour-upnpplayer-0.1-2.armv7hl.rpm45.13 KB04/02/2014 - 02:41
File harbour-upnpplayer-0.1-3.armv7hl.rpm45.8 KB07/02/2014 - 02:46
File harbour-upnpplayer-0.1-4.armv7hl.rpm60.47 KB10/02/2014 - 04:55
File harbour-upnpplayer-0.1-5.armv7hl.rpm60.64 KB10/02/2014 - 05:20
File harbour-upnpplayer-0.1-6.armv7hl.rpm57.78 KB12/02/2014 - 16:59
File harbour-upnpplayer-0.1-7.armv7hl.rpm60.19 KB13/02/2014 - 21:35
File harbour-upnpplayer-0.1-8.armv7hl.rpm70.3 KB04/03/2014 - 04:28
File harbour-upnpplayer-0.1-9.armv7hl.rpm72.24 KB06/03/2014 - 03:08
File harbour-upnpplayer-0.1-10.armv7hl.rpm74.12 KB16/03/2014 - 18:30
File harbour-upnpplayer-0.1-11.armv7hl.rpm73.15 KB20/03/2014 - 10:20
File harbour-upnpplayer-0.1-12.armv7hl.rpm75.39 KB25/03/2014 - 03:09
File harbour-upnpplayer-0.2-0.armv7hl.rpm76.03 KB26/03/2014 - 02:45
File harbour-upnpplayer-0.2-1.armv7hl.rpm92.7 KB16/12/2014 - 02:50
File harbour-upnpplayer-0.2-2.armv7hl.rpm176.95 KB25/02/2015 - 03:23
Changelog: 

0.1r2 : Can play url on xbmc (when set as a media player and pors is allowed on xbmc host) Simplify some UI elements (move detect device on select device page when some devices are known) remove some useless button Select automatically an url when modified or created (so it can be tested directly)

0.1r4 (major, beta) Can now browse upnp media server, (note this is still under finalisation), this is an early release as I'm still working on stabilzing this code, but seems to be stable enough to work with minidlna

0.1r5 correct a bug seen in 0.1r4 after delivery (server list not correctly cleaned)

0.1r6 correct freeze when application is minimized during device detection, fixed some crash case.

0.1r7 - made some UI change due to asynchronous device detection (introduced on 0.1r6)
          - able to browse mediatomb dlna server correctly
          - add possibility to go back to last selected mediaserver directory
          - add media duration information (when known).

0.1r8 (beta, need to fix few thing on next/previous button)
                 - add some nice icon on media server side
                 - add a context menu on playable media (icon that is not a folder icon)
                 - (beta)  possibility to select more than one media to play, using setNextAVTransportURI and timers (may be inacurrate if media duration information is not accurate or if renderer make some transition effect that change media duration).
                  - indicate remaining media duratio when playing
                  - indicate position of media in queue when selected.

0.1r9 - better timer managment, they are still active when device is going to sleep
                 - next and previous still need some tweak
                 - actual timer solution may be battery consumer as tick is still counted when device is      sleeping, next work will be to adapt to device state...

0.1r10 - check played media on device before submiting next, prevent jolla from sleeping when playing. (known problem: can stop playing after some times, around 10 songs for me), next release will be candidate to official jolla store.

0.1r11 - some UI tweaks, some work on music transitions to simplify code remove cpu keepalive to keep only blanking pause (just prevent screen from sleeping seems enough to keep jolla alive and timer working)

0.1r12 - put dbus call to c++ part in order to be harbour compliant

0.2r0 - change release number to 0.2 to follow harbour compliance rule about version, some minor ui tweak too.

Release 0.2r2 (beta): tweaked UI and correct some bugs

  • Replace swipe-right for browsing down to directory
  • Swipe-right allow to change media server (swipe left too but only on root directory)
  • display volume info when pressing volume up or volume down button
  • add filter "*" in browse request to workaround minidlna 1.1.2 crash when filter is empty, (was working well on raspbian pi with minidlna 1.0.24)
  • remove check of childcount for browsing (plex and freebox do not indicate them in storage folders)
  • make package compatible with harbour rules

 

Comments

sdiconov's picture

I would like to add a Russian translation but cannot find a git repo. 

wdehoog's picture

Hi,

I am running it on a sailfish port (bacon) and using gmrender-resurrect play musing on my phone itself.

Unfortunately the ' previous'  and ' next' actions do not work.

Errors appear in the log like:

#Next:115: error=Error downloading http://192.168.4.26:49494/upnp/cont...rver Error"

Failed Next"

GiveUp Next"

 

The log also shows 'no NexURI on device, setting a new one"' when it automatically goes to the next song.

romu70's picture

Not so bad. I've installed the last version, and weirdly the GUI is far from being the one shown on the screenshots. And to be honest, I find it worse that the screenshot promises. In particular, I don't see where to control the volume.

One idea: using swipe to browse is not a good idea imho. This breaks the consistency with the system if you consider the official Jolla Files application uses tap to navigate.

Thanks for this app.

jabbounet's picture

Sounds good for click instead instead of swipe for browsing directory.

I'll package it in next release.

jabbounet's picture

hi, thanks for this feedback.

First, you can control volume using same buttons as standard media player (on the right of the phone), This is done only when application have focus (I mean in fullscreen), otherwise volume control is given back to phone (or other app that may require volume button).

yes UI have changed, I'll try to take your remark into account and see if it's better to tap for browse.

 

romu70's picture

An email address to exchange? I've installed the Jolla Harbour version and the GUI is much better, but no way to play music stored on the Freebox Player?

 

Mine is rtisserand chez gmail.

jabbounet's picture

0.1r4 (major, beta) Can now browse upnp media server, (note this is still under finalisation), this is an early release as I'm still working on stabilzing this code, but seems to be stable enough to work with minidlna

argonius_ch's picture

Hi

I have tried the new release it works with my raspbmc, thanks a lot! I am looking forward to your dlna server implementation. I will be happy to test it towards raspbmc and twonky server :)

Christian

jabbounet's picture

hi,

now 0.1r4 can browse some dlna server, this 0.1r4 is an early beta release that require some stabilization and ui improvements but should be stable enough to browse.

regards,

frederic

jabbounet's picture

many thanks,

I'v started to see how mediaserver communication should be done, the complexity is to have a correct tree view algorithm associated to server interogation. an other point is to try keep a simple user interface.

I think I'm going to find a solution, it is just a matter of implementation timee I hope  less time than the time spent to implement player part as some part can be reused.

 

 

Ray_Ven's picture

Hi, thanks once again for this tool - I really like the gui.

Most of the latest receivers habe built in webradio clients, that's why was wondering. Thought I have to put in the IP of a dlna server. Well, I'll just wait for another release. Nice work though! Keep it up!

 

Ray

jabbounet's picture

hi,

now 0.1r4 can browse some dlna server, this 0.1r4 is an early beta release that require some stabilization and ui improvements but should be stable enough to browse.

regards,

frederic

 

jabbounet's picture

Hi,

I'm starting to work on dlna server side, don't have a due date yet.

thanks for your support.

Regards,

frédéric

 

argonius_ch's picture

Upnp would be great on Sailfish. The app doesn't discover my raspbmc. However discoveryupnp shows the device.What can I do?

jabbounet's picture

Hi

upnpplayer application detects media renderer only (for the moment), media server are not supported by this release.

This mean only devices that implements AVTransport (aka play, pause, stop) and RenderingControl (aka volume) are recognized.

discoveryupnp show all upnp devices without restrictions (that's why it could help)

To be visible by upnpplayer application your raspbmc should gives answer like this (important lines are in bold):

HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
EXT:
LOCATION: url indicating an xml file (for instance http://123.456.7.89:55000/dmr/ddd.xml)
SERVER: ....
ST: urn:schemas-upnp-org:service:AVTransport:1
USN: uuid:something::urn:schemas-upnp-org:service:AVTransport:1

note that answers with ST: urn:schemas-upnp-org:service:RenderingControl:1 are also accepted.

 

Regards,

frederic

argonius_ch's picture

Well raspbmc is server and renderer. In discoveryupnp 6 response pages are reported, one containing ST: urn:schemas-upnp-org:service:AVTransport:1 another one ST: urn:schemas-upnp-org:service:RenderingControl:1

Are the discoveryupnp results stored somewhere so I could share it with you?

jabbounet's picture

Take a screenshot with screenshot application.

The xml file in LOCATION line is interesting too to check if there is a parsing problem (other possible cause of non detection).

 

 

argonius_ch's picture

I have uploaded a screenshot and the XML returend when browsing to the Location URL:

https://cloud.naenni-dobmann.ch/public.php?service=files&t=dbcb217c7f55f43ad9cc2592fc218bdc

jabbounet's picture

hi

I see two things

In screenshot location line does not indicate an xml file to download, it it used by detector to get the services description.

for instance on my own network I have something like this

LOCATION: http://192.168.1.84:8080/description.xml

How did you get this xml file, did you run wget directly on location url?

Second in xml description the controlurl does look like what I was expecting

for instance in my device I have something that look like this

                <controlURL>/AVTransport/ctrl</controlURL> in your it point to another xml file....

I don't know if this can be tweaked on xbmc, I'll try to install an xbmc to be able to make some test,

do you know a good tutorial for that?

 

 

 

argonius_ch's picture

Hi

I opened the Location URL in Firefox and it returned the XML.

I have no idea about tweaking XBMC - My Raspbmc is just a default setup with Upnp enabled. And so far I did not encounter any problems using the device a renderer.

 

jabbounet's picture

Hi,

after few code change, I'm able to play some url on a linux xbmc, I think this should work with your raspbmc (if firewall is open on port 1466 default port for xbmc), as you were able to get the xml this should be ok.

I make some code cleaning and deliver a new version, after that I start working on detecting mediaserver, but this should be a longer work.

 

update:

0.1 r 2 is now able to play on xbmc

 

 

Ray_Ven's picture

hmm, I don't get the url thingy.... The Dlna-Clients i usually use are searching for available dlna devices and browse files and folders of such a device. I couldn't get the url part working (using minidlna), and cannot see any files :-(

jabbounet's picture

Hi, many thanks for your feedbacks

here are some clarification about this application

First, my goal for this application was to be able to play some webradio I like (for instance "http://stream.srg-ssr.ch/couleur3/mp3_128.m3u") on wy stereo, sony was providing such an application for android (using vtuner services) but was not working very well, when I got my jolla phone I wanted to have such application and decided to develop one from almost zero. that's why it use url and not look for media server yet.

Second, yes exploring media server could be great, in fact I was already thinking about adding such feature in a future release.

Third, I'm fearly new on smartphone application development, in fact I've started to work on my jolla and it's sdk when I received it at the end of 2013, at this time I didn't knew QT, QML, protocols involved in dlna, ..., but as I'm used to develop c++ network application on linux environment, I thought I was probaly able te create this app. This application is the result after 1 month of of work during my spare time, and my january hollidays.

My plan yet for this application in this order is:

  1. clean up and refactor some part of code I don't like yet (it's working, but there is a smarter way to do this)
  2. Add new feature like exploring media server (I just need to gather some documentation on how they communicate to start this)

As this is done during my spare time I can not indicate due date for these evolutions.

I hope you understand, best regards

 
 

Ray_Ven's picture

DLNA is great to have on sailfish!

It detects my vsx-2021 (Pioneer) fine! The GUI is very intuitive and simple! (had some problems before, but it was an error of my receiver)

Would be nice to be able to stream music from my jolla to the receiver with this app!

 

Thank you very much for this app!

jabbounet's picture

Good news, I was thinking about an alternative detection method by listening to alive message from devices as an alternative to broadcast detection.

jabbounet's picture

Hi,

there is an application on jolla store called discoveryupnp that use same algorithm to detect device (except that this player take only mediarenderer)

Is discoveryupnp application able to see your device?