Roon server does not play MP3 and AAC files with Audiolinux

Roon Core Machine

Audiolinux NUC5i5RYH 8GB RAM

Networking Gear & Setup Details

Ethernet (through TP Link TL WR802 WiFi adapterto Fritz!Box 7590 modem)

Connected Audio Devices

Roon server (headless) on NUC5i5RYH running Audiolinux headless.
Roon player on AntipodesEX
Chord 2Qute DAC via usb to AntipodesEX

Number of Tracks in Library

29400 tracks

Description of Issue

I cannot play MP3 or AAC files stored on my SSDs, nor can I stream internet radio station streaming in MP3 or AAC format (I can stream internet radiostations streaming in FLAC format, e.g. NAIM JAZZ radio).

This happens only if I use Roon server under Audiolinux. With th same hardware, but with Roon server running under Windos 10, everything is fine.

Might be a problem with access of Roon server to ffmpeg file under Audiolinux, although command “pacman -Q ffmpeg” returns “ffmpeg 2:5.1.2-1” indicating that ffmpeg is installed under Audiolinux

Below is part of log file of Roon server:

11/20 10:15:42 Trace: Attempting to play channel URL: icy://icecast-servers.vrtcdn.be/klara.aac
11/20 10:15:42 Info: [AntipodeseX-Squeezelite] [zoneplayer] Playing: channel://icy%3a%2f%2ficecast-servers.vrtcdn.be%2fklara.aac
11/20 10:15:42 Trace: [squeezebox/client] [192.168.178.52:56146] SENT strm command=q autostart=0 formatbyte=p pcmsamplesize=1 pcmsamplerate=3 pcmchannels=2 pcmendian=1 threshold=0 spdif_enable=0 trans_period=0 trans_type=0, flags=0, output_threshold=0, replay_gain=0, http_header=
11/20 10:15:42 Trace: [squeezebox/client] [192.168.178.52:56146] GOT STAT event_code=STMf crlf_count=0 mas_initialized=ďż˝ mas_mode=0 buffer_size=2097150 fullness=0 bytes_received=0 wireless_signal=65535 jiffies=171443886 output_buffer_size=28224000 output_buffer_fullness=0 elapsed_seconds=0 voltage=0 elapsed_milliseconds=0 server_timestamp=0 error_code=0
11/20 10:15:43 Debug: [easyhttp] [57] POST to https://audioanalysis.roonlabs.net/1/analysis?format=json& returned after 468 ms, status code: 200
11/20 10:15:43 Trace: [analysis] Track data sent to AAS for [Unknown Artist - test-tones - 60 - 60hz(1)]
11/20 10:15:43 Trace: Got ICY Stream Title [Klara]
11/20 10:15:43 Warn: [streammediafile] error reading stream: Unable to read data from the transport connection: Software caused connection abort.
11/20 10:15:43 Warn: [zoneplayer] Remote Load Failure While Opening Sound: icy://icecast-servers.vrtcdn.be/klara.aac: Icy: Failed to read first sample
11/20 10:15:43 Info: [AntipodeseX-Squeezelite] [zoneplayer]     Open Result (Playing):Result[Status=MediaTooSlow]
11/20 10:15:43 Trace: [squeezebox/client] [192.168.178.52:56146] SENT strm command=q autostart=0 formatbyte=p pcmsamplesize=1 pcmsamplerate=3 pcmchannels=2 pcmendian=1 threshold=0 spdif_enable=0 trans_period=0 trans_type=0, flags=0, output_threshold=0, replay_gain=0, http_header=
11/20 10:15:43 Warn: [zoneplayer] couldn't play URL channel://icy%3a%2f%2ficecast-servers.vrtcdn.be%2fklara.aac: other error
11/20 10:15:43 Warn: [zone AntipodeseX-Squeezelite] Track Stopped Due to Error

Are the codecs installed in the way as described in the documentation?

From your description it seems that you installed ffmpeg with the distro’s package manager, which will put it somewhere in the standard file system. However, Roon expects it in its own directory structure, see the documentation.

Copy it there as described, or you may also be able to link from the Roon directory to the package manager’s version.

I know that Roon says:

To rectify this situation, you will need to make the codecs accessible to Roon OS. This is done by placing the ffmpeg file in the Codecs folder of Roon OS’s shared data directory.

However, with Audiolinux there is no Codecs folder or a Roon OS’s shared data directory. I contacted the developer of Audiolinux about this and he also does not known where the ffmpeg file needs to be placed.

ignore this

SSH into you Roon Server and copy/paste

sudo apt-get install ffmpeg

Then reboot

ignore this

Did you install cifs-utils on installing Roon Server

sudo apt install cifs-utils

This should allow SMB access to the files of Roon.

Apologies, I got confused. Indeed: “On Linux, Roon expects to find the codecs installed as part of the Linux based operating system.”

However:

I am not familiar with Audio Linux, but it doesn’t seem to be using Debian’s APT package manager. The Audiolinux website is talking about Arch Linux packages and consequently using pacman commands for installation - like @John_Meerman used as well.

@John_Meerman Where is the ffmpg package placing the files?

pacman -Ql ffmpeg

And are they there for real?

pacman -Qk ffmpeg

Yeah missed that one about it being Audio Linux based on Arch. My Arch is a little rusty

System update
pacman -Syu

Ffmpeg
pacman -S ffmpeg

Ffmpeg version
ffmpeg --version

Glancing at the roonserver-installer-linuxx64.sh installer script, its comments proclaim that a check for ffmpeg is performed on installation, but I can’t see it being done. Maybe I am missing something, but:

    #
    # Check for proper architecture
    #
    case "$MACHINE_ARCH" in
        armv7*)
            if [ x$ARCH = xarmv7hf ]; then OK=1; fi
            ;;
        aarch64*)
            if [ x$ARCH = xarmv8 ]; then OK=1; fi
            if [ x$ARCH = xarmv7hf ]; then OK=1; fi
            ;;
        x86_64*)
            if [ x$ARCH = xx64 ]; then OK=1; fi 
            ;;
        i686*)
            if [ x$ARCH = xx86 ]; then OK=1; fi 
            ;;
    esac

    #
    # Check for root privileges
    #
    if [ x$UID != x0 ]; then
        echo ""
        echo -e "${COL_RED}${COL_BLOLD}Error:${COL_RESET} This installer must be run with root privileges. Exiting."
        echo ""
        exit 2
    fi

    #
    # Check for ffmpeg/avconv
    #

    if [ x$OK != x1 ]; then
        echo ""
        echo -e "${COL_RED}${COL_BLOLD}Error:${COL_RESET} This package is intended for $ARCH platforms. It is not compatible with your machine. Exiting."
        echo ""
        exit 3
    fi

The code following the ffmpeg check comment is actually the output for the previous architecture check

ffmpeg is in /usr/bin and in /usr/share
However, when i issue command “/usr/bin/ffmpeg -h” I get no help but an error message:
error while loading shared libraries: libsrt.so.1.4 : cannot open shared object file : no such file or directory
However, when I issue e.g. command: “/usr/bin/fdisk -h” I do get help information.

Seems that you might have a dependency or library versioning issue. Does ffmpeg work when you manually encode a file?

libsrt is this package in Arch:
https://archlinux.org/packages/extra/x86_64/srt/

And I am confused by Audiolinux. On one hand they use pacman, but on the homepage they also say that they have a new package manager, “yay”. And here on another forum (recommended by Audiolinux) they install ffmpeg with

For ffmpeg, go to console and check if it is already installed:

yay -Q ffmpeg

If not, you can install it with

yay -Sy ffmpeg --noconfirm 

Maybe libsrt is simply not installed? ffmpeg depends on it. I understand that pacman should resolve dependencies automatically, but who knows with this Audiolinux contraption :wink:

excecuting “yay -Q ffmpeg” returns "ffmpeg 2:5.0.1-1,therefore it seems to be installed

However, excecuting “yay -Q libsrt” returns “package ‘libsrt’ was not found”
Also “yay -Q libsrt.so.1.4” yields “package was not found”. (I don’t know exactly the spelling of the name of libsrt package, I’am illiterate in Linux)

How do I manually check if a file is encoded with ffmpeg? I have never used Linux before.

“yay -Q srt” returns " srt 1.5.1-3" so it seems installed

This is the correct check. OK, so it is installed (as it should be because ffmpeg depends on it and the automatic dependency resolution of the package manage is supposed to autoinstall it when you install ffmpeg).

However, your srt version is version 1.5.1 and your ffmpeg is looking for version 1.4, hence the “error while loading shared libraries: libsrt.so.1.4 : cannot open shared object file : no such file or directory”

This looks very much like an error in packaging to me. However, one would think that other people would have noticed.

Please list the dependencies of ffmpeg, using this command:

$ pactree ffmpeg

Note: You may have to install packman-contrib first. (See pacman - ArchWiki)

To test if ffmpeg works at all (I expect that it will not), you can take a flac file and try to convert it to an mp3:

ffmpeg -i your_file.flac -ab 320k your_file.mp3

This should create a 320 kbps mp3 file in the same directory as the flac file is. The flac file will not be changed.

I figured :wink: Audiolinux is not the ideal first distribution to use, but then I used Slackware as my first distribution in 1993 or so, and I survived. The path may be steeper but you will learn with each step.

(I won’t be asking what your expectation is that Audiolinux is improving in an ethernet-connected machine.)

Nope, ffmpeg does not transcode a flac file,I get the same error as before:
“error while loading shared libraries: libsrt.so.1.4 : cannot open shared object file : no such file or directory”
So,it seems that an older version of srt needs to be installed?

(I have a 2nd NUC5i5 with Roon server running under Windos 10, if you’re in the neighbourhood I can play you some music to you via my AntipodesEX/2Qute from Roon on Audiolinux vs Roon on Windows 10, and even from Roon serving internally on the AntippodesEX, and you can decide if you hear any differences, and if so, which setup you prefer. I won’t disclose my preference yet because I don’t want to introduce any bias in your test)

It looks to me like an error in the dependencies of the package. The person creating the ffmpeg package should know which srt version it needs, and it should be pulled in automatically when installing ffmpeg.

It is possible that there is an srt-1.4* in the package repositories that you can install explicitly, but it depends on the Audiolinux maintainers.

However, in any case this looks very much like an Audiolinux error to me, if ffmpeg fails with the transcode command, not a Roon error.

Not going there :slight_smile: It’s irrelevant to the issue at hand, anyway. Except that a more mainstream distribution would be easier to understand with this error.

pactree ffmpeg returns a long list (tree) of dependencies, including srt (with depency on openssl). I can find no separate depency for libsrt

Does it show an srt version number in the tree? Again, not being much familiar with Arch Linux and its commands