Hello, guys, its me again! And again with a super awesome announcement!
Extremely short version:
Behold, MiniDLNA-transcode, a development branch which adds complete transcoding support to MiniDLNA, is here.
I guess most of you already come across DLNA. It's a standard used for sharing videos, music and pictures files among DLNA compliant devices. It is used in most (if not all) modern TVs, blu-ray players and other devices such as smartphones, PS3 or XBox.
One of the vital parts of the DLNA setup is the Digital Media Server, which stores the multimedia files and makes them available to other devices on the network. However, the DLNA standard is a shitload of crap. It defines several hundreds of so-called DLNA profiles, with each profile describing a combination of container, audio/video codec and other things such as bitrate. To make things even worse, the video containers required by DLNA are rather obscure – only ASF, TS, PS and MP4 are supported. I'm pretty sure most of the video files on the internet are using avi/matroska, not one of these. Fortunately, It's a bit better with the image and audio files. It doesn't support OGG or FLAC, but most common formats such as MP3 for audio and JPEG for pictures are supported.
To overcome the shortcomings of the standard, it is possible that the server converts the files to a format the DLNA client understands. This process is often called transcoding.
There are many DLNA servers, with many of them being open source. Some of them even has some support for the transcoding. I tried most of them – Fuppes, Plex Media Server, uShare, Rygel, MediaTomb, PS3 Media Server, Serviio and miniDLNA (I hope I didn't forgot any) – just to find out that none of them suits my needs. None of them was able to correctly transcode all my files, especially image transcoding is usually unsupported. From all these servers, I liked miniDLNA the most, because it's really easy to setup, its small (both in terms of the size of executable – its about 300KiB – and memory usage) and it can be started during boot without any user intervention. However, it doesn't have transcoding support.
So I decided to introduce the transcoding support to miniDLNA. There already exists a patch to add transcoding support, but this patch breaks playback of some files for me, and most importantly – it doesn't support image transcoding. So I decided to add support for transconding on my own (in the end using some of the code from the previously mentioned patch).
The result of my work is miniDLNA-transcode, with sources available through bitbucket's mercurial. MiniDLNA-transcode allows the user to specify which containers/codecs/formats has to be transcoded and to specify a script to do the transcoding (there are several example scripts bundled with the sources). Thanks to this approach it is very flexible. It is possible to present photos taken in RAW format on the TV directly. It is possible to hardcode subtitles to videos if the client doesn't support subtitles. You name it. It is the only server that allows playing all of my files on my Samsung TV.
I'm going to track the upstream changes and merge them from time to time, so don't worry about miniDLNA-transcode being outdated. In fact, I did the first merge of upstream changes earlier today.
I hope you will like it.
As usually, you can follow the latest development news onmy Google+ page.