MinimServer Forum
MinimStreamer not transcoding - Printable Version

+- MinimServer Forum (https://forum.minimserver.com)
+-- Forum: MinimServer (/forumdisplay.php?fid=1)
+--- Forum: MinimStreamer (/forumdisplay.php?fid=11)
+--- Thread: MinimStreamer not transcoding (/showthread.php?tid=5127)



MinimStreamer not transcoding - Johnny D - 05-12-2018 02:25

I am trying to transcode DSD128 to 24/352 or just downsample to DSD64 because my Lumin A1 only supports DSD64 or up to 24/352.

I added the MinimStreamer package to MinimServer on my Synology NAS so it can transcode DSD128 to 24/352 but is not working. Music is not playing on the Lumin. Track information is displayed on the Lumin then nothing is played and skips to next track.

I put the following statements in the MinimWatch Systems properties tab:

Stream.transcode: dsf(128):wav24;384, flac:wav
Stream.options convOut=-af volume=+8dB

Installed Packages on my Synology NAS from MinimWatch 0.8.5.2 on my Mac
* minimjre-9.0.1.1
minimserver-0.8-update-126
* minimserver-0.8.5.3
minimstreamer-0.7.10

Also adding log debug info below as it looks like all is ok but I could be be missing something.

Any help/advice would be greatly appreciated.

Johnny D

Log file debug.

20:05:21.010 main: MinimServer: module version for MinimStreamer is 0.7.110
20:05:21.011 main: getPropertyObject: compName=stream propName=resourceFactory propValue=com.minimstreamer.Streamer$ResourceFactory@11274d2
20:05:21.011 main: getPropertyObject: compName=stream propName=urlFactory propValue=com.minimstreamer.Streamer$URLFactory@136e4cd
20:05:21.011 main: setProperty: compName=stream propName=serverVersion propValue=0.8.307
20:05:21.011 main: starting component stream in context context0
20:05:21.011 main: >>> EVENT >>> componentStarting: stream
20:05:21.011 main: ServerControl: componentStarting event for stream
20:05:21.012 main: Monitor: componentStarting event for stream in context context0
20:05:21.012 main: Streamer: start
20:05:21.021 main: getUpdateNames: getting update list
20:05:21.022 main: getUpdatePackages: updateFile=minimjre-9.jmupd
20:05:21.218 main: getUpdatePackages: updateFile=minimstreamer-0.5.jmupd
20:05:21.302 main: ServerControl.isPackageRequired: packageName=minimstreamer-0.7.10
20:05:21.302 main: isPackageRequired: minimstreamer-0.7.10 is already installed
20:05:21.303 main: getUpdatePackages: updateFile=minimserver-0.8.5.jmupd
20:05:21.389 main: ServerControl.isPackageRequired: packageName=minimserver-0.8-update-126
20:05:21.389 main: isPackageRequired: minimserver-0.8-update-126 is already installed
20:05:21.389 main: getUpdateNames: returned updateNames=[]
20:05:21.412 main: checkConverter: running command
20:05:21.412 main: Streamer.runConverter: commandArray is [/bin/ffmpeg, -ar, 48000, -f, s16le, -i, -, -f, s16le, -y, -]
20:05:21.432 main: Streamer.runConverter: process error stream is java.lang.ProcessImpl$ProcessPipeInputStream@cf294c
20:05:21.434 main: Streamer.runConverter: process output stream is java.lang.ProcessImpl$ProcessPipeInputStream@17aaca2
20:05:21.434 main: Streamer.runConverter: process input stream is java.lang.ProcessImpl$ProcessPipeOutputStream@4b1e1d
20:05:21.435 main: Streamer.runConverter: started process Process[pid=9204, exitValue="not exited"]
20:05:21.435 main: WaitForFFmpeg: waiting
20:05:21.435 Thread-733: Streamer: waiting for end of process Process[pid=9204, exitValue="not exited"]
20:05:21.759 Thread-732: Streamer: process output reader thread reached end of stream
20:05:21.760 Thread-731: Streamer: process output reader thread reached end of stream
20:05:21.763 Thread-733: Streamer: ended process Process[pid=9204, exitValue=0]
20:05:21.764 main: WaitForFFmpeg: ffmpegEnded=true
20:05:21.764 main: Streamer.runConverter: process status is 0
20:05:21.764 main: checkFFmpegRequestSampleFmt: running command
20:05:21.764 main: Streamer.runConverter: commandArray is [ffmpeg, -ar, 48000, -f, s16le, -request_sample_fmt, flt, -i, /dev/null, -f, s16le, -y, /dev/null]
20:05:21.767 main: Streamer.runConverter: process error stream is java.lang.ProcessImpl$ProcessPipeInputStream@566842
20:05:21.773 main: Streamer.runConverter: process output stream is java.lang.ProcessImpl$ProcessPipeInputStream@11ea80d
20:05:21.774 main: Streamer.runConverter: process input stream is java.lang.ProcessImpl$ProcessPipeOutputStream@1191ef0
20:05:21.775 main: Streamer.runConverter: started process Process[pid=9209, exitValue="not exited"]
20:05:21.775 main: WaitForFFmpeg: waiting
20:05:21.775 Thread-736: Streamer: waiting for end of process Process[pid=9209, exitValue="not exited"]
20:05:21.822 Thread-735: Streamer: process output reader thread reached end of stream
20:05:21.824 Thread-734: Streamer: process output reader thread reached end of stream
20:05:21.824 Thread-736: Streamer: ended process Process[pid=9209, exitValue=0]
20:05:21.824 main: WaitForFFmpeg: ffmpegEnded=true
20:05:21.825 main: Streamer.runConverter: process status is 0
20:05:21.825 main: checkDSFPCMSupport: running command
20:05:21.825 main: Streamer.runConverter: commandArray is [ffmpeg, -ar, 48000, -f, s16le, -c, dsd_lsbf_planar, -i, -, -f, s16le, -y, -]
20:05:21.827 main: Streamer.runConverter: process error stream is java.lang.ProcessImpl$ProcessPipeInputStream@df2821
20:05:21.827 main: Streamer.runConverter: process output stream is java.lang.ProcessImpl$ProcessPipeInputStream@dbad37
20:05:21.828 main: Streamer.runConverter: process input stream is java.lang.ProcessImpl$ProcessPipeOutputStream@14acdc2
20:05:21.835 main: Streamer.runConverter: started process Process[pid=9213, exitValue="not exited"]
20:05:21.836 main: WaitForFFmpeg: waiting
20:05:21.836 Thread-739: Streamer: waiting for end of process Process[pid=9213, exitValue="not exited"]
20:05:21.887 Thread-738: Streamer: process output reader thread reached end of stream
20:05:21.888 Thread-737: Streamer: process output reader thread reached end of stream
20:05:21.889 Thread-739: Streamer: ended process Process[pid=9213, exitValue=0]
20:05:21.890 main: WaitForFFmpeg: ffmpegEnded=true
20:05:21.890 main: Streamer.runConverter: process status is 0
20:05:21.890 main: checkConvOutSupport: converter=ffmpeg convOut=-af volume=+8dB
20:05:21.891 main: Streamer.runConverter: commandArray is [ffmpeg, -ar, 48000, -f, s16le, -i, -, -af, volume=+8dB, -f, s16le, -y, -]
20:05:21.905 main: Streamer.runConverter: process error stream is java.lang.ProcessImpl$ProcessPipeInputStream@a262d6
20:05:21.905 main: Streamer.runConverter: process output stream is java.lang.ProcessImpl$ProcessPipeInputStream@11bd803
20:05:21.906 main: Streamer.runConverter: process input stream is java.lang.ProcessImpl$ProcessPipeOutputStream@f07f02
20:05:21.906 main: Streamer.runConverter: started process Process[pid=9218, exitValue="not exited"]
20:05:21.906 main: WaitForFFmpeg: waiting
20:05:21.907 Thread-742: Streamer: waiting for end of process Process[pid=9218, exitValue="not exited"]
20:05:21.950 Thread-741: Streamer: process output reader thread reached end of stream
20:05:21.951 Thread-740: Streamer: process output reader thread reached end of stream
20:05:21.952 Thread-742: Streamer: ended process Process[pid=9218, exitValue=0]
20:05:21.953 main: WaitForFFmpeg: ffmpegEnded=true
20:05:21.953 main: Streamer.runConverter: process status is 0
20:05:21.953 main: Streamer: FFmpeg request_sample_fmt option value is flt
20:05:21.964 main: Streamer: FFmpeg DSF to PCM support is available
20:05:21.964 main: Streamer: transcoding converter is 'ffmpeg'
20:05:21.964 main: Streamer: transcode setting is 'dsf(128):wav24;384, flac:wav'
20:05:21.964 main: setPropertyObject: compName=stream propName=transcodePairs propValue={flac=wav}
20:05:21.965 main: started component stream in context context0
20:05:21.965 main: >>> EVENT >>> componentRunning: stream
20:05:21.965 main: ServerControl: componentRunning event for stream
20:05:21.965 main: Monitor: componentRunning event for stream in context context0
20:05:21.966 main: setting initial values for MinimServer
Language setting is 'enu'


RE: MinimStreamer not transcoding - simoncn - 05-12-2018 10:34

You said the LUMIN can handle up to 24/352 but you have set MinimStreamer to transcode to 24/384.


RE: MinimStreamer not transcoding - Johnny D - 05-12-2018 13:47

(05-12-2018 10:34)simoncn Wrote:  You said the LUMIN can handle up to 24/352 but you have set MinimStreamer to transcode to 24/384.

Thanks Simon, my mistake it can transcode to 384. I think I might have figured out my issue. MinimStreamer is transcoding but I think the issues is with my NAS.

It does not have the necessary compute and memory to transcode it fast enough.

My NAS is a Synology DS411slim. It's 6-7 years old and only has one processor/core at 1.6Ghz and 256MB of memory.

It does eventually start to play on my Lumin but takes about 10-15 seconds to begin playing and then the music gets garbled.

Is there a way I can prove this theory?

Thanks

Johnny D


RE: MinimStreamer not transcoding - simoncn - 05-12-2018 15:40

Your theory is correct. The processor in the DS411 doesn't support floating-point operations (required for DSD transcoding) and this will cause the CPU to jump to 100% when you try to stream the file (you can use Resource Monitor to confirm this).

You would get slightly lower CPU consumption and probably slightly better results by using dsf(128):wav. This transcodes to 352.8 kHz 32 bits, which is is a closer multiple of the original DSD sample rate. The LUMIN A1 should be able to handle this. However, I don't think this would work with the DS411.


RE: MinimStreamer not transcoding - Johnny D - 05-12-2018 22:20

(05-12-2018 15:40)simoncn Wrote:  Your theory is correct. The processor in the DS411 doesn't support floating-point operations (required for DSD transcoding) and this will cause the CPU to jump to 100% when you try to stream the file (you can use Resource Monitor to confirm this).

You would get slightly lower CPU consumption and probably slightly better results by using dsf(128):wav. This transcodes to 352.8 kHz 32 bits, which is is a closer multiple of the original DSD sample rate. The LUMIN A1 should be able to handle this. However, I don't think this would work with the DS411.

Thanks Simon, I was able to verify. The NAS CPU just gets pegged. ffmpeg is the culprit. Surprised that memory only reached 60%. Time for a new NAS. I needed a reason and now have one. Torn between the DS418 (Realtek RTD1296 quad core 1.4Ghz w/2GB mem) or DS418play (Intel Celeron J3355 Dual Core 2.0 burst up to 2.5 GHz w/2GB mem).
Leaning towards the DS418. Your thoughts?

Thanks

Johnny D.


RE: MinimStreamer not transcoding - simoncn - 05-12-2018 22:57

Either the DS418 or DS418play would be more than adequate for any MinimStreamer/ffmpeg transcoding that you might need to do. The prices seem similar. From a quick glance at the specs, the main advantage of the DS418play is that you could expand the memory to 6GB in the future.


RE: MinimStreamer not transcoding - Johnny D - 06-12-2018 02:01

(05-12-2018 22:57)simoncn Wrote:  Either the DS418 or DS418play would be more than adequate for any MinimStreamer/ffmpeg transcoding that you might need to do. The prices seem similar. From a quick glance at the specs, the main advantage of the DS418 is that you could expand the memory to 6GB in the future.

The play also does btrfs. I don't really need that. It comes down to Intel vs ARM dual core vs quad core. DS418 is ARM and quad core. Sounds like a winner to me. A bit cheaper too.

Thanks for all your help and support.

Johhny D


RE: MinimStreamer not transcoding - simoncn - 06-12-2018 09:22

Apologies, I had that the wrong way round. It is the DS418play that is expandable to 6GB, not the DS418. I have corrected my earlier post.