Since I recently came across some music in the Ogg Opus format, I looked into playing it with LMS.
The main issue is that the library LMS uses to read audio metadata (AudioScan) doesn't support Opus. I did, however, find a forked version which does.
As this one hasn't been updated in a while, I decided to merge the Opus support into the current AudioScan.
Attached you will find a patch for AudioScan enabling Opus support (credit goes to the original author linked above), plus some support files for LMS.
Instructions
Install the Opus libraries and sox with the Opus codec enabled. Most likely, your distribution will have it packaged already (e.g. libopus, libopus-dev, opus-tools, sox in Debian)
Note: if your sox version doesn't support Opus (check with sox -h), you can compile it yourself or use opusdec instead. However, you will lose the ability to seek in a track when using opusdec.
Download the attached zip and build the module:
If the build was successful, you'll find the perl modules in
e.g. for perl 5.24 on Linux 64bit:
copy the content of the build/arch directory to your LMS installation's CPAN/arch folder
e.g. if your LMS is in opt/logitechmediaserver-7.8-0-noCPAN, the full final path will be
In your LMS installation, edit Slim/Formats.pm and add the format:
and finally copy OggOpus.pm to your LMS installation's Slim/Formats folder
This takes care of the metadata part. To actually be able to play it, add this line to your custom-types.conf:
and modify your custom-convert.conf.
For sox with opus:
For opusdec:
The main issue is that the library LMS uses to read audio metadata (AudioScan) doesn't support Opus. I did, however, find a forked version which does.
As this one hasn't been updated in a while, I decided to merge the Opus support into the current AudioScan.
Attached you will find a patch for AudioScan enabling Opus support (credit goes to the original author linked above), plus some support files for LMS.
Instructions
Install the Opus libraries and sox with the Opus codec enabled. Most likely, your distribution will have it packaged already (e.g. libopus, libopus-dev, opus-tools, sox in Debian)
Note: if your sox version doesn't support Opus (check with sox -h), you can compile it yourself or use opusdec instead. However, you will lose the ability to seek in a track when using opusdec.
Download the attached zip and build the module:
Code:
mkdir build; cd build
wget https://raw.githubusercontent.com/Logitech/slimserver-vendor/public/7.9/CPAN/buildme.sh
wget http://search.cpan.org/CPAN/authors/id/A/AG/AGRUNDMA/Audio-Scan-0.96.tar.gz
wget https://github.com/Logitech/slimserver-vendor/raw/public/7.9/CPAN/Sub-Uplevel-0.22.tar.gz
wget https://github.com/Logitech/slimserver-vendor/raw/public/7.9/CPAN/Test-Warn-0.23.tar.gz
wget https://github.com/Logitech/slimserver-vendor/raw/public/7.9/CPAN/Tree-DAG_Node-1.06.tar.gz
unzip lmsopus-alpha.zip
tar xzf Audio-Scan-0.96.tar.gz
cd Audio-Scan-0.96
patch -p1 < ../Audio-Scan-0.96.opus.patch
cd ..
mv Audio-Scan-0.96.tar.gz Audio-Scan-0.96.orig.tar.gz
tar czf Audio-Scan-0.96.tar.gz Audio-Scan-0.96
chmod +x buildme.sh
./buildme.sh Audio::Scan
Code:
./build/arch/<perl version>/<architecture>
Code:
build/arch/5.24/x86_64-linux-thread-multi
e.g. if your LMS is in opt/logitechmediaserver-7.8-0-noCPAN, the full final path will be
Code:
/opt/logitechmediaserver-7.8-0-noCPAN/CPAN/arch/5.24/x86_64-linux-thread-multi/auto/Audio
...
Code:
'ogf' => 'Slim::Formats::OggFLAC',
'ops' => 'Slim::Formats::OggOpus', # add this line
This takes care of the metadata part. To actually be able to play it, add this line to your custom-types.conf:
Code:
ops opus audio/ogg audio
For sox with opus:
Code:
ops mp3 * *
# IFB:{BITRATE=--abr %B}D:{RESAMPLE=--resample %D}
[sox] -q -t opus $FILE$ -t wav - | [lame] --silent -q $QUALITY$ $RESAMPLE$ $BITRATE$ - -
ops ops * *
-
ops aif * *
[sox] -q -t opus $FILE$ -t raw -r 44100 -c 2 -2 -s $-x$ -
ops pcm * *
[sox] -q -t opus $FILE$ -t raw -r 44100 -c 2 -2 -s -
ops flc * *
# IFRD:{RESAMPLE=-r %d}T:{START=trim %s}
[sox] -t opus $FILE$ -t flac -C 0 $RESAMPLE$ - $START$
For opusdec:
Code:
ops mp3 * *
[opusdec] --quiet $FILE$ --force-wav - | [lame] --silent -q $QUALITY$ $RESAMPLE$ $BITRATE$ - -
ops ops * *
-
ops pcm * *
[opusdec] --quiet --rate 44100 $FILE$ -
ops flc * *
[opusdec] --quiet --force-wav $FILE$ - | [sox] -q -t wav - -t flac -C 0 $RESAMPLE$ -