Post Reply 
 
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Some startup help needed
28-02-2016, 12:14
Post: #1
Some startup help needed
Hi all
I would like to stream and on-the-fly transcode (flac) music from my Synology DS1815+ to several devices. Broadly they fall into two categories:
Onkyo AVReceiver, Chromecast Audio: max 96kHz PCM
Sonoro Elements W: max 48kHz PCM
The devices have fixed IP addresses on my LAN.

I would like to configure MinimStreamer as follows:

Stream to Onkyo and Chromecast:
  • up to 96kHz PCM, Mp3 and m4a: do not modify anything
  • 176.4 and 352.8kHz flac: resample to 88.2kHz (WAV)
  • 192 and 384kHz flac: resample to 96kHz (WAV)
  • DSF: convert to 88.2kHz WAV

Stream to Sonoro:
  • up to 48kHz PCM, mp3 and m4a: do not modify anything
  • 88.2, 176.4 and 352.8kHz flac: resample to 44.1kHz WAV
  • 96, 192 and 384kHz flac: resample to 48kHz (WAV)
  • DSF: convert to 44.1kHz WAV

I would like to use libsox for all resampling.

How would I best configure MinimStreamer to achieve this?
Thanks a million for any hints.
Find all posts by this user
Quote this message in a reply
28-02-2016, 16:12
Post: #2
RE: Some startup help needed
It isn't possible for a UPnP server to change the transcoding format based on which renderer will play the stream. This is because the available stream transcoding formats are advertised by the server to the UPnP control point and the control point selects a suitable stream format based on the capabilities that the UPnP renderer has advertised to the control point.

For example, if your music library contains a FLAC file and you have set the stream.transcode property to flac:-/wav/L16, MinimServer would advertise the original untranscoded FLAC stream and transcoded WAV and L16 streams. If the control point is playing this file to a renderer that supports WAV and L16 but not FLAC, it would select WAV (not L16, because you put 'wav' before 'L16' in stream.transcode). If the control point is playing the same file to a different renderer that supports FLAC and WAV but not L16, it would select FLAC (not WAV, because you put '-' before 'wav' in stream.transcode).

This approach works well for streams of different MIME types (such as FLAC, WAV and L16) but it doesn't work well for streams with the same MIME type and different resolutions (such as WAV 96 kHz and WAV 44.1 kHz) because the UPnP protocol isn't able to distinguish between a renderer that supports WAV 96 kHz and a renderer that supports WAV 44.1 kHz. Also, MinimServer isn't able currently to vary the transcoding output depending on the resolution of the input file (only its type).
Find all posts by this user
Quote this message in a reply
28-02-2016, 17:55
Post: #3
RE: Some startup help needed
Say I only care about chromecast audio which goes to 96kHz and does flac, mp3 and m4a natively.
What would get sent to the device if the source file is 176.4, 192, 352.8 or 384kHz flac?
What would get sent to the device if the source file is DSF?
Would it be possible to specify libsox as resampler in this case?
Find all posts by this user
Quote this message in a reply
28-02-2016, 18:37
Post: #4
RE: Some startup help needed
(28-02-2016 17:55)jacobacci Wrote:  Say I only care about chromecast audio which goes to 96kHz and does flac, mp3 and m4a natively.
What would get sent to the device if the source file is 176.4, 192, 352.8 or 384kHz flac?
What would get sent to the device if the source file is DSF?
Would it be possible to specify libsox as resampler in this case?

Does Chromecast support WAV as well? I would be surprised if not.
Find all posts by this user
Quote this message in a reply
29-02-2016, 09:02
Post: #5
RE: Some startup help needed
Assuming that Chromecast supports 24-bit WAV, you can use the following settings:

(in stream.transcode) flac:wav24;96, dsf:wav24;96
(in stream.options) convOut=-af aresample=resampler=soxr
Find all posts by this user
Quote this message in a reply
06-03-2016, 11:41 (This post was last modified: 06-03-2016 11:58 by jacobacci.)
Post: #6
RE: Some startup help needed
(29-02-2016 09:02)simoncn Wrote:  Assuming that Chromecast supports 24-bit WAV, you can use the following settings:

(in stream.transcode) flac:wav24;96, dsf:wav24;96
(in stream.options) convOut=-af aresample=resampler=soxr

Sorry for the delay in responding. Tried the stream.transcode parameters and they do give me 24/96 or 24/88.2 output, depending on the number I use in the command line. Thanks a million for getting me across this barrier. I have not found any other Synology NAS compatible streamer that gives me control over the output samplerate.
However, the stream.options line gives me the attached error message.


Attached File(s) Thumbnail(s)
   
Find all posts by this user
Quote this message in a reply
06-03-2016, 16:35
Post: #7
RE: Some startup help needed
You are getting this error message because the ffmpeg provided by Synology doesn't support libsoxr. You need to download an ffmpeg static build for Linux with libsoxr support and specify the full path to this build in the stream.converter property. For a suitable build, see this page.
Find all posts by this user
Quote this message in a reply
06-03-2016, 16:53
Post: #8
RE: Some startup help needed
(06-03-2016 16:35)simoncn Wrote:  You are getting this error message because the ffmpeg provided by Synology doesn't support libsoxr. You need to download an ffmpeg static build for Linux with libsoxr support and specify the full path to this build in the stream.converter property. For a suitable build, see this page.

Thanks, Simon
Unfortunately I have absolutely no clue how to install ffmpeg on my DS1815+. Searched the web, but couldn't find anything useful.
Can you point me in the right direction, please?
Find all posts by this user
Quote this message in a reply
06-03-2016, 18:21
Post: #9
RE: Some startup help needed
(06-03-2016 16:53)jacobacci Wrote:  Thanks, Simon
Unfortunately I have absolutely no clue how to install ffmpeg on my DS1815+. Searched the web, but couldn't find anything useful.
Can you point me in the right direction, please?

You need to do the following:

1) Download the static ffmpeg file to your PC or Mac. If you are running DSM 5.2, you need the 32-bit version of ffmpeg.

2) Use Synology File Station to create a new shared folder named ffmpeg-static

3) Use Synology File Station to upload the static ffmpeg file from your PC or Mac to the ffmpeg-static shared folder

4) In Synology File Station, rIght-click the uploaded ffmpeg file and select Properties

5) The Location field under Properties should say something like /volume1/ffmpeg-static/ffmpeg

6) To make MinimStreamer use the new static ffmpeg instead of the current default version, copy the Location value from step 5 into the stream.converter property and click OK

7) You should now be able to set the stream.options property to the correct value to make ffmpeg use libsoxr
Find all posts by this user
Quote this message in a reply
06-03-2016, 20:32 (This post was last modified: 06-03-2016 20:33 by jacobacci.)
Post: #10
RE: Some startup help needed
That worked, thanks a lot Simon

Took me a moment to figure out that I had to extract the files before uploading them to the Synology directory. But now I am not getting any more error messages and SOX seems to be doing it's magic, even on the DSF files.

Nirvana would be if the files didn't all get converted to 96kHz but would follow the scheme I outlined in the first post

- Determine the maximum samplerate the renderer can handle (=sr_max)
- do not modify MP3, m4a and PCM up to sr_max. If needed convert FLAC to WAV
- resample multiples of 44.1 (88.2, 176.4, 352.8kHz etc) to highest multiple of 44.1 WAV the renderer can handle
- resample multiples of 48 (96, 192, 384kHz etc) to highest multiple of 48 WAV the renderer can handle
- DSF: convert to highest multiple of 44.1 WAV the renderer can handle

Maybe something for a future release of minimserver / streamer.
If it would do something along these lines, it would be an audiophile's dream quickly.
Find all posts by this user
Quote this message in a reply
Post Reply 


Forum Jump:


User(s) browsing this thread: 1 Guest(s)