savonet / liquidsoap

Liquidsoap is a statically typed scripting general-purpose language with dedicated operators and backend for all thing media, streaming, file generation, automation, HTTP backend and more.
http://liquidsoap.info
GNU General Public License v2.0
1.39k stars 128 forks source link

Broken Stream on Metadata Change #3234

Closed DEBIANsince99 closed 1 year ago

DEBIANsince99 commented 1 year ago

Dear friends of Liquidsoap. I use LiquidSoap along with LibreTime in a Docker container and I have the following issue when playing external webstreams. As soon as the metadata changes in the external webstream, liquidsoap interrupts the stream.

liquidsoap_1 | 2023/07/17 09:10:34 [http:3] New metadata chunk: ? -- 1LIVE. liquidsoap_1 | 2023/07/17 09:10:36 [lang:3] timeout --signal=KILL 45 libretime-playout-notify webstream '656' '{ "title": "1LIVE", "source_url": "http://d131.rndfnk.com/ard/wdr/1live/live/mp3/128/stream.mp3?cid=01FBRZTS1K1TCD4KA2YZ1ND8X3&sid=2Sh3OEgc9hV0r532JTZJgPXx7He&token=vwBHCtmFaW63HNK0mJsvpbbbh3PN6WGRagy7_6h9aj8&tvf=7XVc8DSwchdkMTMxLnJuZGZuay5jb20"}' & liquidsoap_1 | 2023/07/17 09:10:36 [lang:3] URL now http://d131.rndfnk.com/ard/wdr/1live/live/mp3/128/stream.mp3?cid=01FBRZTS1K1TCD4KA2YZ1ND8X3&sid=2Sh3OEgc9hV0r532JTZJgPXx7He&token=vwBHCtmFaW63HNK0mJsvpbbbh3PN6WGRagy7_6h9aj8&tvf=7XVc8DSwchdkMTMxLnJuZGZuay5jb20 (change: true) liquidsoap_1 | 2023/07/17 09:10:36 [cross_9640:3] Analysis: -15.854070dB / -16.098901dB (2.97s / 2.99s) liquidsoap_1 | 2023/07/17 09:10:36 [lang:3] timeout --signal=KILL 45 libretime-playout-notify webstream '656' '{ "source_url": "http://wdr-1live-live.icecast.wdr.de/wdr/1live/live/mp3/128/stream.mp3"}' & liquidsoap_1 | 2023/07/17 09:10:36 [lang:3] URL now http://wdr-1live-live.icecast.wdr.de/wdr/1live/live/mp3/128/stream.mp3 (change: true) liquidsoap_1 | 2023/07/17 09:10:36 [lang:3] New track inside HTTP stream liquidsoap_1 | 2023/07/17 09:10:36 [lang:3] status: liquidsoap_1 | 2023/07/17 09:10:36 [lang:3] need to cross: true liquidsoap_1 | 2023/07/17 09:10:36 [lang:3] remaining 2.97376417234 sec before, inf sec after liquidsoap_1 | 2023/07/17 09:10:36 [lang:3] Using message format 0 liquidsoap_1 | 2023-07-17 09:10:37,847 | INFO | libretime_playout.notify.main:webstream:86 - Sending currently playing webstream '656' data '{ "title": "1LIVE", "source_url": "http://d131.rndfnk.com/ard/wdr/1live/live/mp3/128/stream.mp3?cid=01FBRZTS1K1TCD4KA2YZ1ND8X3&sid=2Sh3OEgc9hV0r532JTZJgPXx7He&token=vwBHCtmFaW63HNK0mJsvpbbbh3PN6WGRagy7_6h9aj8&tvf=7XVc8DSwchdkMTMxLnJuZGZuay5jb20"}' liquidsoap_1 | 2023-07-17 09:10:37,909 | INFO | libretime_playout.notify.main:webstream:86 - Sending currently playing webstream '656' data '{ "source_url": "http://wdr-1live-live.icecast.wdr.de/wdr/1live/live/mp3/128/stream.mp3"}' liquidsoap_1 | 2023/07/17 09:10:39 [lang:3] Using message format 0 playout_1 | 2023-07-17 09:13:33,339 | INFO | libretime_playout.player.fetch:main:332 - Queue timeout. Fetching schedule manually liquidsoap_1 | 2023/07/17 09:13:34 [server:3] New client: 172.28.0.5. playout_1 | 2023-07-17 09:13:34,059 | INFO | libretime_playout.player.file:copy_file:47 - copying file 24 to cache /app/scheduler/24.mp3 liquidsoap_1 | 2023/07/17 09:13:34 [lang:3] web_stream.get_id liquidsoap_1 | 2023/07/17 09:13:34 [server:3] Client 172.28.0.5 disconnected. liquidsoap_1 | 2023/07/17 09:13:34 [server:3] New client: 172.28.0.5. liquidsoap_1 | 2023/07/17 09:13:34 [lang:3] web_stream.set_id liquidsoap_1 | 2023/07/17 09:13:34 [lang:3] ["Done"] liquidsoap_1 | 2023/07/17 09:13:34 [lang:3] ["Done"] liquidsoap_1 | 2023/07/17 09:13:34 [server:3] Client 172.28.0.5 disconnected. liquidsoap_1 | 2023/07/17 09:13:34 [server:3] New client: 172.28.0.5. liquidsoap_1 | 2023/07/17 09:13:34 [lang:3] sources.start_schedule liquidsoap_1 | 2023/07/17 09:13:34 [lang:3] sources.start_web_stream liquidsoap_1 | 2023/07/17 09:13:34 [lang:3] timeout --signal=KILL 45 libretime-playout-notify media '586' & liquidsoap_1 | 2023/07/17 09:13:34 [server:3] Client 172.28.0.5 disconnected. playout_1 | 2023-07-17 09:13:34,088 | INFO | libretime_playout.player.fetch:cache_cleanup:255 - File '/app/scheduler/10.mp3' removed playout_1 | 2023-07-17 09:13:34,089 | INFO | libretime_playout.player.fetch:main:311 - Loop #16 liquidsoap_1 | 2023/07/17 09:13:34 [http:2] Feeding stopped: source stopped liquidsoap_1 | 2023/07/17 09:13:34 [lang:3] ["Done"] liquidsoap_1 | 2023-07-17 09:13:34,975 | INFO | libretime_playout.notify.main:media:72 - Sending currently playing media id '586' playout_1 | 2023-07-17 09:13:35,055 | INFO | libretime_playout.player.queue:main:57 - New schedule received playout_1 | 2023-07-17 09:13:35,055 | INFO | libretime_playout.player.queue:main:39 - waiting 1540.944311s until next scheduled item

vitoyucepi commented 1 year ago

Hi @DEBIANsince99, What version of Liquidsoap are you currently using? Also, if you are using the docker-compose.yaml provided by LibreTime, what version of LibreTime are you using?

I suggest asking your question on libretime's discourse forum for better productivity. Having a complete understanding of the pipeline will enable them to identify the problem's source more quickly.

DEBIANsince99 commented 1 year ago

Dear Vito, I use docker. The docker environment ist running on debian 12.0, with debian docker packages.

Because of 800+ liquidsoap zombies i modified the docker-compose.yml with 'init: true ulimits: nofile: 1024', but this did not fix the problem we are talking about, neither a version change for libretime to main an icecast to 2.5-beta3.

ghcr.io/libretime/libretime-legacy main 489006a1e0f9 5 days ago 635MB ghcr.io/libretime/libretime-api main 87fe5681ee1b 5 days ago 368MB ghcr.io/libretime/libretime-playout main 937674733e80 5 days ago 621MB ghcr.io/libretime/libretime-analyzer main d9a61d01380f 5 days ago 599MB ghcr.io/libretime/libretime-worker main ee3aedaca473 5 days ago 145MB nginx latest 021283c8eb95 13 days ago 187MB ghcr.io/libretime/icecast 2.5-beta3-alpine adfcddfc9e0c 13 days ago 20.1MB postgres 15 f0ff6ef79497 13 days ago 412MB rabbitmq 3.11-alpine 55c55e140025 2 weeks ago 145MB

Currently i think it you could be a problem of liquidsoap but i did not have a full understanding of the 'signal way' inside of liquidsoap yet. Regards Dominik

vitoyucepi commented 1 year ago

ghcr.io/libretime/libretime-playout main 937674733e80

Liquidsoap 1.4.3 from debian 11 repo LibreTime main-bd6822fec615a2329745cf18aa3039a157870d47

800+ liquidsoap zombies

This is not ok.

toots commented 1 year ago

Hi @DEBIANsince99. Unfortunately, due to limited resources, we are only able to support the current release cycle which, as of now, is 2.2.x. Feel free to try and update your script and we would be happy to revisit your issue.