epoupon / lms Goto Github PK
View Code? Open in Web Editor NEWLightweight Music Server. Access your self-hosted music using a web interface.
Home Page: http://lms-demo.poupon.dev
License: GNU General Public License v3.0
Lightweight Music Server. Access your self-hosted music using a web interface.
Home Page: http://lms-demo.poupon.dev
License: GNU General Public License v3.0
See #39 (comment)
there are probably way more examples but this is the first one i ran into. i'm using the 3.9 development branch:
4105b3e (HEAD -> develop) Upgrade requirements to build on ubuntu
Charli XCX - 1999 single and Prince - 1999 were squashed together, presumably because in their metadata, album is "1999". unfortunately, i didn't get nearly as far on this one. couldnt even find where to start. personally, i have multiple versions of many albums and an ideal solution would not only take artist into account, but also the storage location to prevent multiple releases from being squashed together.
Does a Docker image exist for this? Looking to try this out on a server that's running Ubuntu, but it doesn't have the available dependencies as Debian would:
lms : Depends: libavformat58 (>= 7:4.1) but it is not installable
Depends: libavutil56 (>= 7:4.0) but it is not installable
Depends: libboost-system1.67.0 but it is not installable
Depends: libmagick++-6.q16-8 but it is not installable
Depends: libmagickcore-6.q16-6 (>= 8:6.9.10.2) but it is not installable
Depends: libmagickwand-6.q16-6 (>= 8:6.9.10.2) but it is not installable
Depends: libwt4 but it is not going to be installed
I have a mixed library containing some flac rips of my CDs and some mp3 rips. All the albums are properly tagged including album art, but the flac files don't render the album art in LMS.
This seems to only happen to my flac rips, all mp3 files are fine.
In particular:
Hello,
I'm trying to build from source using git tag v.3.1.0 with gcc 9.2.0 on Linux.
My system is Arch Linux with wt 4.1.1 (installed through package manager).
The first error I got was:
../../src/metadata/MetaData.hpp:27:1: note: ‘std::vector’ is defined in header ‘<vector>’; did you forget to ‘#include <vector>’?
26 | #include <set>
+++ |+#include <vector>
So I added #include <vector>
to MetaData.hpp.
Now I'm getting this error:
../../src/scanner/MediaScanner.cpp: In member function ‘void Scanner::MediaScanner::scanAudioFile(const std::filesystem::__cxx11::path&, bool, Scanner::ScanStats&)’:
../../src/scanner/MediaScanner.cpp:508:75: error: no matching function for call to ‘Wt::WDateTime::WDateTime(<brace-enclosed initializer list>)’
508 | const Wt::WDateTime lastWriteTime {std::filesystem::last_write_time(file)};
| ^
In file included from ../../src/scanner/MediaScanner.hpp:26,
from ../../src/scanner/MediaScanner.cpp:20:
/usr/include/Wt/WDateTime.h:82:12: note: candidate: ‘Wt::WDateTime::WDateTime(std::chrono::_V2::system_clock::time_point)’
82 | explicit WDateTime(const std::chrono::system_clock::time_point timepoint);
| ^~~~~~~~~
/usr/include/Wt/WDateTime.h:82:66: note: no known conversion for argument 1 from ‘time_point<std::filesystem::__file_clock,[...]>’ to ‘time_point<std::chrono::_V2::system_clock,[...]>’
82 | explicit WDateTime(const std::chrono::system_clock::time_point timepoint);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/usr/include/Wt/WDateTime.h:78:3: note: candidate: ‘Wt::WDateTime::WDateTime(const Wt::WDate&, const Wt::WTime&)’
78 | WDateTime(const WDate& date, const WTime& time);
| ^~~~~~~~~
/usr/include/Wt/WDateTime.h:78:3: note: candidate expects 2 arguments, 1 provided
/usr/include/Wt/WDateTime.h:72:12: note: candidate: ‘Wt::WDateTime::WDateTime(const Wt::WDate&)’
72 | explicit WDateTime(const WDate& date);
| ^~~~~~~~~
/usr/include/Wt/WDateTime.h:72:35: note: no known conversion for argument 1 from ‘std::filesystem::file_time_type’ {aka ‘std::chrono::time_point<std::filesystem::__file_clock>’} to ‘const Wt::WDate&’
72 | explicit WDateTime(const WDate& date);
| ~~~~~~~~~~~~~^~~~
/usr/include/Wt/WDateTime.h:65:3: note: candidate: ‘Wt::WDateTime::WDateTime()’
65 | WDateTime();
| ^~~~~~~~~
/usr/include/Wt/WDateTime.h:65:3: note: candidate expects 0 arguments, 1 provided
/usr/include/Wt/WDateTime.h:55:14: note: candidate: ‘constexpr Wt::WDateTime::WDateTime(const Wt::WDateTime&)’
55 | class WT_API WDateTime
| ^~~~~~~~~
/usr/include/Wt/WDateTime.h:55:14: note: no known conversion for argument 1 from ‘std::filesystem::file_time_type’ {aka ‘std::chrono::time_point<std::filesystem::__file_clock>’} to ‘const Wt::WDateTime&’
/usr/include/Wt/WDateTime.h:55:14: note: candidate: ‘constexpr Wt::WDateTime::WDateTime(Wt::WDateTime&&)’
/usr/include/Wt/WDateTime.h:55:14: note: no known conversion for argument 1 from ‘std::filesystem::file_time_type’ {aka ‘std::chrono::time_point<std::filesystem::__file_clock>’} to ‘Wt::WDateTime&&’
make[1]: *** [Makefile:1073: lms-MediaScanner.o] Error 1
make[1]: *** Waiting for unfinished jobs....
mv -f .deps/lms-AvFormat.Tpo .deps/lms-AvFormat.Po
mv -f .deps/lms-TagLibParser.Tpo .deps/lms-TagLibParser.Po
mv -f .deps/lms-Auth.Tpo .deps/lms-Auth.Po
mv -f .deps/lms-MediaPlayer.Tpo .deps/lms-MediaPlayer.Po
mv -f .deps/lms-PlayHistoryView.Tpo .deps/lms-PlayHistoryView.Po
mv -f .deps/lms-PlayQueueView.Tpo .deps/lms-PlayQueueView.Po
mv -f .deps/lms-main.Tpo .deps/lms-main.Po
mv -f .deps/lms-LmsApplication.Tpo .deps/lms-LmsApplication.Po
make[1]: Leaving directory '~/lms/build/src'
make: *** [Makefile:547: all-recursive] Error 1
Building git master yields the same error. How can I fix this?
I’m attempting to build wt from source, and the wt documentation lists a bunch of optional dependencies:
Which ones are required for LMS?
It seems like you’re using only sqlite, so I guess postgresql / firebird / mysql / mariadb / unixODBC are not needed. Openssl is not neeeded too if your recommendation of running a reverse proxy is followed. What else can be dumped?
(I’m asking because I’m having problems building firebird on armv7l.)
An option to download albums would be nice!
Can you add an option to transcode only certain file types? This would be useful when one has both lossy and lossless files in his library
Just a minor bug, I have some files with extension m4a (apple lossless) which get scanned but never transcoded. I think I will need to convert them into flac but in case you want to address this I am reporting this minor bug. Thanks again for your software, best in the field.
When using LMS with the Subsonic API for streaming the transcoding output is always mp3 even when transcoding is disabled, web stream transcoding works as intended since does not implements the Subsonic API.
Clients tested:
The request clementine sends to the server is the following
GET /rest/stream.view?v=1.8.0&c=Clementine&u=myuser&p=enc%myencodedpassword&id=tr-40164
HTTP/1.1
Host:lms.myhost.com
User-Agent:Clementine 1.3.1
icy-metadata:1
Connection:Keep-Alive
Tried using curl to force Subsonic Api query parameters for raw format but the trancoding still happened , also tried with several request with Accept
header (not documented here)
curl \
-H "Host:lms.myhost.com" \
-H "User-Agent:Clementine 1.3.1" \
-H "icy-metadata:1" \
-H "Connection:Keep-Alive" \
'https://lms.myhost.com/rest/stream.view?v=1.8.0&c=Clementine&u=myuser&p=enc%myencodedpassword&id=tr-40160&format=raw'
Dsub has the same behaviour
The transcoding uses the bitrate configured in the web settings but always chooses MP3 for it instead of the selected format.
LMS runs the following as user lms
.
/usr/bin/ffmpeg -loglevel quiet -nostdin -i /path/to/music.flac -vn -b:a 320000 -f mp3 pipe:1
The server I'm running my LMS instance has the following things installed (I don't think it's important but I'll add it anyways):
Element | Version |
---|---|
Distro | Debian buster |
Kernel | 4.19.0-6-amd64 |
ffmpeg | 7:4.1.4-1~deb10u1 |
lms | 3.1.0-1 |
I Installed LMS following the Debian Buster packages installation instructions.
Config is default except for behind-reverse-proxy
set to true
since the server is proxied behind apache with forced tls
Haven't check the code yet but I will if I have time.
The UI is essential and amazing, but I think that a dark mode option could make it even better
I typically store multi-disc albums using the following directory structure:
$albumname/CD01/01 $disc01-track01_name
$albumname/CD01/02 $disc01-track02_name
$albumname/CD01/...
$albumname/CD02/01 $disc02-track01_name
$albumname/CD02/...
$albumname/cover.jpg
In this case, cover.jpg
is not picked up as the album cover, even though LMS correctly recognises all the directories as a single album.
I’ve tried looking at the code, but I’m a bit confused. When is cover art retrieved using Grabber::getFromRelease
vs Grabber::getFromTrack
(in src/cover/CoverArtGrabber.cpp
)? Isn’t cover art displayed only for entire albums, and not for the individual track?
When trying to refresh catalog in Strawberry (Clementine fork) I get "Parameter 'id': bad format" error. Relevant LMS logs:
Jan 20 04:10:46 host lms[25291]: <IP> - - [2020-Jan-20 04:10:46.087] "GET /rest/getAlbumList2.view?type=alphabeticalByName&c=Strawberry&v=1.11.0&f=json&u=<redacted>&p=enc%<redacted> HTTP/1.0" 200 623
Jan 20 04:10:46 host lms[25291]: <IP> - - [2020-Jan-20 04:10:46.250] "GET /rest/getAlbumList2.view?type=alphabeticalByName&offset=2&c=Strawberry&v=1.11.0&f=json&u=<redacted>&p=enc%<redacted> HTTP/1.0" 200 97
Jan 20 04:10:46 host lms[25291]: [2020-Jan-20 04:10:46.364] 25291 - [error] - [API_SUBSONIC] Error while processing request 'getAlbum', params = [{c=Strawberry}, {f=json}, {id=0}, {p=*SENSIBLE DATA*}, {u=<redacted>}, {v=1.11.0}, ], code = 0, msg = 'Parameter 'id': bad format'
Jan 20 04:10:46 host lms[25291]: <IP> - - [2020-Jan-20 04:10:46.366] "GET /rest/getAlbum.view?id=0&c=Strawberry&v=1.11.0&f=json&u=<redacted>&p=enc%<redacted> HTTP/1.0" 200 157
Not sure where this 0 comes from, album ids are definitely not zeroes:
{
"subsonic-response" : {
"albumList2" : {
"album" : [
{
"artist" : "<>",
"artistId" : "ar-348",
"coverArt" : "al-718",
"duration" : "<>",
"genre" : "<>",
"id" : "al-718",
"name" : "<>",
"songCount" : "9",
"year" : "<>"
},
...
]
},
"status" : "ok",
"version" : "1.12.0"
}
}
I've noticed that in my Airsonic output and Subsonic example id
fields are different from coverArt
and lack the al-
prefix. Also artistId
contains just no ar-
prefix:
{
"subsonic-response" : {
"status" : "ok",
"version" : "1.15.0",
"albumList2" : {
"album" : [ {
"id" : "542",
"name" : "<>",
"artist" : "<>",
"artistId" : "148",
"coverArt" : "al-542",
"songCount" : 5,
"duration" : 2034,
"created" : "<>",
"year" : <>,
"genre" : "<>"
},
...
} ]
}
}
}
My wild guess is that apps like Strawberry just handle id
field as a number and get 0 when trying to parse ids with letters from LMS. If that's the case, maybe it's better to change id
and artistId
format on LMS side to provide better compatibility?
I'm running LMS 3.2.0, Strawberry 0.6.8 and Airsonic 10.5.0.
It would be nice to keep the local player settings over time.
For example, if you set the volume to 0.5, you would like to get it back at this specific value next time.
We could save it in HTML5 local storage.
We should add the track duration somewhere in the UI (desktop only? Also in the player?)
Requested by https://www.reddit.com/r/selfhosted/comments/eek3d6/looking_for_selfhosted_musicstreaming_service/fde9xfe/
I noticed that when I try to play a m4a file (aac codec) using either DSub client or web UI, the song never starts and I get the following errors in the log:
[2020-Mar-04 01:40:06.515] 1 [/ 8TCpFxPx0ZGnr7sD] [info] - [TRANSCODE] [35] - Transcoding file '/music/Brahms - Piano Trios 2 and Piano Trio in A Major op. posthume (Guarneri Trio Prague)/02 Piano Trio No. 2 in C major, Op. 87 - II. Andante con moto.m4a'
[2020-Mar-04 01:40:06.515] 1 [/ 8TCpFxPx0ZGnr7sD] [error] - [AV] Cannot guess media file format for '/music/Brahms - Piano Trios 2 and Piano Trio in A Major op. posthume (Guarneri Trio Prague)/02 Piano Trio No. 2 in C major, Op. 87 - II. Andante con moto.m4a'
[2020-Mar-04 01:40:06.515] 1 [/ 8TCpFxPx0ZGnr7sD] [error] - [UI] Cannot start transcoder
[2020-Mar-04 01:35:31.558] 1 - [info] - [TRANSCODE] [23] - Transcoding file '/music/Smetana, Sibelius - String Quartets - Kocian Quartet [M4A]/10 Andante Festivo for string quartet, JS 34a.m4a'
[2020-Mar-04 01:35:31.558] 1 - [error] - [AV] Cannot guess media file format for '/music/Smetana, Sibelius - String Quartets - Kocian Quartet [M4A]/10 Andante Festivo for string quartet, JS 34a.m4a'
These files are regular aac encoded tracks as shown by ffmpeg:
Duration: 00:08:52.39, start: 0.047891, bitrate: 321 kb/s
Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 320 kb/s (default)
Also, after that happens the lms process starts using max CPU on my server (but continues to play other tracks normally) until I restart the container.
I would also like to completely disable transcoding on the server so that it always use the original file. It's already disabled in the /settings page but is it still enabled somehow?
hello, i'm very new to clang. i was attempting to test out lms on my freebsd box and went to work making the necessary edits to build.
a few hours later, success!! it builds! i went through the rest of the setup but unfortunately it crashes doing something with graphicsmagick. i've attached the output here, but i dont think that it's the real issue.
my thought is that i dont want to edit the libary yet, but that maybe i should to get a more verbose output? attempts to find out where this assertion all failed, but i need to learn more.
any ideas?
ARG = ./src/lms/lms
ARG = --config=/var/lms/wt_config.xml
ARG = --docroot=/usr/local/share/lms/docroot/;/resources,/css,/images,/js,/favicon.ico
ARG = --approot=/usr/local/share/lms/approot
ARG = --resources-dir=/usr/local/share/Wt/resources
ARG = --http-port=8080
ARG = --http-address=0.0.0.0
[2020-Mar-26 02:36:53.075] 61843 - [info] "config: reading Wt config file: /var/lms/wt_config.xml (location = './src/lms/lms')"
[2020-Mar-26 02:38:08.090] 61843 - [error] "SocketNotifier: connect socket1 failed. Error code 60"
[2020-Mar-26 02:38:08.092] 61843 - [info] - [DB] Creating connection pool on file /var/lms/lms.db
[2020-Mar-26 02:38:08.177] 61843 - [info] - [DB] Tables created
[2020-Mar-26 02:38:08.178] 61843 - [info] - [DB] Database version = 13, LMS binary version = 13
[2020-Mar-26 02:38:08.203] 61843 - [info] - [DB] Creating cluster type ALBUMGROUPING
[2020-Mar-26 02:38:08.204] 61843 - [info] - [DB] Creating cluster type ALBUMMOOD
[2020-Mar-26 02:38:08.204] 61843 - [info] - [DB] Creating cluster type GENRE
[2020-Mar-26 02:38:08.204] 61843 - [info] - [DB] Creating cluster type MOOD
[2020-Mar-26 02:38:08.215] 61843 - [info] - [DB UPDATER] Using scan settings version 1
Assertion failed: (copy->signature == MagickSignature), function CopyException, file magick/error.c, line 222.
Magick: abort due to signal 6 (SIGABRT) "Abort"...
Abort (core dumped)```
Please consider adding jukebox mode (direct playback on server's hardware without transcoding). Probably the easiest is to use mpv or similar well-tested and flexible CLI app. Preferably the command should be configurable (so that one can select output device or other options). This feature is supported by e. g. DSub Android client.
Subsonic docs: http://www.subsonic.org/pages/api.jsp#jukeboxControl
I managed to compile v2.2.0 for debian stretch ;) ... after scanning the media folder, I got the following summary:
[info] - [DB UPDATER] Scan complete. Changes = 160874 (added = 160874, removed = 0, updated = 0), Not changed = 0, Scanned = 160881 (errors = 0, not imported = 7), duplicates = 0 (hash = 0, mbid = 0)
and
[info] - [UI] Notifying message 'Scan complete: 160874 total files, 160874 additions, 0 updates, 0 deletions, 0 duplicates, 7 errors' of type 'info'
How can I figure out, which files have errors? Unfortunately the log does not contain any log messages that point to the files (no "Skipped " message that increments the stats.incompleteScans).
Do you have any hint or idea?
Pressing play and shuffling essentially gives you random tracks, but there is no possibility in LMS to get a random album. Might be a nice way to find new albums if we had a random album button. Airsonic also has a landing page with a wall of random albums, which is another nice idea.
Keep up the great work! :)
Seen only using Chrome: when seeking in a FLAC file (no transcode), the timeOffset property of the html5 audio object is using the absolute file offset, even if the server truncates the beginning of the file.
As a result, the current time and progress are doubled.
Hi, happy user here of LMS, however, on some flac files I am getting some strange error messages:
10.8.0.4 - - [2019-Dec-23 12:21:19.463] "GET /rest/savePlayQueue.view?u=admin&p=enc:3f506167616e656c3234&v=1.2.0&c=DSub&id=tr-13094&id=tr-13087&id=tr-13088&id=tr-13090&id=tr-13091&id=tr-13095&id=tr-13092&id=tr-13089&id=tr-13093¤t=tr-13091&position=0 HTTP/1.1" 200 154
[2019-Dec-23 12:24:48.734] 1 - [error] - [API_SUBSONIC] Unhandled command 'savePlayQueue'
[2019-Dec-23 12:24:48.734] 1 - [error] - [API_SUBSONIC] Error while processing request 'savePlayQueue', params = [{c=DSub}, {current=tr-13095}, {id={tr-13094,tr-13087,tr-13088,tr-13090,tr-13091,tr-13095,tr-13092,tr-13089,tr-13093,}}, {p=*SENSIBLE DATA*}, {position=0}, {u=admin}, {v=1.2.0}, ], code = 0, msg = 'Not implemented'
10.8.0.4 - - [2019-Dec-23 12:24:48.734] "GET /rest/savePlayQueue.view?u=admin&p=enc:3f506167616e656c3234&v=1.2.0&c=DSub&id=tr-13094&id=tr-13087&id=tr-13088&id=tr-13090&id=tr-13091&id=tr-13095&id=tr-13092&id=tr-13089&id=tr-13093¤t=tr-13095&position=0 HTTP/1.1" 200 154
[2019-Dec-23 12:28:02.047] 1 - [error] - [API_SUBSONIC] Unhandled command 'savePlayQueue'
[2019-Dec-23 12:28:02.047] 1 - [error] - [API_SUBSONIC] Error while processing request 'savePlayQueue', params = [{c=DSub}, {current=tr-13092}, {id={tr-13094,tr-13087,tr-13088,tr-13090,tr-13091,tr-13095,tr-13092,tr-13089,tr-13093,}}, {p=*SENSIBLE DATA*}, {position=0}, {u=admin}, {v=1.2.0}, ], code = 0, msg = 'Not implemented'
As visible, trying to play it on Android via DSub. Can you tell us more about what is this "Not implemented" message?
I'm loving the simplicity of LMS so far! One suggestion which would make it much more usable for me would be an Album Artist only listing. All my tracks are tagged with artist (often including the featuring artist) and an album artist (which is the same across the whole album).
With the current Artist listing page, I end up with the following:
It would be a great option to have a list with only the Album Artists in there.
Trying to connect to LMS via the Subsonic API plugin of MusicBee. I can confirm that other server Subsonic API implementations work fine. However, I am not able to connect to LMS Subsonic API implementation. Can you have a look whether it is in LMS or in MusicBee?
The Subsonic API currently shows albums with multiple artists as "Various Artists", however it would be better to show the comma-separated list of artists instead. Many classical albums have more than one artist:
I believe this behavior is implemented at
Sorry for my bad English.
In source I finded defined file types. "aac" is included in that. but aac file is not found in scan. is not support ADTS AAC?
I using
• Raspberry Pi
• CentOS 7
• Docker Image epoupon/lms:arm-3.2.0
We would like to:
Note that DSub seems to sort artists on its side.
I hit some kind of fatal error (I can't make it work again even with a restart). I guess I put an invalid media in the playlist, but I can't reset it before the application crashes on me
Running the 3.6.0 version on docker, I got this on server:
172.18.0.8 - - [2020-Feb-06 00:11:23.411] "POST /?wtd=JBA1o1gThZeoABqm HTTP/1.1" 200 5546 [mp3 @ 0x55c85eb59440] Could not find codec parameters for stream 1 (Video: mjpeg, none): unspecified size Consider increasing the value for the 'analyzeduration' and 'probesize' options 172.18.0.8 - - [2020-Feb-06 00:11:23.617] "GET /resources/font-awesome/fonts/fontawesome-webfont.woff2?v=4.3.0 HTTP/1.1" 200 56780 172.18.0.8 - - [2020-Feb-06 00:11:23.640] "POST /?wtd=JBA1o1gThZeoABqm HTTP/1.1" 200 12026 [2020-Feb-06 00:11:23.748] 1 [/ JBA1o1gThZeoABqm] [error] "WApplication: JavaScript error: {""exception_description"":""Unexpected identifier"",""exception_js"":""Wt._p_.response(1267426010);{var j31=Wt4_2_0.$('ovefeug');\nvar j32=document.createElement('button');j31.parentNode.replaceChild(j32,j31);\nj32.setAttribute('id', 'ovefeug');\nj32.setAttribute('type','button');\n\nj32.className='navbar-toggle btn btn-default with-label';\nj32.style.display='none';\nfunction f33(event) { var e=event||window.event,o=this;if($(o).hasClass('disabled')){Wt4_2_0.cancelEvent(e);return;}Wt._p_.update(o,'s1a',e,true);}\nj32.onclick=f33;\nWt4_2_0.setHtml(j32,'\\r\\n
and browser side:
Uncaught SyntaxError: Unexpected identifier at eval () at Fa (/?wtd=Le4aVrEpfEBFzYad&sid=1843536681&webGL=true&scrW=1280&scrH=800&tz=60&tzS=Europe%2FParis&htmlHistory=true&deployPath=%2F&request=script&rand=3177558302:95) at P (/?wtd=Le4aVrEpfEBFzYad&sid=1843536681&webGL=true&scrW=1280&scrH=800&tz=60&tzS=Europe%2FParis&htmlHistory=true&deployPath=%2F&request=script&rand=3177558302:96) at z (/?wtd=Le4aVrEpfEBFzYad&sid=1843536681&webGL=true&scrW=1280&scrH=800&tz=60&tzS=Europe%2FParis&htmlHistory=true&deployPath=%2F&request=script&rand=3177558302:28) at XMLHttpRequest.x (/?wtd=Le4aVrEpfEBFzYad&sid=1843536681&webGL=true&scrW=1280&scrH=800&tz=60&tzS=Europe%2FParis&htmlHistory=true&deployPath=%2F&request=script&rand=3177558302:28)
Replaygain support would be great to have in the LMS web player, I believe the Subsonic web interface does this.
These may be lyrics embedded in tags and lyrics in .lrc files.
I start to use LMS for replace my subsonic server but there are a point make me little annoying.
In the webui we can choose see artist of album but when i use DSub i see all artist.
Can you think it will be possible do have a option in LMS for change that?
When I enter mergerfs union file system path as media root directory, input field becomes red with message "Value too large for defined data type". If I specify one of the merged physical drives, everything works fine. As a check, Airsonic seems to work with mergerfs path without problems.
I use Debian package on Raspberry Pi and mergerfs 2.24.2.
We should add a global volume control somewhere in the player (desktop only)
Requested by https://www.reddit.com/r/selfhosted/comments/eek3d6/looking_for_selfhosted_musicstreaming_service/fde9xfe/
After the initial scan of my library I noticed many duplicate entries for (Album) Artists (ie, I currently have four different "Various Artists" items.
LMS appears to create its artist nodes based on Artist/AlbumArtist tags in combination with musicbrainzArtistID, musicbrainzAlbumArtistID, the ARTISTS tag, and.. anything else? I've spent a few days ensuring that every track with an artist listed in MusicBrainz has consistent IDs, [unknown] and Various Artists are tagged with those specific special IDs.
The ARTISTS tag is the most recent discovery: A Tribe Called Quest has multiple entries because Picard added an additional (featured) ARTISTS tag to one of the tracks.
Related to this: now that all my tracks have musicbrainz artist IDs, I've noticed that those with multiple IDs (two tags, like how id3v2.4 genres are done) - (ARTIST: "Willie Nelson and Emmylou Harris", MBID:{Willie Nelson}\MBID:{Emmylou Harris}) - will bring up a listing of both associated artists' catalogs - an OR type operation. In such cases it might make sense to do an AND instead, and only bring up other pairings of the same artists/IDs.
As musicbrainz itself seems to format some multiple-value tags with delimters in a single tag (musicbrainzAlbumType: "album / soundtrack / compilation") I'm not sure if I shouldn't be handling multiple ID's the same way? That might be a way to only list "Willie+Emmylou" items, but might not list "Emmylou+Willie", if the IDs are entered in a different order.
hey m8
i intend to create a simple music streaming platform, my collection of indie royalty free music is quite big (about 30k tracks), i got all my tags correct, and currently using ampachi for managing the collection
but as you probably guess, enabling discovery is VERY hard, which is why i am intersted in lms
would you care about doing a project as a paid gig :D (mostly having wraped pwa's for offline playlists, and firebase tools integrations)
Is it only me, but I have to manually update the docker whenever an upgrade is available, e.g. epoupon/lms:3.2.0
or epoupon/lms:3.6.0
but I get an error when putting epoupon/lms:latest
. Is this an error on my side, or is this on purpose?
Hi, does LMS support CUE sheets? I didn't see any mention of it either way in the docs. CUE sheets are commonly used in audio CD archives (usually CUE + BIN or CUE + FLAC).
I'm trying to build LMS on a Raspberry Pi 3 using Arch.
I have all the requirements installed, including imagemagick 7.0.9, which under Arch should have the proper headers as well.
My ../configure --prefix=/usr step, however, does not pick it up:
checking for IMAGEMAGICKXX... no
Which ImageMagick version is supported at the moment?�
Hello,
Currently, as far as I can tell, LMS does not have support for specifying multiple directories, e.g. one for music, one for audio books, etc.
As a workaround, I have tried creating symlinks, unfortunately LMS does not follow them.
I currently have a directory for everything audio, which contains audio books, audio dramas, music, etc, which I would like to add to LMS. I could specify the root directory, however, there are directories that I would like to exclude.
Unless I am missing something, would it be possible to support this scenario later on?
It looks like the LMS compiled in the official docker image silently skips some files
Updated to 3.6.1-1 yesterday, and after a scan most of my library now only has the first word of a multi word tag. For instance, "The Beatles" has become "The" and the album "Abbey Road" is now "Abbey".
soxi 01\ -\ Come\ Together.flac
Input File : '01 - Come Together.flac'
Channels : 2
Sample Rate : 44100
Precision : 16-bit
Duration : 00:04:19.95 = 11463648 samples = 19496 CDDA sectors
File Size : 26.9M
Bit Rate : 828k
Sample Encoding: 16-bit FLAC
Comments :
TITLE=Come Together
ALBUM ARTIST=Beatles
Album=Abbey Road
Artist=The Beatles
Genre=Classic Rock; Rock; Pop
ALBUMARTIST=The Beatles
COMPOSER=The Beatles
DATE=1969
TRACKNUMBER=01
This has been occurring since one of the latest releases, the transcoded mp3s I stream to DSub have none of the original tags. I'm running the 3.9.0 Docker image.
I'm using the latest Docker image, and when streaming to DSub over Subsonic API, the lengths are properly shown in the album list, but upon playback are incorrect and often insanely long (58 minutes for ~6 minute track).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.