Optimized custom-convert.conf transcode rules for mobile Squeezebox clients.
This plugin provides optimized transcode rules for mobile streaming apps that connect to Lyrion Music Server (LMS). Once installed, LMS automatically uses these rules for supported mobile apps.
- LyrPlay (iOS) - Optimized for iPhone/iPad streaming
- Others?
- In LMS web interface, go to Settings → Plugins → Third Party
- Add a 3rd party plugin at this link: https://raw.githubusercontent.com/mtxmiller/MobileTranscode/main/repo.xml
- Find Mobile Transcode Rules and click Install
- Restart LMS
- Done! Your mobile app automatically uses the optimized rules
How it works: LMS automatically searches all plugin directories for custom-convert.conf files. When you install this plugin, LMS finds and uses the rules immediately after restart.
Want to add your mobile app's rules to this plugin? Here's how:
In your SlimProto HELO capabilities:
Model=YourAppName,ModelName=Your App Display Name,...
Fork this repository and add your app's rules to custom-convert.conf:
# YourAppName (Platform) - Brief description of your optimization choices
flc flc YourAppName *
# IFT:{START=--skip=%t}U:{END=--until=%v}D:{RESAMPLE=-r %d}
[flac] -dcs $START$ $END$ --force-raw-format --sign=signed --endian=little -- $FILE$ | [sox] -q -t raw --encoding signed-integer -b $SAMPLESIZE$ -r $SAMPLERATE$ -c $CHANNELS$ -L - -t flac -r 44100 -C 0 -b 16 -
flc ops YourAppName *
# IFT:{START=--skip=%t}U:{END=--until=%v}D:{RESAMPLE=-r %d}
[flac] -dcs $START$ $END$ --force-raw-format --sign=signed --endian=little -- $FILE$ | [opusenc] --raw --raw-bits=$SAMPLESIZE$ --raw-rate=$SAMPLERATE$ --raw-chan=$CHANNELS$ --bitrate=256 - -
flc ogg YourAppName *
# IFT:{START=--skip=%t}U:{END=--until=%v}D:{RESAMPLE=-r %d}
[flac] -dcs $START$ $END$ --force-raw-format --sign=signed --endian=little -- $FILE$ | [sox] -q -t raw --encoding signed-integer -b $SAMPLESIZE$ -r $SAMPLERATE$ -c $CHANNELS$ -L - -t ogg -C 10 -
See custom-convert.conf in this plugin for a complete template with detailed comments.
Include:
- App name and platform
- Explanation of your quality/bandwidth choices
- Platform-specific notes if any
Rule Matching:
LMS matches transcode rules based on the Model field in your SlimProto HELO packet.
Model=LyrPlay → Matches: flc flc LyrPlay *
Model=YourApp → Matches: flc flc YourApp *
Rule Format:
[source] [dest] [model] [player]
# [flags]:{[capabilities]}
[transcode pipeline]
LyrPlay downloads the songs coming up so it can keep playing through a dead
spot. A download (/music/<id>/download.<type>) reaches LMS with no player,
so only rules for any player (* *) can convert it. A * * rule to ops or
ogg would also change what other players stream (squeezelite lists those
before flc, and LMS takes the first match when "prioritize native format"
is off). So the plugin converts downloads to two private types that no player
advertises (custom-types.conf):
lyo- Opus 256k, same as the Opus stream rulelyv- Ogg Vorbis quality 10, same as the Ogg stream rule
Only a request for download.lyo / download.lyv uses them; streaming to any
player is unchanged.
- I (Input) - Reads the source from stdin: streaming services (Qobuz, Tidal…) and remote URLs. Without it, LMS skips the rule for those sources and plays them in their native format
- F (File) - Reads a local file from your library
- T (Time) - Supports seek with
{START=--skip=%t} - U (Until) - Supports duration with
{END=--until=%v} - D (Resample) - Supports resampling with
{RESAMPLE=-r %d}
Choose flags based on your app's requirements - different platforms have different needs.
FLAC Output:
-r 44100or-r 48000- Sample rate (Hz)-b 16or-b 24- Bit depth (bits)-C 0to-C 8- Compression level (0=fast, 8=best)
Opus Output:
--bitrate=128to--bitrate=320- Quality (kbps)
OGG Vorbis Output:
-C 0to-C 10- Quality level
MP3 Output:
-b 128to-b 320- Bitrate (kbps), 320 recommended for quality
If you want to see or edit the rules directly:
- Go to Settings → Information in LMS
- Find your Plugins folder path
- Navigate to
Plugins/MobileTranscode/custom-convert.conf - Edit as needed
- Restart LMS
Note: Changes will be overwritten when you update the plugin. For permanent custom rules, fork the plugin or maintain your own custom-convert.conf in your LMS prefs directory.
Mobile streaming has unique requirements:
- Network Variability - Cellular vs WiFi bandwidth
- Battery Constraints - Efficient codecs save power
- Platform Differences - iOS, Android behave differently
- User Behavior - Mobile users seek/skip frequently
Custom transcode rules let each app optimize for its platform and use case.
We welcome contributions from all mobile Squeezebox developers!
To contribute:
- Fork: https://github.com/mtxmiller/MobileTranscode
- Add your app's rules to
custom-convert.conf - Update this README with your app name
- Submit a pull request
- Plugin Issues: https://github.com/mtxmiller/MobileTranscode/issues
- LyrPlay App: https://github.com/mtxmiller/LyrPlay
- LMS Forums: https://forums.lyrion.org
MIT License - Free to use and modify.
- Eric Miller (mtxmiller) - Plugin creator, LyrPlay developer
- Lyrion Community - For maintaining LMS
- Mobile Squeezebox Developers - For keeping the ecosystem alive
Version: 1.5.0 Last Updated: October 2026