» pDLNA » News
A (real) long time ago, I started to work on a big rework of the whole database schema to improve performance on the one hand and to improve various other things (like maintainability, flexibility, support for DLNA devices) on the other hand.
Yesterday, I finally managed to fix the last bug which affected among other things the LowResourceMode. This allows me to release this new version 0.70.0 of pDLNA.
With this version comes, as already mentioned, a lot of improvements (for instance PostgreSQL support as a database backend).As always, please see the » changelog « section for all changes and to download the new tarball and/or the latest version of the Installation, Configuration and Debugging Guide.
I also decided to move from the closed VMware images to the Open Virtualization Format (OVF) for the » virtual machines images «.
Today pDLNA v0.64.0 has been released, which includes support for a MySQL backend.
The » changelog «
section gives a detailed overview regarding all the changes and where to download the release and the Installation, Configuration and Debugging Guide.
There are also updated » VMware images «
The current development state of pDLNA reveals a lot of changes, which affect the performance of pDLNA.
At first, I would like to specify my testcase: The ContentLibrary, pDLNA needs to handle, contains 3659 files in 805 directories with a size of 1.55 TB. One of those files is an image and 14 of them are audio files.
At first there is the change of gathering the relevant media information. Version 0.63.0 uses the Perl Module Movie::Info, which uses Mplayer. Since Movie::Info is not part of most repositories, I decided to move to use FFmpeg natively. So Mplayer and Movie::Info is not a dependency to pDLNA any more. As it turns out, FFmpeg is faster than Movie::Info and Mplayer. This performance difference can be seen in the following graph. The first two bars show the difference between using Mplayer and FFmpeg.
The next step to improve the performance of pDLNA was to disable AutoCommit in the database for inserting all the MediaItems initially. So when inserting all the MediaItems initially to the database, a commit will be done after each directory. And when inserting the details from FFmpeg to the Database, a commit will be done after every 50 MediaItems. This performance improvement can be seen in the graph above, where the bars two and three show the mentioned test results.
And the last bar in the graph above shows the test results, when using MySQL as a database backend. Gathering the details with FFmpeg has not been improved since opening every single file depends on the disc IO, which is the bottleneck in this functionality. But if you compare pDLNA in v0.63.0 and pDLNA v0.64.0b with a MySQL database, the initial time to store all available MediaItems in the database decreases from around 280 seconds to about 10 seconds.
And finally, the graph below, shows the amount of time, which is needed to get a full DirectoryListing of all MediaItems with VLC media player. The graph shows the performance enhancement, when a MySQL database (instead of a SQLite3 database) is used.
pDLNA v0.64.0 will be released soon. So stay tuned.
Today pDLNA in version 0.63.0 has been released. It includes a lot of improvements, some bug fixes and some less dependencies. The » changelog «
section gives a detailed overview regarding the changes and where to download the release and the Installation, Configuration and Debugging Guide.
There are also new/updated » VMware images «
available, especially the Debian VMware image has been reinstalled with Debian 7.
Since the release of pDLNA v0.60.0 had a problem with different versions of the SQLite Perl modules, the new version 0.60.1 has been released, which solves this issue.
For more details have a look into the » changelog «
section or even download on of the prepared » VMware images «
to test the new version
(which will be available in a few hours)
With the 100th commit in the git repository, version 0.60.0 has been released, which includes database support for the media library. pDLNA received an enormous speedboost because of this feature.
For more details have a look into the » changelog «
section or even download on of the prepared » VMware images «
to test the new version.
Today I commited the first beta version of pDLNA, which is able to store the ContentLibrary in a database (currently limited to sqlite) instead of the huge and slow in memory object. For detailed information see the « commit »
itself on GitHub.
It will still take some changes, till the full functionality of version 0.53.0 is re-implemented. So stay tuned.
I have chosen to publish my preinstalled VMware images, which are used to test pDLNA on various operating systems. So now you are able to download these from » here «
. There will also be more preinstalled VMware images in the future.
So have fun.
Good news, everyone!
A new version of pDLNA is available for download. This version will automatically recrawl the configured media directories. This release is available on » GitHub «
and the latest version of the Installation, Configuration and Debugging Guide
is available on » GitHub «
Today, i released version 0.50.0 of pDLNA. This version includes a lot of rework of old code and also a lot of improvements like general transcoding support using FFmpeg. This release is available on » GitHub «
Since January, I was also working a lot of on the Installation, Configuration and Debugging Guide. The latest version should describe mostly everything and is available on » GitHub « too.
I started a installation and configuration guide for pDLNA, which is available on » GitHub «
. Like already mentioned, I just started the document, so it is not complete yet, and I'm working on the missing stuff. If you have any suggestions, please contact me.
A few minutes ago, i released v0.43.0 of pDLNA. Now it supports streaming of MKV files. Adding this support took several hours, because the Samsung TV is expecting a different mime type for those kind of files. The Samsung TV does not send a HTTP User Agent for Streaming Requests, so I needed to take advantage of the DeviceList Perl Object which gets filled in the SSDP part of pDLNA. Unfortunately those two different parts of pDLNA are running in different threads, so I had to rebuild the DeviceList and Device objects to :shared. Additionally two new configuration parameters for excluding specified files or directories from being added to the content library were added. And finally configuration usability enhancement has been done for binary value. Now you are able to define words like 'on' or 'true' instead of just setting the parameters to 1.
Have fun and I wish you a HAPPY NEW YEAR (again and for the last time this year)!
The latest version of pDLNA supports streaming of video files. At least it was tested with a Samsung LED TV (UE40B8090) and IT WORKS!!!!! Normally we should call such a new release pDLNA 1.0, but there is still a lot of stuff to do.
But version 0.42.0 offers some other great stuff too: jjYBdx4IL added support for external streaming sources, like VDR-Streamer.
Happy New Year!
This release includes some improvements, changes and bugfixes to various things (see the changelog
). The big issue in this release was to do the whole SSDP stuff in OO style. This change might
solve the problem regarding that pDLNA starts to hang on Windows. This issue was found and reported by Gregory.
Finally, the new release can be downloaded as a tarball from » Github « and pDLNA wishes a merry christmas and a happy new year (we'll see if there is going to be another release before new year's eve).
the last two releases (including one patch release) included some changes for better compatibility to DLNA capable devices:
- added image and video thumbnail preview support for Windows Media Player 12
- added support for streaming images to Windows Media Player 12
- added BaseView DirectoryListing support for VLC and Windows Media Player 12
Additionally a Perl module to check for a new version of pDLNA has been added and also an installation script.
Finally, for every new release there will be tarball downloadbale from » Github «.
After merging v0.35 from mrproper (thanks again) including some new features and improvements, v0.36 includes some general code improvements. There is still a lot of old code in the project, which can be deleted if it has been reworked or adapted to be functional. So these general improvements should improve the discovery of pDLNA Media Server (via SSDP und UPnP) and implements the BaseView (where the ObjectID = 0). The Samsung specific stuff, which was implemented before is 'disabled' or 'unreachable' at this time. Also some smaller stuff has been done, like a new LogCategory or a new value for defining wether a directory should be crawled recursively or not. And finally some bugs has been fixed, like for instance the deformed preview images.
For a better overview, which devices are supported by the current version, the following » compatibility overview «
After over half a year I began to work in pDLNA again. I am still fighting with the streaming of audio and video files at the moment, which is not solvable yet. So streaming of those kinds of files is still possible for files which are smaller than 50 megabytes. This should make streaming of audio files possible at all, but streaming video files is still a pain in the ***, maybe someone is able to tell me how to give the TV the correct answer to interpret the Content-Range repsonses.
Additionaly, I did some cleanup and improvements of the code and also added the AllowedClients configuration item. Because of this you need to define the allowed clients' IP addresses, which should be able to communicate with pDLNA. I added this feature because of data privacy - so no unknown device (except for IP spoofing) is able to list your media or look at your photos.
The new year is going to be the year of pDLNA ... after about two months break, i started to work on the perl media server again and i did the streaming stuff for image and audio files. Currently the media library just supports mp3 and jpeg files, but other filetypes are going to be supported soon. One of the problems i had was the SIGPIPE kill signal from a Perl bug (see the link for the description in the sourcecode). Currently streaming of video files is also working for five megabytes (the currently hardcoded buffer size), but the whole stuff with delivering partial content via HTTP isn't working at all.
I worked on some other stuff as well ... so I began to add a LogCategory to the configuration file and the implementation ... it's not finished yet, but it should be finished in one of the next versions.
A few seconds ago i commited version 0.26 to the git repository. After spending a lot of time getting the media server to stream an image in its real resolution ... which wasn't working at all ... i decided to add some other stuff:
- automatic listen interface and ip address detection
- previewing thumbnails for videos using mplayer
- config file parsing improvements
I'm still interesed in the fact, why the tv is just accepting the thumbnail of an image and not the image itself ...
v0.25 includes some configfile parsing and validation, a real operating system and version detection, UUID generation for running multiple instances of pDLNA on one network, fatal logging and some small other fixes and improvements.
This version includes some clean up in the SSDP module and adds a device database, which gets updated (at this time) via NOTIFY messages. This database will be necessary to work with different DLNA clients (e.g. Xbox 360). SSDP disovery is still working for a Samsung TV.
Preview for images is working, there's nothing more to say ...
Version 0.22 from today supports directory listing on the tv for sorting type folder (F) for AUDIO, IMAGE and VIDEO files. Streaming is still not working ... i tried to stream image files to the tv, but at one point (not always the same) the tv sends a TCP paket with a RST bit and the pDLNA media server crashes ...
After i failed to stream some videos (I think there weren't any huge problems - but we'll see), i decided to start by streaming image and audio files. After renewing the database stuff, the tv wasn't available for me any more ... so I decided to develop some other stuff ... which might/will be necessary in the future. So this whole release hasn't been tested yet ... I hope it works and I'll get the time to test and improve it ...
Media streaming is still not supported by this version. Currently I'm fighting with answering the question for GetIndexfromRID. Well I don't think it's 42.
Today I was looking for the difference between JPEG_SM and JPEG_TN and their specification like a max resolution and so on. By useing Google for this, I found this paper
. At the first look it might answer some questions and may give some hints ... but my question isn't answered properly ...
Some minutes ago i commited the first version of the content database including a fix of a typo and one improvement because of the default friendly name.
Streaming is still not available ... i'm having some problems with HTTP::Server::Simple::CGI which might cause me to change the HTTP server module ... We will see ...
Some seconds ago i commited v0.13 into the git repository. In this version, the service got it's own configuration file, where I had some problems with Getopt::Long::Descriptive. So here is a small hint: Don't install this package via the Debian repository, use CPAN instead.
Now I will work on showing content on my tv. I may take a while.
Today I commited version 0.12 into the git repository hosted on github. In this version the discovery of the media server is working with my Samsung TV. The code isn't really beautiful and some clean up work and the whole stuff for browsing and streaming media must be done.
I also decided to license the source code under GPLv3
After starting a project to implement a DLNA media server for my new Samsung UE40B8090 LED tv in Perl it's project website goes online.
Currently there isn't any source code to download, because I'm still fighting with the discovery part of the UPnP protocol based on SSDP. Wish me luck.