I’ve been working with liquidsoap lately, trying to set up automated streaming for an online radio station. Everything works fine so far, except that I need a way to get all the files to have the same loudness, since they will we sourced from many different people and will be spanning at least five decades of release dates, so I’m expecting them to be mastered to a lot of different loudness levels.
Problem is, when I try to add any of the offered ReplayGain implementations (enable_replaygain_metadata()
and the replay_gain:
-protocol), I get Source failed (no more tracks) stopping output...
, even when I don’t actually use any of the ReplayGain values.
I’ve checked both the relevant script (/usr/lib/liquidsoap/1.1.1/extract-replaygain
) and the binary called by the script (mp3gain
), and they’re both giving back the result I would expect.
But, since both enable_replaygain_metadata()
and the replay_gain:
-protocol aren’t terribly well documented, I don’t know what kind of return value they actually are expecting, or what their behavior should be. And since I can’t find any useful information regarding the cause, searching for solutions online has been relatively fruitless so far, with all information I found telling me that this problem should not happen.
Any help with this problem would be very much appreciated.
OS: Ubuntu 16.04
liquidsoap version: 1.1.1
mp3gain version: 1.5.2
working script: (./Auto-DJ contains 66 directories with a total of 1045 files, all mp3)
# Log dir
set("log.file",false)
set("log.stdout",true)
set("log.level",4)
# Music
tracks = playlist("./Auto-DJ")
#Play on a Timer
timer = switch([({ 12h-24h }, tracks)])
# Start building the feed with music
stream = smart_crossfade(
start_next = 2.0,
fade_in = 0.0,
fade_out = 0.0,
high = -9.0,
medium = -15.0,
margin = 120.0,
width= 0.05,
timer)
# Stream it out
output.icecast(
%mp3.vbr(
stereo=true,
stereo_mode="joint_stereo",
samplerate=44100,
internal_quality=0,
quality = 0,
id3v2 = true
),
fallible = true,
format = "audio/mpeg",
genre = "Rock",
host = "192.168.127.2",
mount="/stream",
port = 8000,
password = "hackme",
timeout = 30.0,
stream)
liquidsoap log with added enable_replaygain_metadata()
before tracks = playlist(".")
:
2016/10/07 14:01:12 >>> LOG START
2016/10/07 14:01:11 [protocols.external:3] Found "/usr/bin/wget".
2016/10/07 14:01:11 [main:3] Liquidsoap 1.1.1
2016/10/07 14:01:11 [main:3] Using: graphics=[distributed with Ocaml] pcre=7.0.4 dtools=0.3.1 duppy=0.5.1 duppy.syntax=0.5.1 cry=0.2.2 mm=0.2.1 xmlplaylist=0.1.3 lastfm=0.3.0 ogg=0.4.5 vorbis=0.6.1 opus=0.1.0 speex=0.2.0 mad=0.4.4 flac=0.1.1 flac.ogg=0.1.1 dynlink=[distributed with Ocaml] lame=0.3.2 shine=0.2.0 gstreamer=0.2.0 frei0r=0.1.0 voaacenc=0.1.0 theora=0.3.0 schroedinger=0.1.0 gavl=0.1.5 bjack=0.1.4 alsa=0.2.1 ao=0.2.0 samplerate=0.1.2 taglib=0.3.1 magic=0.7.3 camomile=0.8.4 inotify=1.0 faad=0.3.2 soundtouch=0.1.7 portaudio=0.2.0 pulseaudio=0.1.2 ladspa=0.1.4 dssi=0.1.1 sdl=0.9.1 camlimages=4.2.0 lo=0.1.0 yojson=1.2.3 gd=1.0a5
2016/10/07 14:01:11 [dynamic.loader:3] Could not find dynamic module for fdkaac encoder.
2016/10/07 14:01:11 [dynamic.loader:3] Could not find dynamic module for aacplus encoder.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/voaacenc.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/shine.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/sdl.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/soundtouch.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/samplerate.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/pulseaudio.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/oss.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/mad.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/lo.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/portaudio.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/lame.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/bjack.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/cry.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/gstreamer.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/xmlplaylist.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/gd.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/gavl.cmxs.
2016/10/07 14:01:11 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/frei0r.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/flac.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/ogg.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/faad.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/ladspa.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/graphics.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/ao.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/alsa.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/camlimages.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/dssi.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/flac_ogg.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/lastfm.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/opus.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/schroedinger.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/speex.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/taglib.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/theora.cmxs.
2016/10/07 14:01:12 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/vorbis.cmxs.
2016/10/07 14:01:12 [frame:3] Using 44100Hz audio, 25Hz video, 44100Hz master.
2016/10/07 14:01:12 [frame:3] Frame size must be a multiple of 1764 ticks = 1764 audio samples = 1 video samples.
2016/10/07 14:01:12 [frame:3] Targetting 'frame.duration': 0.04s = 1764 audio samples = 1764 ticks.
2016/10/07 14:01:12 [frame:3] Frames last 0.04s = 1764 audio samples = 1 video samples = 1764 ticks.
2016/10/07 14:01:12 [video.converter:4] Using preferred video converter: gavl.
2016/10/07 14:01:12 [audio.converter:4] Using preferred samplerate converter: libsamplerate.
2016/10/07 14:01:12 [threads:3] Created thread "generic queue #1".
2016/10/07 14:01:12 [threads:3] Created thread "generic queue #2".
2016/10/07 14:01:12 [clock:4] Currently 2 clocks allocated.
2016/10/07 14:01:12 [clock.wallclock_main:4] Starting 1 sources...
2016/10/07 14:01:12 [source:4] Source output.icecast_6366 gets up.
2016/10/07 14:01:12 [source:4] Source smart_cross_6361 gets up.
2016/10/07 14:01:12 [source:4] Source switch_6359 gets up.
2016/10/07 14:01:12 [source:4] Source playlist_6357 gets up.
2016/10/07 14:01:12 [playlist-(dot):3] Loading playlist...
2016/10/07 14:01:12 [playlist-(dot):3] Playlist is a directory.
2016/10/07 14:01:12 [playlist-(dot):3] Successfully loaded a playlist of 1045 tracks.
2016/10/07 14:01:12 [playlist-(dot):4] Content kind is {audio=2;video=0;midi=0}.
2016/10/07 14:01:12 [playlist-(dot):4] Activations changed: static=[], dynamic=[switch_6359:smart_cross_6361].
2016/10/07 14:01:12 [switch_6359:4] Activations changed: static=[], dynamic=[smart_cross_6361].
2016/10/07 14:01:12 [switch_6359:4] Activations changed: static=[smart_cross_6361], dynamic=[smart_cross_6361].
2016/10/07 14:01:12 [smart_cross_6361:4] Activations changed: static=[/stream:/stream], dynamic=[].
2016/10/07 14:01:12 [decoder:4] Trying method "META" for "./Apocalyptica/Fade To Black.mp3"...
2016/10/07 14:01:12 [decoder:4] Trying method "WAV" for "./Apocalyptica/Fade To Black.mp3"...
2016/10/07 14:01:12 [/stream:4] Activations changed: static=[/stream], dynamic=[].
2016/10/07 14:01:12 [/stream:4] Enabling caching mode: active source.
2016/10/07 14:01:12 [decoder.wav:4] Invalid MIME type for "./Apocalyptica/Fade To Black.mp3": audio/mpeg!
2016/10/07 14:01:12 [decoder.wav:4] Invalid file extension for "./Apocalyptica/Fade To Black.mp3"!
2016/10/07 14:01:12 [decoder:4] Trying method "MIDI" for "./Apocalyptica/Fade To Black.mp3"...
2016/10/07 14:01:12 [decoder:4] Trying method "IMAGE" for "./Apocalyptica/Fade To Black.mp3"...
2016/10/07 14:01:12 [decoder:4] Trying method "MAD" for "./Apocalyptica/Fade To Black.mp3"...
2016/10/07 14:01:12 [/stream:3] Connecting mount /stream for source@192.168.127.2...
2016/10/07 14:01:12 [decoder.mad:4] Libmad recognizes "./Apocalyptica/Fade To Black.mp3" as mpeg audio (layer III, 128kbps, 44100Hz, 2 channels).
2016/10/07 14:01:12 [decoder:3] Method "MAD" accepted "./Apocalyptica/Fade To Black.mp3".
2016/10/07 14:01:12 [decoder.gstreamer:4] Invalid MIME type for "./Apocalyptica/Fade To Black.mp3": audio/mpeg!
2016/10/07 14:01:12 [decoder.gstreamer:4] Invalid file extension for "./Apocalyptica/Fade To Black.mp3"!
2016/10/07 14:01:12 [metadata.flac:4] Invalid MIME type for "./Apocalyptica/Fade To Black.mp3": audio/mpeg!
2016/10/07 14:01:12 [metadata.flac:4] Invalid file extension for "./Apocalyptica/Fade To Black.mp3"!
2016/10/07 14:01:12 [decoder.ogg:4] Invalid MIME type for "./Apocalyptica/Fade To Black.mp3": audio/mpeg!
2016/10/07 14:01:12 [/stream:3] Connection setup was successful.
2016/10/07 14:01:12 [threads:3] Created thread "wallclock_main" (1 total).
2016/10/07 14:01:12 [clock:4] Main phase starts.
2016/10/07 14:01:12 [decoder.ogg:4] Invalid file extension for "./Apocalyptica/Fade To Black.mp3"!
2016/10/07 14:01:12 [metadata.mp4:4] Invalid MIME type for "./Apocalyptica/Fade To Black.mp3": audio/mpeg!
2016/10/07 14:01:12 [metadata.mp4:4] Invalid file extension for "./Apocalyptica/Fade To Black.mp3"!
2016/10/07 14:01:12 [clock.wallclock_main:3] Streaming loop starts, synchronized with wallclock.
2016/10/07 14:01:12 [/stream:3] Source failed (no more tracks) stopping output...
2016/10/07 14:01:12 [/stream:3] Closing connection...
2016/10/07 14:01:17 [playlist-(dot):4] Remaining: 0.0s, queued: 0.0s, adding: 30.0s (RID 1)
2016/10/07 14:02:26 [main:3] Shutdown started!
2016/10/07 14:02:26 [main:3] Waiting for threads to terminate...
2016/10/07 14:02:26 [/stream:4] Activations changed: static=[], dynamic=[].
2016/10/07 14:02:26 [source:4] Source /stream gets down.
2016/10/07 14:02:26 [smart_cross_6361:4] Activations changed: static=[], dynamic=[].
2016/10/07 14:02:26 [source:4] Source smart_cross_6361 gets down.
2016/10/07 14:02:26 [switch_6359:4] Activations changed: static=[], dynamic=[smart_cross_6361].
2016/10/07 14:02:26 [switch_6359:4] Activations changed: static=[], dynamic=[].
2016/10/07 14:02:26 [source:4] Source switch_6359 gets down.
2016/10/07 14:02:26 [playlist-(dot):4] Activations changed: static=[], dynamic=[].
2016/10/07 14:02:26 [source:4] Source playlist-(dot) gets down.
2016/10/07 14:02:26 [playlist-(dot):4] Waiting for feeding task to stop...
2016/10/07 14:02:26 [playlist-(dot):4] Cleaning up request queue...
2016/10/07 14:02:26 [clock.wallclock_main:3] Streaming loop stopped.
2016/10/07 14:02:26 [threads:3] Thread "wallclock_main" terminated (0 remaining).
2016/10/07 14:02:26 [main:3] Cleaning downloaded files...
2016/10/07 14:02:26 [main:3] Freeing memory...
2016/10/07 14:02:26 >>> LOG END
liquidsoap log with added replay_gain:
-protocol: (playlist(".", prefix="replay_gain:"
))
2016/10/07 14:05:05 >>> LOG START
2016/10/07 14:04:47 [protocols.external:3] Found "/usr/bin/wget".
2016/10/07 14:04:47 [main:3] Liquidsoap 1.1.1
2016/10/07 14:04:47 [main:3] Using: graphics=[distributed with Ocaml] pcre=7.0.4 dtools=0.3.1 duppy=0.5.1 duppy.syntax=0.5.1 cry=0.2.2 mm=0.2.1 xmlplaylist=0.1.3 lastfm=0.3.0 ogg=0.4.5 vorbis=0.6.1 opus=0.1.0 speex=0.2.0 mad=0.4.4 flac=0.1.1 flac.ogg=0.1.1 dynlink=[distributed with Ocaml] lame=0.3.2 shine=0.2.0 gstreamer=0.2.0 frei0r=0.1.0 voaacenc=0.1.0 theora=0.3.0 schroedinger=0.1.0 gavl=0.1.5 bjack=0.1.4 alsa=0.2.1 ao=0.2.0 samplerate=0.1.2 taglib=0.3.1 magic=0.7.3 camomile=0.8.4 inotify=1.0 faad=0.3.2 soundtouch=0.1.7 portaudio=0.2.0 pulseaudio=0.1.2 ladspa=0.1.4 dssi=0.1.1 sdl=0.9.1 camlimages=4.2.0 lo=0.1.0 yojson=1.2.3 gd=1.0a5
2016/10/07 14:04:47 [dynamic.loader:3] Could not find dynamic module for fdkaac encoder.
2016/10/07 14:04:47 [dynamic.loader:3] Could not find dynamic module for aacplus encoder.
2016/10/07 14:04:52 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/voaacenc.cmxs.
2016/10/07 14:05:04 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/shine.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/sdl.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/soundtouch.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/samplerate.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/pulseaudio.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/oss.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/mad.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/lo.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/portaudio.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/lame.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/bjack.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/cry.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/gstreamer.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/xmlplaylist.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/gd.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/gavl.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/frei0r.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/flac.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/ogg.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/faad.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/ladspa.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/graphics.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/ao.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/alsa.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/camlimages.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/dssi.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/flac_ogg.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/lastfm.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/opus.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/schroedinger.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/speex.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/taglib.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/theora.cmxs.
2016/10/07 14:05:05 [dynamic.loader:2] Loaded plugin file /usr/lib/liquidsoap/1.1.1/plugins/vorbis.cmxs.
2016/10/07 14:05:05 [frame:3] Using 44100Hz audio, 25Hz video, 44100Hz master.
2016/10/07 14:05:05 [frame:3] Frame size must be a multiple of 1764 ticks = 1764 audio samples = 1 video samples.
2016/10/07 14:05:05 [frame:3] Targetting 'frame.duration': 0.04s = 1764 audio samples = 1764 ticks.
2016/10/07 14:05:05 [frame:3] Frames last 0.04s = 1764 audio samples = 1 video samples = 1764 ticks.
2016/10/07 14:05:05 [video.converter:4] Using preferred video converter: gavl.
2016/10/07 14:05:05 [audio.converter:4] Using preferred samplerate converter: libsamplerate.
2016/10/07 14:05:05 [threads:3] Created thread "generic queue #1".
2016/10/07 14:05:05 [threads:3] Created thread "generic queue #2".
2016/10/07 14:05:05 [clock:4] Currently 2 clocks allocated.
2016/10/07 14:05:05 [clock.wallclock_main:4] Starting 1 sources...
2016/10/07 14:05:05 [source:4] Source output.icecast_6365 gets up.
2016/10/07 14:05:05 [source:4] Source smart_cross_6360 gets up.
2016/10/07 14:05:05 [source:4] Source switch_6358 gets up.
2016/10/07 14:05:05 [source:4] Source playlist_6356 gets up.
2016/10/07 14:05:05 [playlist-(dot):3] Loading playlist...
2016/10/07 14:05:05 [playlist-(dot):3] Playlist is a directory.
2016/10/07 14:05:06 [playlist-(dot):3] Successfully loaded a playlist of 1045 tracks.
2016/10/07 14:05:06 [playlist-(dot):4] Content kind is {audio=2;video=0;midi=0}.
2016/10/07 14:05:06 [playlist-(dot):4] Activations changed: static=[], dynamic=[switch_6358:smart_cross_6360].
2016/10/07 14:05:06 [switch_6358:4] Activations changed: static=[], dynamic=[smart_cross_6360].
2016/10/07 14:05:06 [switch_6358:4] Activations changed: static=[smart_cross_6360], dynamic=[smart_cross_6360].
2016/10/07 14:05:06 [smart_cross_6360:4] Activations changed: static=[/stream:/stream], dynamic=[].
2016/10/07 14:05:06 [/stream:4] Activations changed: static=[/stream], dynamic=[].
2016/10/07 14:05:06 [/stream:4] Enabling caching mode: active source.
2016/10/07 14:05:06 [/stream:3] Connecting mount /stream for source@192.168.127.2...
2016/10/07 14:05:06 [/stream:3] Connection setup was successful.
2016/10/07 14:05:06 [threads:3] Created thread "wallclock_main" (1 total).
2016/10/07 14:05:06 [clock:4] Main phase starts.
2016/10/07 14:05:06 [clock.wallclock_main:3] Streaming loop starts, synchronized with wallclock.
2016/10/07 14:05:06 [/stream:3] Source failed (no more tracks) stopping output...
2016/10/07 14:05:06 [/stream:3] Closing connection...
2016/10/07 14:05:14 [decoder:4] Trying method "META" for "./ASP/Weltunter.mp3"...
2016/10/07 14:05:14 [decoder:4] Trying method "WAV" for "./ASP/Weltunter.mp3"...
2016/10/07 14:05:14 [decoder.wav:4] Invalid MIME type for "./ASP/Weltunter.mp3": audio/mpeg!
2016/10/07 14:05:14 [decoder.wav:4] Invalid file extension for "./ASP/Weltunter.mp3"!
2016/10/07 14:05:14 [decoder:4] Trying method "MIDI" for "./ASP/Weltunter.mp3"...
2016/10/07 14:05:14 [decoder:4] Trying method "IMAGE" for "./ASP/Weltunter.mp3"...
2016/10/07 14:05:14 [decoder:4] Trying method "MAD" for "./ASP/Weltunter.mp3"...
2016/10/07 14:05:14 [decoder.mad:4] Libmad recognizes "./ASP/Weltunter.mp3" as mpeg audio (layer III, 128kbps, 44100Hz, 2 channels).
2016/10/07 14:05:14 [decoder:3] Method "MAD" accepted "./ASP/Weltunter.mp3".
2016/10/07 14:05:14 [decoder.gstreamer:4] Invalid MIME type for "./ASP/Weltunter.mp3": audio/mpeg!
2016/10/07 14:05:14 [decoder.gstreamer:4] Invalid file extension for "./ASP/Weltunter.mp3"!
2016/10/07 14:05:14 [metadata.flac:4] Invalid MIME type for "./ASP/Weltunter.mp3": audio/mpeg!
2016/10/07 14:05:14 [metadata.flac:4] Invalid file extension for "./ASP/Weltunter.mp3"!
2016/10/07 14:05:14 [decoder.ogg:4] Invalid MIME type for "./ASP/Weltunter.mp3": audio/mpeg!
2016/10/07 14:05:14 [decoder.ogg:4] Invalid file extension for "./ASP/Weltunter.mp3"!
2016/10/07 14:05:14 [metadata.mp4:4] Invalid MIME type for "./ASP/Weltunter.mp3": audio/mpeg!
2016/10/07 14:05:14 [metadata.mp4:4] Invalid file extension for "./ASP/Weltunter.mp3"!
2016/10/07 14:05:14 [playlist-(dot):4] Remaining: 0.0s, queued: 0.0s, adding: 30.0s (RID 1)
2016/10/07 14:08:32 [clock.wallclock_main:2] We must catchup 18.20 seconds!
2016/10/07 14:18:21 [main:3] Shutdown started!
2016/10/07 14:18:21 [main:3] Waiting for threads to terminate...
2016/10/07 14:18:21 [/stream:4] Activations changed: static=[], dynamic=[].
2016/10/07 14:18:21 [source:4] Source /stream gets down.
2016/10/07 14:18:21 [smart_cross_6360:4] Activations changed: static=[], dynamic=[].
2016/10/07 14:18:21 [source:4] Source smart_cross_6360 gets down.
2016/10/07 14:18:21 [switch_6358:4] Activations changed: static=[], dynamic=[smart_cross_6360].
2016/10/07 14:18:21 [switch_6358:4] Activations changed: static=[], dynamic=[].
2016/10/07 14:18:21 [source:4] Source switch_6358 gets down.
2016/10/07 14:18:21 [playlist-(dot):4] Activations changed: static=[], dynamic=[].
2016/10/07 14:18:21 [source:4] Source playlist-(dot) gets down.
2016/10/07 14:18:21 [playlist-(dot):4] Waiting for feeding task to stop...
2016/10/07 14:18:21 [playlist-(dot):4] Cleaning up request queue...
2016/10/07 14:18:21 [clock.wallclock_main:3] Streaming loop stopped.
2016/10/07 14:18:21 [threads:3] Thread "wallclock_main" terminated (0 remaining).
2016/10/07 14:18:21 [main:3] Cleaning downloaded files...
2016/10/07 14:18:21 [main:3] Freeing memory...
2016/10/07 14:18:21 >>> LOG END
Both have been manually stopped after some time of not generating any output.
Edit:
After checking if I might have a bad file in my directory causing mp3gain to fail or to return garbage, I found out the following:
Apparently, enable_replaygain_metadata()
works fine when I use single()
or playlist.safe()
as a source, instead of playlist()
, so I would guess that it only works with local files, which is the exact opposite of what the documentation says. However, playlist.safe()
has to check every single file found at startup, so it takes some time.
Is there any way to make this work with a standard playlist()
?