Closed Warblefly closed 3 years ago
Just checking again without inserting anything on the request queue, and it seems crossfading isn't working at all.
Version 1.4.4 overlaps perfectly, as expected.
Here's the log, from start-up: tracks 1 and 2 did not crossfade.
The log, strangely, says crossfading is happening; but it's not appearing on the output.
Thank you for looking into this, and I hope this log is helpful. First, here is the script:
settings.log.file.path.set("/tmp/test-radio.log")
settings.server.telnet.set(true)
settings.server.telnet.bind_addr.set("0.0.0.0")
settings.server.telnet.port.set(1235)
settings.server.timeout.set(-1.0)
settings.request.metadata_decoders.set(["FFMPEG"])
#settings.decoder.file_decoders.set(["META","FFMPEG"])
settings.decoder.decoders.set(["FFMPEG"])
settings.decoder.file_extensions.ffmpeg.set(["mka"])
settings.decoder.file_extensions.wav.set([""])
settings.decoder.file_extensions.taglib.set([""])
settings.decoder.file_extensions.ogg.set([""])
settings.decoder.file_extensions.mp4.set([""])
settings.decoder.file_extensions.mp3.set([""])
settings.decoder.file_extensions.mad.set([""])
settings.decoder.file_extensions.id3v2.set([""])
settings.decoder.file_extensions.gstreamer.set([""])
settings.decoder.file_extensions.flac.set([""])
settings.decoder.file_extensions.aac.set([""])
settings.frame.audio.samplerate.set(48000)
security = single("/home/john/src/radio/fault.mka")
# Here's the playlist, cut as per our Python pre-production program dictates
myplaylist = amplify(override="liq_amplify", 1.0, cue_cut(playlist(length=60.0, reload_mode="watch", mime_type="audio/x-mpegurl", "/home/john/src/radio/bc2-30DEC2020-complete.m3u8")))
# Add the news
#myplaylist = fallback(track_sensitive=true, transition_length=30.0, [request.queue(id="override"), myplaylist])
# Do the crossfades
myplaylist = crossfade(duration=30.0, smart=false, fade_out=0.0, fade_in=0.0, minimum=-1.0, default=(fun(a,b)->add(normalize=false,([b, a]))), conservative=true, myplaylist)
# Make it infallible
radio = fallback(track_sensitive = false, [myplaylist, security])
#Broadcast it
output.icecast(description="Test stream using Liquidsoap-2 (hifi)", genre="Freeform", name="LS2 Test", host="127.0.0.1", port=8000, mount="test.aac", public=true, url="http://warblefly.sytes.net:8000/test.aac", timeout=240.0, format="audio/aac", password="_redacted_", %external(samplerate=48000, channels=2, process="ffmpeg -f s16le -ar 48000 -ac 2 -i pipe:0 -acodec libfdk_aac -vbr 5 -vn -af dynaudnorm=gausssize=15:correctdc=1:altboundary=1:maxgain=12:targetrms=1.0,aresample=192000,alimiter=limit=-5dB:attack=0.1:release=50:asc=1:asc_level=1,aresample=48000 -f adts pipe:1"), radio)
2021/07/31 13:35:29 >>> LOG START
2021/07/31 13:35:25 [main:3] Liquidsoap 2.0.0+git@363408ac
2021/07/31 13:35:25 [main:3] Using: graphics=5.1.2 bytes=[distributed with OCaml 4.02 or above] pcre=7.4.6 sedlex=2.3 menhirLib=20210419 curl=0.9.1 dtools=0.4.4 duppy=0.9.2 cry=0.6.5 mm=0.7.1 xmlplaylist=0.1.5 lastfm=0.3.3 ogg=0.7.0 ogg.decoder=0.7.0 vorbis=0.8.0 vorbis.decoder=0.8.0 opus=0.2.0 opus.decoder=0.2.0 speex=0.4.0 speex.decoder=0.4.0 mad=0.5.0 flac=0.3.0 flac.ogg=0.3.0 flac.decoder=0.3.0 dynlink=[distributed with Ocaml] lame=0.3.4 gstreamer=0.3.1 frei0r=0.1.2 fdkaac=0.3.2 theora=0.4.0 theora.decoder=0.4.0 ffmpeg-avutil=97c1fc4 ffmpeg-avcodec=97c1fc4 ffmpeg-avdevice=97c1fc4 ffmpeg-av=97c1fc4 ffmpeg-avfilter=97c1fc4 ffmpeg-swresample=97c1fc4 ffmpeg-swscale=97c1fc4 bjack=0.1.6 alsa=0.3.0 ao=0.2.3 samplerate=0.1.5 taglib=0.3.6 ssl=0.5.9 magic=0.7.3 camomile=1.0.2 inotify=2.3 yojson=1.7.0 faad=0.5.0 soundtouch=0.1.9 portaudio=0.2.2 pulseaudio=0.1.4 ladspa=0.2.0 dssi=0.1.3 lilv=0.1.0 tsdl=v0.9.8 tsdl_ttf=0 tsdl_image=0 camlimages=4.2.6 cohttp-lwt-unix=2.5.5 prometheus-app=1.1 srt.constants=0.2.0 srt.types=0.2.0 srt.stubs=0.2.0 srt.stubs.locked=0.2.0 srt=0.2.0 lo=0.2.0 gd=1.0a5
2021/07/31 13:35:25 [main:3]
2021/07/31 13:35:25 [main:3] DISCLAIMER: This version of Liquidsoap has been
2021/07/31 13:35:25 [main:3] compiled from a snapshot of the development code.
2021/07/31 13:35:25 [main:3] As such, it should not be used in production
2021/07/31 13:35:25 [main:3] unless you know what you are doing!
2021/07/31 13:35:25 [main:3]
2021/07/31 13:35:25 [main:3] We are, however, very interested in any feedback
2021/07/31 13:35:25 [main:3] about our development code and committed to fix
2021/07/31 13:35:25 [main:3] issues as soon as possible.
2021/07/31 13:35:25 [main:3]
2021/07/31 13:35:25 [main:3] If you are interested in collaborating to
2021/07/31 13:35:25 [main:3] the development of Liquidsoap, feel free to
2021/07/31 13:35:25 [main:3] drop us a mail at <savonet-devl@lists.sf.net>
2021/07/31 13:35:25 [main:3] or to join the slack chat at <http://slack.liquidsoap.info>.
2021/07/31 13:35:25 [main:3]
2021/07/31 13:35:25 [main:3] Please send any bug report or feature request
2021/07/31 13:35:25 [main:3] at <https://github.com/savonet/liquidsoap/issues>.
2021/07/31 13:35:25 [main:3]
2021/07/31 13:35:25 [main:3] We hope you enjoy this snapshot build of Liquidsoap!
2021/07/31 13:35:25 [main:3]
2021/07/31 13:35:26 [gstreamer.loader:3] Loaded GStreamer 1.18.4 0
2021/07/31 13:35:26 [clock:3] Using builtin (low-precision) implementation for latency control
2021/07/31 13:35:28 [playlist_0:4] Reloading playlist.
2021/07/31 13:35:29 [frame:4] frame.audio.samplerate set to: 48000
2021/07/31 13:35:29 [frame:4] frame.video.framerate set to: 25
2021/07/31 13:35:29 [frame:4] frame.audio.channels set to: 2
2021/07/31 13:35:29 [frame:4] frame.video.default set to: false
2021/07/31 13:35:29 [frame:4] frame.midi.channels set to: 0
2021/07/31 13:35:29 [frame:4] frame.video.width set to: 1280
2021/07/31 13:35:29 [frame:4] frame.video.height set to: 720
2021/07/31 13:35:29 [frame:4] frame.audio.samplerate set to: 48000
2021/07/31 13:35:29 [frame:3] Using 48000Hz audio, 25Hz video, 48000Hz main.
2021/07/31 13:35:29 [frame:3] Video frame size set to: 1280x720
2021/07/31 13:35:29 [frame:3] Frame size must be a multiple of 1920 ticks = 1920 audio samples = 1 video samples.
2021/07/31 13:35:29 [frame:3] Targeting 'frame.duration': 0.04s = 1920 audio samples = 1920 ticks.
2021/07/31 13:35:29 [frame:3] Frames last 0.04s = 1920 audio samples = 1 video samples = 1920 ticks.
2021/07/31 13:35:29 [sandbox:3] Sandboxing disabled
2021/07/31 13:35:29 [video.converter:3] Using preferred video converter: ffmpeg.
2021/07/31 13:35:29 [audio.converter:3] Using samplerate converter: ffmpeg.
2021/07/31 13:35:29 [gstreamer:4] Starting gstreamer event loop
2021/07/31 13:35:29 [threads:4] Created thread "gstreamer_main_loop" (1 total).
2021/07/31 13:35:29 [clock:4] Currently 3 clocks allocated.
2021/07/31 13:35:29 [clock.main:4] Starting 1 sources...
2021/07/31 13:35:29 [source:4] Source output.icecast_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [LS2_Test:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [source:4] Source switch_1 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [source:4] Source crossfade_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [crossfade_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [source:4] Source switch_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [source:4] Source override gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [override:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [source:4] Source amplify_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [amplify_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [source:4] Source cue_cut_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [cue_cut_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [source:4] Source playlist_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [playlist_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [source:4] Source single_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [single_0:3] "/home/john/src/radio/fault.mka" is static, resolving once for all...
2021/07/31 13:35:29 [decoder:4] Available decoders: FFMPEG (priority: 10)
2021/07/31 13:35:29 [decoder.ffmpeg:4] ffmpeg recognizes "/home/john/src/radio/fault.mka" as: audio: {codec: flac, 44100Hz, 2 channel(s)} and content-type: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [decoder:4] Selected decoder FFMPEG for file "/home/john/src/radio/fault.mka" with expected kind {audio=pcm(stereo),video=none,midi=none} and detected content {audio=pcm(stereo),video=none,midi=none}
2021/07/31 13:35:29 [single_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [single_0:3] Prepared "/home/john/src/radio/fault.mka" (RID 0).
2021/07/31 13:35:29 [LS2_Test:3] Starting process
2021/07/31 13:35:29 [LS2_Test:3] Connecting mount test.aac for source@127.0.0.1...
2021/07/31 13:35:29 [LS2_Test:3] Connection setup was successful.
2021/07/31 13:35:29 [threads:4] Created thread "clock_main" (2 total).
2021/07/31 13:35:29 [clock:4] Main phase starts.
2021/07/31 13:35:29 [threads:4] Created thread "generic queue #1" (1 total).
2021/07/31 13:35:29 [threads:4] Created thread "generic queue #2" (2 total).
2021/07/31 13:35:29 [threads:4] Created thread "non-blocking queue #1" (3 total).
2021/07/31 13:35:29 [threads:4] Created thread "non-blocking queue #2" (4 total).
2021/07/31 13:35:29 [clock.main:3] Streaming loop starts in auto-sync mode
2021/07/31 13:35:29 [clock.main:3] Delegating synchronisation to CPU clock
2021/07/31 13:35:29 [switch_1:3] Switch to single_0.
2021/07/31 13:35:29 [decoder:4] Available decoders: FFMPEG (priority: 10)
2021/07/31 13:35:29 [decoder.ffmpeg:4] ffmpeg recognizes "/home/john/src/radio/mez3/Minority-531593041.02a05bf5b0f7f6d5b053efc2912f945f.mka" as: audio: {codec: mp3, 44100Hz, 2 channel(s)} and content-type: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [decoder:4] Selected decoder FFMPEG for file "/home/john/src/radio/mez3/Minority-531593041.02a05bf5b0f7f6d5b053efc2912f945f.mka" with expected kind {audio=pcm(stereo),video=none,midi=none} and detected content {audio=pcm(stereo),video=none,midi=none}
2021/07/31 13:35:29 [playlist_0:4] Remaining: 0.0s, queued: 0.0s, adding: 218.6s (RID 2)
2021/07/31 13:35:29 [playlist_0:4] Remaining: 0.0s, queued: 218.6s, taking: 218.6s
2021/07/31 13:35:29 [playlist_0:3] Prepared "/home/john/src/radio/mez3/Minority-531593041.02a05bf5b0f7f6d5b053efc2912f945f.mka" (RID 2).
2021/07/31 13:35:29 [switch_1:3] Switch to crossfade_0 with transition.
2021/07/31 13:35:29 [source:4] Source sequence_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [source:4] Source max_duration_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:29 [crossfade_0:4] Buffering end of track...
2021/07/31 13:35:29 [switch_0:3] Switch to amplify_0.
2021/07/31 13:35:29 [cue_cut_0:4] Cue points : none / none
2021/07/31 13:35:29 [cue_cut_0:3] Cueing in...
2021/07/31 13:35:29 [amplify_0:4] Overriding amplification: 0.291743.
2021/07/31 13:35:29 [crossfade_0:4] Setting crossfade duration to 4.49s
2021/07/31 13:35:30 [crossfade_0:4] More buffering will be needed.
2021/07/31 13:35:34 [source:4] Source fail_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:35:34 [fail_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
[mp3float @ 0x7f2e1810ccc0] Could not update timestamps for discarded samples.
2021/07/31 13:39:03 [decoder:4] Decoding "/home/john/src/radio/mez3/Minority-531593041.02a05bf5b0f7f6d5b053efc2912f945f.mka" ended: Ffmpeg_decoder.End_of_file.
2021/07/31 13:39:03 [decoder:4] Raised at Ffmpeg_decoder.mk_decoder.(fun).f in file "decoder/ffmpeg_decoder.ml", line 275, characters 12-29
2021/07/31 13:39:03 [decoder:4] Called from Decoder.mk_decoder.fill in file "decoder/decoder.ml", line 488, characters 10-31
2021/07/31 13:39:03 [decoder:4]
2021/07/31 13:39:03 [playlist_0:4] Finished with "/home/john/src/radio/mez3/Minority-531593041.02a05bf5b0f7f6d5b053efc2912f945f.mka".
2021/07/31 13:39:03 [amplify_0:4] End of the current overriding.
2021/07/31 13:39:03 [decoder:4] Available decoders: FFMPEG (priority: 10)
2021/07/31 13:39:03 [crossfade_0:3] Analysis: -107.295142dB / -nandB (4.44s / 0.00s)
2021/07/31 13:39:03 [crossfade_0:4] Before: ("kind", "{audio=pcm(stereo),video=none,midi=none}")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("artist", "Minority")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("decoder", "FFMPEG")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("missingmetadataversion", "0.2")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("liq_cross_duration", "4.490")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("liq_cue_in", "0.000")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("filename", "/home/john/src/radio/mez3/Minority-531593041.02a05bf5b0f7f6d5b053efc2912f945f.mka")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("temporary", "false")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("source", "playlist_0")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("initial_uri", "annotate:liq_cue_in=\"0.000\",liq_cross_duration=\"4.490\",duration=\"218.590\",liq_amplify=\"-10.700dB\":/home/john/src/radio/mez3/Minority-531593041.02a05bf5b0f7f6d5b053efc2912f945f.mka")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("encoder", "Lavf58.67.100")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("status", "playing")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("on_air", "2021/07/31 13:35:29")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("rid", "2")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("duration", "218.590")
2021/07/31 13:39:03 [crossfade_0:4] Before: ("liq_amplify", "-10.700dB")
2021/07/31 13:39:03 [crossfade_0:3] Simple transition: crossed, fade-in, fade-out.
2021/07/31 13:39:03 [source:4] Source add_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [add_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [source:4] Source fade.in gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [fade.in:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [source:4] Source fade.in gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [fade.in:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [source:4] Source crossfade_0_after gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [crossfade_0_after:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [source:4] Source buffer_1 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [buffer_1:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [source:4] Source fade.out gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [fade.out:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [source:4] Source fade.out gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [fade.out:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [source:4] Source on_end_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [on_end_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [source:4] Source crossfade_0_before gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [crossfade_0_before:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [source:4] Source buffer_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [buffer_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [decoder.ffmpeg:4] ffmpeg recognizes "/home/john/src/radio/mez3/04 - Donato e Seu Trio - So danco o samba.6cc0e0c221c6b21fe8e4af467179da09.mka" as: audio: {codec: mp3, 44100Hz, 2 channel(s)} and content-type: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:39:03 [decoder:4] Selected decoder FFMPEG for file "/home/john/src/radio/mez3/04 - Donato e Seu Trio - So danco o samba.6cc0e0c221c6b21fe8e4af467179da09.mka" with expected kind {audio=pcm(stereo),video=none,midi=none} and detected content {audio=pcm(stereo),video=none,midi=none}
2021/07/31 13:39:03 [playlist_0:4] Remaining: 0.0s, queued: 0.0s, adding: 124.0s (RID 3)
2021/07/31 13:39:08 [buffer_0:4] Buffer emptied, buffering needed.
2021/07/31 13:39:08 [crossfade_0_before:4] Fading out with 0.s remaining.
2021/07/31 13:39:08 [playlist_0:4] Remaining: 0.0s, queued: 124.0s, taking: 124.0s
2021/07/31 13:39:08 [playlist_0:3] Prepared "/home/john/src/radio/mez3/04 - Donato e Seu Trio - So danco o samba.6cc0e0c221c6b21fe8e4af467179da09.mka" (RID 3).
2021/07/31 13:39:08 [crossfade_0:4] Buffering end of track...
2021/07/31 13:39:08 [switch_0:3] Switch to amplify_0.
2021/07/31 13:39:08 [cue_cut_0:4] Cue points : none / none
2021/07/31 13:39:08 [cue_cut_0:3] Cueing in...
2021/07/31 13:39:08 [amplify_0:4] Overriding amplification: 0.295121.
2021/07/31 13:39:08 [crossfade_0:4] Setting crossfade duration to 2.82s
2021/07/31 13:39:08 [crossfade_0:4] More buffering will be needed.
[mp3float @ 0x7f2e191d8b40] Could not update timestamps for discarded samples.
2021/07/31 13:41:08 [decoder:4] Decoding "/home/john/src/radio/mez3/04 - Donato e Seu Trio - So danco o samba.6cc0e0c221c6b21fe8e4af467179da09.mka" ended: Ffmpeg_decoder.End_of_file.
2021/07/31 13:41:08 [decoder:4] Raised at Ffmpeg_decoder.mk_decoder.(fun).f in file "decoder/ffmpeg_decoder.ml", line 275, characters 12-29
2021/07/31 13:41:08 [decoder:4] Called from Decoder.mk_decoder.fill in file "decoder/decoder.ml", line 488, characters 10-31
2021/07/31 13:41:08 [decoder:4]
2021/07/31 13:41:09 [playlist_0:4] Finished with "/home/john/src/radio/mez3/04 - Donato e Seu Trio - So danco o samba.6cc0e0c221c6b21fe8e4af467179da09.mka".
2021/07/31 13:41:09 [amplify_0:4] End of the current overriding.
2021/07/31 13:41:09 [crossfade_0:3] Analysis: -82.799226dB / -nandB (2.80s / 0.00s)
2021/07/31 13:41:09 [crossfade_0:4] Before: ("album", "CD1 - Bossa Nova, Sua Hisoria, Sua Gente")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("track", "04")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("date", "1975")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("kind", "{audio=pcm(stereo),video=none,midi=none}")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("artist", "Donato e Seu Trio")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("decoder", "FFMPEG")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("liq_cross_duration", "2.820")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("title", "So dan\195\167o o samba")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("liq_cue_in", "0.000")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("filename", "/home/john/src/radio/mez3/04 - Donato e Seu Trio - So danco o samba.6cc0e0c221c6b21fe8e4af467179da09.mka")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("temporary", "false")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("source", "playlist_0")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("initial_uri", "annotate:liq_cue_in=\"0.000\",liq_cross_duration=\"2.820\",duration=\"124.020\",liq_amplify=\"-10.600dB\":/home/john/src/radio/mez3/04 - Donato e Seu Trio - So danco o samba.6cc0e0c221c6b21fe8e4af467179da09.mka")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("encoder", "Lavf58.49.100")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("status", "playing")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("tbpm", "99.95")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("on_air", "2021/07/31 13:39:08")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("tracktotal", "18")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("rid", "3")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("genre", "MPB")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("comment", "EAC V1.0 beta 3, Secure Mode, Test & Copy, AccurateRip, FLAC -8")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("duration", "124.020")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("album_artist", "Various Artists")
2021/07/31 13:41:09 [crossfade_0:4] Before: ("liq_amplify", "-10.600dB")
2021/07/31 13:41:09 [crossfade_0:3] Simple transition: crossed, fade-in, fade-out.
2021/07/31 13:41:09 [decoder:4] Available decoders: FFMPEG (priority: 10)
2021/07/31 13:41:09 [source:4] Source add_1 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [add_1:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [source:4] Source fade.in gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [fade.in:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [source:4] Source fade.in gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [fade.in:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [source:4] Source crossfade_0_after gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [crossfade_0_after:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [source:4] Source buffer_3 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [buffer_3:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [source:4] Source fade.out gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [fade.out:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [source:4] Source fade.out gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [fade.out:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [source:4] Source on_end_1 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [on_end_1:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [source:4] Source crossfade_0_before gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [crossfade_0_before:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [source:4] Source buffer_2 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [buffer_2:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [decoder.ffmpeg:4] ffmpeg recognizes "/home/john/src/radio/mez3/04 - Azymuth - Rosalie.2005c97133c82aa5e46a7653e4553c37.mka" as: audio: {codec: flac, 44100Hz, 2 channel(s)} and content-type: {audio=pcm(stereo),video=none,midi=none}.
2021/07/31 13:41:09 [decoder:4] Selected decoder FFMPEG for file "/home/john/src/radio/mez3/04 - Azymuth - Rosalie.2005c97133c82aa5e46a7653e4553c37.mka" with expected kind {audio=pcm(stereo),video=none,midi=none} and detected content {audio=pcm(stereo),video=none,midi=none}
2021/07/31 13:41:09 [playlist_0:4] Remaining: 0.0s, queued: 0.0s, adding: 251.9s (RID 4)
2021/07/31 13:41:12 [buffer_2:4] Buffer emptied, buffering needed.
2021/07/31 13:41:12 [crossfade_0_before:4] Fading out with 0.s remaining.
2021/07/31 13:41:12 [playlist_0:4] Remaining: 0.0s, queued: 251.9s, taking: 251.9s
2021/07/31 13:41:12 [playlist_0:3] Prepared "/home/john/src/radio/mez3/04 - Azymuth - Rosalie.2005c97133c82aa5e46a7653e4553c37.mka" (RID 4).
2021/07/31 13:41:12 [crossfade_0:4] Buffering end of track...
2021/07/31 13:41:12 [switch_0:3] Switch to amplify_0.
2021/07/31 13:41:12 [cue_cut_0:4] Cue points : none / none
2021/07/31 13:41:12 [cue_cut_0:3] Cueing in...
2021/07/31 13:41:12 [amplify_0:4] Overriding amplification: 0.426580.
2021/07/31 13:41:12 [crossfade_0:4] Setting crossfade duration to 4.53s
2021/07/31 13:41:12 [crossfade_0:4] More buffering will be needed.
Thanks for this report, looking at it right now.
I think I've got a handle of this issue. There are a couple of dynamic things at play.
The source is the issue seems to be that the playlist does not seem to have a new track ready when then old track ends. This is probably due to a change in playlist loading dynamic that I need to investigate. We've had a goal of simplifying how playlists queue requests for a while, perhaps it is time to change it. This is why you see: Analysis: -82.799226dB / -nandB (2.80s / 0.00s)
and, so, the new track is not considered in the transition.
I'm going to investigate the issue on the playlists. For documentation sake, here's a script to reproduce the issue:
s = single("/path/to/file.mp3")
s = chop(every=20., s)
s = delay(2., s)
s = crossfade(s)
'Chop' and 'delay' — gosh, that's useful for checking any custom transitions I may end up writing when more confident (reading the Liquidsoap 2.0 book just now).
@Warblefly would you be able to test with the use-requests-for-length
branch? This should fix your issue.
Thank you for checking this. Going to do so now.
Sounds great to me! Thanks. Noted that playlist parameter "length" seems now to be an integer governing something to do with how many items in advance are processed? Not sure but have dropped it for now.
Having to do something else while listening and watching log but it's working, and so is the request.queue, and crossfades are sounding fine.
Can report more fine-grained stuff later. But I'm grateful to you for looking into this, and for being able to watch, now, how version 2 is progressing.
More later. JW
Great, thanks for testing. Yes, with this PR I am changing the semantics on how request-based sources are filling up their queue by simply saying "I want length
requests queued in advance". That's why length
is now an integer. I believe that this how it should have always been.
Here's a log to after the first cross-fade, followed by the script, just in case they're useful to you.
2021/08/04 13:20:25 >>> LOG START
2021/08/04 13:20:22 [main:3] Liquidsoap 2.0.0+git@880905a7
2021/08/04 13:20:22 [main:3] Using: graphics=5.1.2 bytes=[distributed with OCaml 4.02 or above] pcre=7.4.6 sedlex=2.3 menhirLib=20210419 curl=0.9.1 dtools=0.4.4 duppy=0.9.2 cry=0.6.5 mm=0.7.1 xmlplaylist=0.1.5 lastfm=0.3.3 ogg=0.7.0 ogg.decoder=0.7.0 vorbis=0.8.0 vorbis.decoder=0.8.0 opus=0.2.0 opus.decoder=0.2.0 speex=0.4.0 speex.decoder=0.4.0 mad=0.5.0 flac=0.3.0 flac.ogg=0.3.0 flac.decoder=0.3.0 dynlink=[distributed with Ocaml] lame=0.3.4 gstreamer=0.3.1 frei0r=0.1.2 fdkaac=0.3.2 theora=0.4.0 theora.decoder=0.4.0 ffmpeg-avutil=97c1fc4 ffmpeg-avcodec=97c1fc4 ffmpeg-avdevice=97c1fc4 ffmpeg-av=97c1fc4 ffmpeg-avfilter=97c1fc4 ffmpeg-swresample=97c1fc4 ffmpeg-swscale=97c1fc4 bjack=0.1.6 alsa=0.3.0 ao=0.2.3 samplerate=0.1.5 taglib=0.3.6 ssl=0.5.9 magic=0.7.3 camomile=1.0.2 inotify=2.3 yojson=1.7.0 faad=0.5.0 soundtouch=0.1.9 portaudio=0.2.2 pulseaudio=0.1.4 ladspa=0.2.0 dssi=0.1.3 lilv=0.1.0 tsdl=v0.9.8 tsdl_ttf=0 tsdl_image=0 camlimages=4.2.6 cohttp-lwt-unix=2.5.5 prometheus-app=1.1 srt.constants=0.2.0 srt.types=0.2.0 srt.stubs=0.2.0 srt.stubs.locked=0.2.0 srt=0.2.0 lo=0.2.0 gd=1.0a5
2021/08/04 13:20:22 [main:3]
2021/08/04 13:20:22 [main:3] DISCLAIMER: This version of Liquidsoap has been
2021/08/04 13:20:22 [main:3] compiled from a snapshot of the development code.
2021/08/04 13:20:22 [main:3] As such, it should not be used in production
2021/08/04 13:20:22 [main:3] unless you know what you are doing!
2021/08/04 13:20:22 [main:3]
2021/08/04 13:20:22 [main:3] We are, however, very interested in any feedback
2021/08/04 13:20:22 [main:3] about our development code and committed to fix
2021/08/04 13:20:22 [main:3] issues as soon as possible.
2021/08/04 13:20:22 [main:3]
2021/08/04 13:20:22 [main:3] If you are interested in collaborating to
2021/08/04 13:20:22 [main:3] the development of Liquidsoap, feel free to
2021/08/04 13:20:22 [main:3] drop us a mail at <savonet-devl@lists.sf.net>
2021/08/04 13:20:22 [main:3] or to join the slack chat at <http://slack.liquidsoap.info>.
2021/08/04 13:20:22 [main:3]
2021/08/04 13:20:22 [main:3] Please send any bug report or feature request
2021/08/04 13:20:22 [main:3] at <https://github.com/savonet/liquidsoap/issues>.
2021/08/04 13:20:22 [main:3]
2021/08/04 13:20:22 [main:3] We hope you enjoy this snapshot build of Liquidsoap!
2021/08/04 13:20:22 [main:3]
2021/08/04 13:20:22 [gstreamer.loader:3] Loaded GStreamer 1.18.4 0
2021/08/04 13:20:22 [clock:3] Using builtin (low-precision) implementation for latency control
2021/08/04 13:20:24 [playlist_0:4] Reloading playlist.
2021/08/04 13:20:24 [frame:4] frame.audio.samplerate set to: 48000
2021/08/04 13:20:24 [frame:4] frame.video.framerate set to: 25
2021/08/04 13:20:24 [frame:4] frame.audio.channels set to: 2
2021/08/04 13:20:24 [frame:4] frame.video.default set to: false
2021/08/04 13:20:24 [frame:4] frame.midi.channels set to: 0
2021/08/04 13:20:24 [frame:4] frame.video.width set to: 1280
2021/08/04 13:20:24 [frame:4] frame.video.height set to: 720
2021/08/04 13:20:24 [frame:4] frame.audio.samplerate set to: 48000
2021/08/04 13:20:24 [frame:3] Using 48000Hz audio, 25Hz video, 48000Hz main.
2021/08/04 13:20:24 [frame:3] Video frame size set to: 1280x720
2021/08/04 13:20:24 [frame:3] Frame size must be a multiple of 1920 ticks = 1920 audio samples = 1 video samples.
2021/08/04 13:20:24 [frame:3] Targeting 'frame.duration': 0.04s = 1920 audio samples = 1920 ticks.
2021/08/04 13:20:24 [frame:3] Frames last 0.04s = 1920 audio samples = 1 video samples = 1920 ticks.
2021/08/04 13:20:25 [sandbox:3] Sandboxing disabled
2021/08/04 13:20:25 [video.converter:3] Using preferred video converter: ffmpeg.
2021/08/04 13:20:25 [audio.converter:3] Using samplerate converter: ffmpeg.
2021/08/04 13:20:25 [gstreamer:4] Starting gstreamer event loop
2021/08/04 13:20:25 [threads:4] Created thread "gstreamer_main_loop" (1 total).
2021/08/04 13:20:25 [clock:4] Currently 3 clocks allocated.
2021/08/04 13:20:25 [clock.main:4] Starting 1 sources...
2021/08/04 13:20:25 [source:4] Source output.icecast_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [LS2_Test:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [source:4] Source switch_1 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [source:4] Source crossfade_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [crossfade_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [source:4] Source switch_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [source:4] Source override gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [override:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [source:4] Source amplify_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [amplify_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [source:4] Source cue_cut_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [cue_cut_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [source:4] Source playlist_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [playlist_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [source:4] Source single_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [single_0:3] "/home/john/src/radio/fault.mka" is static, resolving once for all...
2021/08/04 13:20:25 [decoder:4] Available decoders: FFMPEG (priority: 10)
2021/08/04 13:20:25 [decoder.ffmpeg:4] ffmpeg recognizes "/home/john/src/radio/fault.mka" as: audio: {codec: flac, 44100Hz, 2 channel(s)} and content-type: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [decoder:4] Selected decoder FFMPEG for file "/home/john/src/radio/fault.mka" with expected kind {audio=pcm(stereo),video=none,midi=none} and detected content {audio=pcm(stereo),video=none,midi=none}
2021/08/04 13:20:25 [single_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [single_0:3] Prepared "/home/john/src/radio/fault.mka" (RID 0).
2021/08/04 13:20:25 [LS2_Test:3] Starting process
2021/08/04 13:20:25 [LS2_Test:3] Connecting mount test.aac for source@127.0.0.1...
2021/08/04 13:20:25 [LS2_Test:3] Connection setup was successful.
2021/08/04 13:20:25 [threads:4] Created thread "clock_main" (2 total).
2021/08/04 13:20:25 [clock:4] Main phase starts.
2021/08/04 13:20:25 [threads:4] Created thread "generic queue #1" (1 total).
2021/08/04 13:20:25 [threads:4] Created thread "generic queue #2" (2 total).
2021/08/04 13:20:25 [threads:4] Created thread "non-blocking queue #1" (3 total).
2021/08/04 13:20:25 [threads:4] Created thread "non-blocking queue #2" (4 total).
2021/08/04 13:20:25 [clock.main:3] Streaming loop starts in auto-sync mode
2021/08/04 13:20:25 [clock.main:3] Delegating synchronisation to CPU clock
2021/08/04 13:20:25 [switch_1:3] Switch to single_0.
2021/08/04 13:20:25 [decoder:4] Available decoders: FFMPEG (priority: 10)
2021/08/04 13:20:25 [decoder.ffmpeg:4] ffmpeg recognizes "/home/john/src/radio/mez3/01 Main Title (Big Beautiful Ball).719b5731c31870d96a7f2ce19d312ede.mka" as: audio: {codec: mp3, 44100Hz, 2 channel(s)} and content-type: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [decoder:4] Selected decoder FFMPEG for file "/home/john/src/radio/mez3/01 Main Title (Big Beautiful Ball).719b5731c31870d96a7f2ce19d312ede.mka" with expected kind {audio=pcm(stereo),video=none,midi=none} and detected content {audio=pcm(stereo),video=none,midi=none}
2021/08/04 13:20:25 [playlist_0:4] Queued 1 requests
2021/08/04 13:20:25 [playlist_0:4] Remaining 0 requests
2021/08/04 13:20:25 [playlist_0:3] Prepared "/home/john/src/radio/mez3/01 Main Title (Big Beautiful Ball).719b5731c31870d96a7f2ce19d312ede.mka" (RID 2).
2021/08/04 13:20:25 [switch_1:3] Switch to crossfade_0 with transition.
2021/08/04 13:20:25 [source:4] Source sequence_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [source:4] Source max_duration_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [crossfade_0:4] Buffering end of track...
2021/08/04 13:20:25 [switch_0:3] Switch to amplify_0.
2021/08/04 13:20:25 [cue_cut_0:4] Cue points : none / none
2021/08/04 13:20:25 [cue_cut_0:3] Cueing in...
2021/08/04 13:20:25 [decoder:4] Available decoders: FFMPEG (priority: 10)
2021/08/04 13:20:25 [decoder.ffmpeg:4] ffmpeg recognizes "/home/john/src/radio/mez3/Brooks Prumo Orchestra - The Last Jump (A Jump To End All Jumps - Silver Shadows)-3468829752.3d4cd2c72f089c332592e87d7bd84fc4.mka" as: audio: {codec: mp3, 44100Hz, 2 channel(s)} and content-type: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [amplify_0:4] Overriding amplification: 0.426580.
2021/08/04 13:20:25 [crossfade_0:4] Setting crossfade duration to 6.98s
2021/08/04 13:20:25 [decoder:4] Selected decoder FFMPEG for file "/home/john/src/radio/mez3/Brooks Prumo Orchestra - The Last Jump (A Jump To End All Jumps - Silver Shadows)-3468829752.3d4cd2c72f089c332592e87d7bd84fc4.mka" with expected kind {audio=pcm(stereo),video=none,midi=none} and detected content {audio=pcm(stereo),video=none,midi=none}
2021/08/04 13:20:25 [playlist_0:4] Queued 1 requests
2021/08/04 13:20:25 [decoder:4] Available decoders: FFMPEG (priority: 10)
2021/08/04 13:20:25 [decoder.ffmpeg:4] ffmpeg recognizes "/home/john/src/radio/mez3/01 Six To One Bar.4226846609f44a4772ece6339f4d9f34.mka" as: audio: {codec: mp3, 44100Hz, 2 channel(s)} and content-type: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:25 [decoder:4] Selected decoder FFMPEG for file "/home/john/src/radio/mez3/01 Six To One Bar.4226846609f44a4772ece6339f4d9f34.mka" with expected kind {audio=pcm(stereo),video=none,midi=none} and detected content {audio=pcm(stereo),video=none,midi=none}
2021/08/04 13:20:25 [playlist_0:4] Queued 2 requests
2021/08/04 13:20:26 [crossfade_0:4] More buffering will be needed.
2021/08/04 13:20:30 [source:4] Source fail_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:20:30 [fail_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:16 [decoder:4] Decoding "/home/john/src/radio/mez3/01 Main Title (Big Beautiful Ball).719b5731c31870d96a7f2ce19d312ede.mka" ended: Ffmpeg_decoder.End_of_file.
2021/08/04 13:23:16 [decoder:4] Raised at Ffmpeg_decoder.mk_decoder.(fun).f in file "decoder/ffmpeg_decoder.ml", line 582, characters 12-29
2021/08/04 13:23:16 [decoder:4] Called from Decoder.mk_decoder.fill in file "decoder/decoder.ml", line 488, characters 10-31
2021/08/04 13:23:16 [decoder:4]
2021/08/04 13:23:16 [playlist_0:4] Finished with "/home/john/src/radio/mez3/01 Main Title (Big Beautiful Ball).719b5731c31870d96a7f2ce19d312ede.mka".
2021/08/04 13:23:16 [amplify_0:4] End of the current overriding.
2021/08/04 13:23:16 [playlist_0:4] Remaining 1 requests
2021/08/04 13:23:16 [playlist_0:3] Prepared "/home/john/src/radio/mez3/Brooks Prumo Orchestra - The Last Jump (A Jump To End All Jumps - Silver Shadows)-3468829752.3d4cd2c72f089c332592e87d7bd84fc4.mka" (RID 3).
2021/08/04 13:23:17 [cue_cut_0:4] Cue points : none / none
2021/08/04 13:23:17 [cue_cut_0:3] Cueing in...
2021/08/04 13:23:17 [amplify_0:4] Overriding amplification: 0.305492.
2021/08/04 13:23:17 [crossfade_0:4] Setting crossfade duration to 2.46s
2021/08/04 13:23:17 [decoder:4] Available decoders: FFMPEG (priority: 10)
2021/08/04 13:23:17 [decoder.ffmpeg:4] ffmpeg recognizes "/home/john/src/radio/mez3/15 Leisure Complex.ad9d9565c1ca1b848fbd379fadeac254.mka" as: audio: {codec: mp3, 44100Hz, 2 channel(s)} and content-type: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [decoder:4] Selected decoder FFMPEG for file "/home/john/src/radio/mez3/15 Leisure Complex.ad9d9565c1ca1b848fbd379fadeac254.mka" with expected kind {audio=pcm(stereo),video=none,midi=none} and detected content {audio=pcm(stereo),video=none,midi=none}
2021/08/04 13:23:17 [playlist_0:4] Queued 2 requests
2021/08/04 13:23:17 [crossfade_0:3] Analysis: -nandB / -25.266075dB (6.92s / 6.92s)
2021/08/04 13:23:17 [crossfade_0:4] Before: ("album", "Not With My Wife, You Don't - Any Wednesday")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("date", "1966")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("track", "1/23")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("kind", "{audio=pcm(stereo),video=none,midi=none}")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("artist", "John Williams - George Duning")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("decoder", "FFMPEG")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("liq_cross_duration", "6.980")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("title", "Not With My Wife, You Don't - Main Title (Big Beautiful Ball)")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("liq_cue_in", "0.000")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("filename", "/home/john/src/radio/mez3/01 Main Title (Big Beautiful Ball).719b5731c31870d96a7f2ce19d312ede.mka")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("temporary", "false")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("source", "playlist_0")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("initial_uri", "annotate:liq_cue_in=\"0.000\",liq_cross_duration=\"6.980\",duration=\"178.780\",liq_amplify=\"-7.400dB\":/home/john/src/radio/mez3/01 Main Title (Big Beautiful Ball).719b5731c31870d96a7f2ce19d312ede.mka")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("encoder", "Lavf58.49.100")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("status", "playing")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("tbpm", "156.68")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("on_air", "2021/08/04 13:20:25")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("rid", "2")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("genre", "Soundtrack")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("comment", " YEAR: 1966")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("duration", "178.780")
2021/08/04 13:23:17 [crossfade_0:4] Before: ("liq_amplify", "-7.400dB")
2021/08/04 13:23:17 [crossfade_0:4] After : ("kind", "{audio=pcm(stereo),video=none,midi=none}")
2021/08/04 13:23:17 [crossfade_0:4] After : ("artist", "Brooks Prumo Orchestra - The Last Jump (a Jump To End All Jumps")
2021/08/04 13:23:17 [crossfade_0:4] After : ("decoder", "FFMPEG")
2021/08/04 13:23:17 [crossfade_0:4] After : ("missingmetadataversion", "0.2")
2021/08/04 13:23:17 [crossfade_0:4] After : ("liq_cross_duration", "2.460")
2021/08/04 13:23:17 [crossfade_0:4] After : ("title", "Silver Shadows)")
2021/08/04 13:23:17 [crossfade_0:4] After : ("liq_cue_in", "0.000")
2021/08/04 13:23:17 [crossfade_0:4] After : ("filename", "/home/john/src/radio/mez3/Brooks Prumo Orchestra - The Last Jump (A Jump To End All Jumps - Silver Shadows)-3468829752.3d4cd2c72f089c332592e87d7bd84fc4.mka")
2021/08/04 13:23:17 [crossfade_0:4] After : ("temporary", "false")
2021/08/04 13:23:17 [crossfade_0:4] After : ("source", "playlist_0")
2021/08/04 13:23:17 [crossfade_0:4] After : ("initial_uri", "annotate:liq_cue_in=\"0.000\",liq_cross_duration=\"2.460\",duration=\"194.960\",liq_amplify=\"-10.300dB\":/home/john/src/radio/mez3/Brooks Prumo Orchestra - The Last Jump (A Jump To End All Jumps - Silver Shadows)-3468829752.3d4cd2c72f089c332592e87d7bd84fc4.mka")
2021/08/04 13:23:17 [crossfade_0:4] After : ("encoder", "Lavf58.49.100")
2021/08/04 13:23:17 [crossfade_0:4] After : ("status", "playing")
2021/08/04 13:23:17 [crossfade_0:4] After : ("on_air", "2021/08/04 13:23:17")
2021/08/04 13:23:17 [crossfade_0:4] After : ("rid", "3")
2021/08/04 13:23:17 [crossfade_0:4] After : ("duration", "194.960")
2021/08/04 13:23:17 [crossfade_0:4] After : ("liq_amplify", "-10.300dB")
2021/08/04 13:23:17 [crossfade_0:3] Simple transition: crossed, fade-in, fade-out.
2021/08/04 13:23:17 [source:4] Source add_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [add_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [source:4] Source fade.in gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [fade.in:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [source:4] Source fade.in gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [fade.in:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [source:4] Source crossfade_0_after gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [crossfade_0_after:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [source:4] Source buffer_1 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [buffer_1:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [source:4] Source fade.out gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [fade.out:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [source:4] Source fade.out gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [fade.out:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [source:4] Source on_end_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [on_end_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [source:4] Source crossfade_0_before gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [crossfade_0_before:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [source:4] Source buffer_0 gets up with content kind: {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [buffer_0:4] Content type is {audio=pcm(stereo),video=none,midi=none}.
2021/08/04 13:23:17 [crossfade_0_after:4] Fading in (type: sin, duration: 0.s).
2021/08/04 13:23:23 [buffer_1:4] Buffer emptied, buffering needed.
2021/08/04 13:23:23 [buffer_0:4] Buffer emptied, buffering needed.
2021/08/04 13:23:23 [crossfade_0_before:4] Fading out with 0.s remaining.
2021/08/04 13:23:23 [crossfade_0:4] Buffering end of track...
2021/08/04 13:23:24 [crossfade_0:4] More buffering will be needed.
And now, the script which I'm going to leave running (must go shopping) on http://warblefly.sytes.net:8000/test.aac
settings.log.file.path.set("/tmp/test-radio.log")
settings.server.telnet.set(true)
settings.server.telnet.bind_addr.set("0.0.0.0")
settings.server.telnet.port.set(1235)
settings.server.timeout.set(-1.0)
settings.request.metadata_decoders.set(["FFMPEG"])
#settings.decoder.file_decoders.set(["FFMPEG"])
settings.decoder.decoders.set(["FFMPEG"])
settings.decoder.file_extensions.gstreamer.set([])
#settings.decoder.mime_types.gstreamer.set(["application/gstreamer", "video/x-matroska"])
settings.decoder.file_extensions.wav.set([])
settings.decoder.file_extensions.taglib.set([])
settings.decoder.file_extensions.ogg.set([])
settings.decoder.file_extensions.mp4.set([])
settings.decoder.file_extensions.mp3.set([])
settings.decoder.file_extensions.mad.set([])
settings.decoder.file_extensions.id3v2.set([])
settings.decoder.file_extensions.ffmpeg.set(["mka"])
settings.decoder.file_extensions.flac.set([])
settings.decoder.file_extensions.aac.set([])
settings.frame.audio.samplerate.set(48000)
security = single("/home/john/src/radio/fault.mka")
# Here's the playlist, annotated as per our Python pre-production program dictates
myplaylist = playlist(reload_mode="watch", mime_type="application/x-mpegURL", "/home/john/src/radio/bc2-30DEC2020-complete.m3u8")
# Cut off any silent starts
myplaylist = cue_cut(myplaylist)
# Amplify each track according to our own EBU R.128 volume data
myplaylist = amplify(override="liq_amplify", 1.0, myplaylist)
# Add the news
myplaylist = fallback(track_sensitive=true, transition_length=30.0, [request.queue(id="override"), myplaylist])
# Do the crossfades
myplaylist = crossfade(duration=30.0, smart=false, fade_out=0.0, fade_in=0.0, minimum=-1.0, default=(fun(a,b)->add(normalize=false,([b, a]))), conservative=true, myplaylist)
# Make it infallible
radio = fallback(track_sensitive = false, [myplaylist, security])
#Broadcast it
output.icecast(description="Test stream using Liquidsoap-2 (hifi)", genre="Freeform", name="LS2 Test", host="127.0.0.1", port=8000, mount="test.aac", public=true, url="http://warblefly.sytes.net:8000/test.aac", timeout=240.0, format="audio/aac", password="[REDACTED]", %external(samplerate=48000, channels=2, process="ffmpeg -f s16le -ar 48000 -ac 2 -i pipe:0 -acodec libfdk_aac -vbr 5 -vn -af dynaudnorm=gausssize=15:correctdc=1:altboundary=1:maxgain=12:targetrms=1.0,aresample=192000,alimiter=limit=-5dB:attack=0.1:release=50:asc=1:asc_level=1,aresample=48000 -f adts pipe:1"), radio)
Thanks! I gather that the issue is fixed with this PR @Warblefly ?
Thank you for checking. On the branch you've given me, and with the script above, some eight hours after starting the stream, with two request.queue additions each hour, it is still crossfading well, as far as my occasional checks, including now, can tell.
At first sight, therefore, yes, you've fixed it! JW
Still working flawlessly, 24 hours later.
This was fixed with a263e250e49dc24df3c6f3a17bdac613ebf32945
Following-up my earlier note (#1735), crossfading in a playlist using
liq_cross_duration
andliq_cue_in
to mark fade points and the end of start-of-track silencing works at first, but stops after a request is placed on a request queue selected byfallback
.This request queue has items pushed onto it via telnet.
And, after the first such request, all subsequent crossfades don't work. The tracks simply play right through to the end of data.
The crossfade at the end of a track (marked by
liq_cross_duration
) is not heeded when the fallback function is used as below. The track fully finishes, to the end of its data.myplaylist
is the playing playlist;override
is the queue onto which items are pushed by the expect/telnet combination.But the multiple errors that used to happen are gone.
Here's the log: