Alan Fahrner
2017-03-23 22:42:28 UTC
Hi Darren and Alex,
A belated thanksâŠdidnât see all of this until now.
Darren, the issue is with sc_trans. Any pointer on where I can read-up on those issues you mention?
Alex. Right now the station is using the built-in Centova Cast AutoDJ (I only mentioned SAM Broadcaster because I know, in a similar situation, it works). It is running against the source port.
No app is running against the DJ portâŠwell, except liquidsoap. It sounds like you experienced exactly what I did.
Thanks for the script tooâŠbut I am confused. How does it ultimately get the title to the SHOUTCast server?
My best,
Alan
A belated thanksâŠdidnât see all of this until now.
Darren, the issue is with sc_trans. Any pointer on where I can read-up on those issues you mention?
Alex. Right now the station is using the built-in Centova Cast AutoDJ (I only mentioned SAM Broadcaster because I know, in a similar situation, it works). It is running against the source port.
No app is running against the DJ portâŠwell, except liquidsoap. It sounds like you experienced exactly what I did.
Thanks for the script tooâŠbut I am confused. How does it ultimately get the title to the SHOUTCast server?
My best,
Alan
Subject: Re: [Savonet-users] Broadcasting to a SHOUTCast DJ Port
Date: March 21, 2017 at 3:08:53 PM MDT
One thing to keep in mind is that Centova's DJ support is going to either be done using LS or sc_trans depending on what's been done with the initial Centova setup (which may be out of your control if using a hosted solution). If it is sc_trans then that's the likely reason why metadata updates are failing as there were issues with that. If it's LS then maybe it's an older version or there's an issue with it's configuration from how Centova have set it up that is causing it.
-dro
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________
Savonet-users mailing list
https://lists.sourceforge.net/lists/listinfo/savonet-users
Date: March 21, 2017 at 3:08:53 PM MDT
One thing to keep in mind is that Centova's DJ support is going to either be done using LS or sc_trans depending on what's been done with the initial Centova setup (which may be out of your control if using a hosted solution). If it is sc_trans then that's the likely reason why metadata updates are failing as there were issues with that. If it's LS then maybe it's an older version or there's an issue with it's configuration from how Centova have set it up that is causing it.
-dro
Also worth mentioning that if you want a source to connect to a specific Sid on a v2 server, you can use the stream specifier as part of the password to map to its corresponding sid.
password = "hackme:#1"
password = "hackme:#2"
password = "hackme:#3"
For Shoutcast v1 you do not have to specify a username, but if you still feel the need, you should use "source" as the username
username = "source", password = "hackme"
You also do not need to specify an sid with v1 dnas
But I think maybe your question was more about metadata problems?
Can you detail a little more about what roles centova, liquidsoap, sam broadcaster, and Shoutcast dnas play?
Are you looking to replace sam with liquidsoap?
Which app is running the dj port?
Which app is running the 'source port'?
Which app is sending audio data to the dj port?
Im not sure if this is still the case with newer versions of liquidsoap but I was never able to get metadata updates to work when broadcasting to a liquidsoap created dj port that liquid soap then sends on to a dnas.
I had to create a http harbor that would listen for url based get requests containing the song title updates. Then watch a log file for title updates from my source software. When it sees a title thats different from the current it will curl the url setup in the http harbor with the new title as a url parameter.
Its the same concept as sending title updates via the admin.cgi url method on dnas.
The following is a complete working example.
####################################################################
# local ip address to bind and listen for input (dj or metadata)
set("harbor.bind_addr","127.0.0.1")
# port and pass for live djs to connect to (shoutcast protocol)
live = input.harbor(icy=true,"/",port=8010,password="PASS")
# path to playlist file which contains a list of local mp3's (/home/user/mp3/song.mp3)
playlist = playlist("/home/user/mp3/playlist.txt")
# path to failover song if all above fails
emergency = single("/home/user/mp3/backup.mp3")
# do not monitor for silence and specify the fallback/priority order
radio = fallback(track_sensitive=false,[live,playlist,emergency])
# function to manually set the song title
title = insert_metadata(radio)
insert = fst(title)
radio = snd(title)
def set_meta(~protocol,~data,~headers,uri) =
title = url.split(uri)
meta = metadata.export(snd(title))
ret = if meta != [] then insert(meta) "OK!" else "No metadata to add!" end
http_response(protocol=protocol,code=200,headers=[("Content-Type","text/html")],data="#{ret}") end
# port and uri to register metadata updates via http
harbor.http.register(port=8080,method="GET","/setmeta",set_meta)
# shoutcast servers to broadcast to
output.shoutcast(%mp3(bitrate=256,samplerate=44100,stereo=true),name="RADIO NAME",genre="GENRE",host="127.0.0.1",port = 8000,password = "PASS",radio)
##################################################################################
But after reading https://github.com/savonet/liquidsoap/blob/master/CHANGES <https://github.com/savonet/liquidsoap/blob/master/CHANGES> it looks like it wont be needing the manual method too much longer =]
Cheers,
Alex
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot <http://sdm.link/slashdot>
_______________________________________________
Savonet-users mailing list
https://lists.sourceforge.net/lists/listinfo/savonet-users <https://lists.sourceforge.net/lists/listinfo/savonet-users>
------------------------------------------------------------------------------password = "hackme:#1"
password = "hackme:#2"
password = "hackme:#3"
For Shoutcast v1 you do not have to specify a username, but if you still feel the need, you should use "source" as the username
username = "source", password = "hackme"
You also do not need to specify an sid with v1 dnas
But I think maybe your question was more about metadata problems?
Can you detail a little more about what roles centova, liquidsoap, sam broadcaster, and Shoutcast dnas play?
Are you looking to replace sam with liquidsoap?
Which app is running the dj port?
Which app is running the 'source port'?
Which app is sending audio data to the dj port?
Im not sure if this is still the case with newer versions of liquidsoap but I was never able to get metadata updates to work when broadcasting to a liquidsoap created dj port that liquid soap then sends on to a dnas.
I had to create a http harbor that would listen for url based get requests containing the song title updates. Then watch a log file for title updates from my source software. When it sees a title thats different from the current it will curl the url setup in the http harbor with the new title as a url parameter.
Its the same concept as sending title updates via the admin.cgi url method on dnas.
The following is a complete working example.
####################################################################
# local ip address to bind and listen for input (dj or metadata)
set("harbor.bind_addr","127.0.0.1")
# port and pass for live djs to connect to (shoutcast protocol)
live = input.harbor(icy=true,"/",port=8010,password="PASS")
# path to playlist file which contains a list of local mp3's (/home/user/mp3/song.mp3)
playlist = playlist("/home/user/mp3/playlist.txt")
# path to failover song if all above fails
emergency = single("/home/user/mp3/backup.mp3")
# do not monitor for silence and specify the fallback/priority order
radio = fallback(track_sensitive=false,[live,playlist,emergency])
# function to manually set the song title
title = insert_metadata(radio)
insert = fst(title)
radio = snd(title)
def set_meta(~protocol,~data,~headers,uri) =
title = url.split(uri)
meta = metadata.export(snd(title))
ret = if meta != [] then insert(meta) "OK!" else "No metadata to add!" end
http_response(protocol=protocol,code=200,headers=[("Content-Type","text/html")],data="#{ret}") end
# port and uri to register metadata updates via http
harbor.http.register(port=8080,method="GET","/setmeta",set_meta)
# shoutcast servers to broadcast to
output.shoutcast(%mp3(bitrate=256,samplerate=44100,stereo=true),name="RADIO NAME",genre="GENRE",host="127.0.0.1",port = 8000,password = "PASS",radio)
##################################################################################
But after reading https://github.com/savonet/liquidsoap/blob/master/CHANGES <https://github.com/savonet/liquidsoap/blob/master/CHANGES> it looks like it wont be needing the manual method too much longer =]
Cheers,
Alex
I'm working without Centova Cast and I build my own management with
liquidsoap without any external software and there it works as I
pointed. So I guess the issue is based on the source of Centova Cast or
on the source-client itself.
BTW: liquidsoap is an v1 source, it doesn't handle the v2 protocol.
Open another port wher you can connect directly with a streaming
source-client like winamp-dsp or butt and pass meta-data, then compare
the output with your Centova Cast output in the logfiles. If should it
work, then the issue is based on the source of Centova Cast.
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot <http://sdm.link/slashdot>
_______________________________________________
Savonet-users mailing list
https://lists.sourceforge.net/lists/listinfo/savonet-users <https://lists.sourceforge.net/lists/listinfo/savonet-users>
------------------------------------------------------------------------------liquidsoap without any external software and there it works as I
pointed. So I guess the issue is based on the source of Centova Cast or
on the source-client itself.
BTW: liquidsoap is an v1 source, it doesn't handle the v2 protocol.
Open another port wher you can connect directly with a streaming
source-client like winamp-dsp or butt and pass meta-data, then compare
the output with your Centova Cast output in the logfiles. If should it
work, then the issue is based on the source of Centova Cast.
Thanks for the suggestion neralex. I gave it a shot, but it didnât
change the behavior.
I suspected it wouldnâtâŠbasically, if you donât give it the icy_id, then
it defaults to 1.
Itâs all very odd given if I connect to the source port, all is well. I
connect to the Centova Cast DJ portâŠmeta data issues.
Iâm curious, does anyone know if there is a way to force
output.shoutcast() to connect v1 versus v2? The way SAM Broadcaster
works is by connecting v1 (and the Centova Cast page says to connect
v1). But, I could not get liquidsoap to do that.
Either way, still can use help. :-)
My best,
Alan
*Subject: **Re: [Savonet-users] Broadcasting to a SHOUTCast DJ Port*
*Date: *March 19, 2017 at 5:19:12 AM MDT
Hey!
You have to set the "ic_id" parameter in the output.shoutcast function
#port and pass for djs
live =
input.harbor(icy=true,icy_metadata_charset="UTF-8","/",port=8610,password="hackme")
#fallback
emergency = single("/home/shoutcast/emergency/jingle_001.mp3")
radio = fallback(track_sensitive=false,[live,emergency])
Here is an example for an 192kbit mp3 stream, which is using the 1st
output.shoutcast(
%mp3(
bitrate=192,
samplerate=44100,
stereo=true
),
icy_id=1,
name="station name",
genre="genre",
host="127.0.0.1",
port=8000,
password="hackme",
url="http://www.domain.tld/fish" <http://www.domain.tld/fish>,
radio
)
The same way for the 2nd mountpoint (sid=2), which is used for an 96kbit
output.shoutcast(
%mp3(
bitrate=96,
samplerate=44100,
stereo=true
),
icy_id=2,
name="station name",
genre="genre",
host="127.0.0.1",
port=8000,
password="hackme",
url="http://www.domain.tld/fish" <http://www.domain.tld/fish>,
radio
)
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot <http://sdm.link/slashdot>
_______________________________________________
Savonet-users mailing list
https://lists.sourceforge.net/lists/listinfo/savonet-users <https://lists.sourceforge.net/lists/listinfo/savonet-users>
------------------------------------------------------------------------------change the behavior.
I suspected it wouldnâtâŠbasically, if you donât give it the icy_id, then
it defaults to 1.
Itâs all very odd given if I connect to the source port, all is well. I
connect to the Centova Cast DJ portâŠmeta data issues.
Iâm curious, does anyone know if there is a way to force
output.shoutcast() to connect v1 versus v2? The way SAM Broadcaster
works is by connecting v1 (and the Centova Cast page says to connect
v1). But, I could not get liquidsoap to do that.
Either way, still can use help. :-)
My best,
Alan
*Subject: **Re: [Savonet-users] Broadcasting to a SHOUTCast DJ Port*
*Date: *March 19, 2017 at 5:19:12 AM MDT
Hey!
You have to set the "ic_id" parameter in the output.shoutcast function
#port and pass for djs
live =
input.harbor(icy=true,icy_metadata_charset="UTF-8","/",port=8610,password="hackme")
#fallback
emergency = single("/home/shoutcast/emergency/jingle_001.mp3")
radio = fallback(track_sensitive=false,[live,emergency])
Here is an example for an 192kbit mp3 stream, which is using the 1st
output.shoutcast(
%mp3(
bitrate=192,
samplerate=44100,
stereo=true
),
icy_id=1,
name="station name",
genre="genre",
host="127.0.0.1",
port=8000,
password="hackme",
url="http://www.domain.tld/fish" <http://www.domain.tld/fish>,
radio
)
The same way for the 2nd mountpoint (sid=2), which is used for an 96kbit
output.shoutcast(
%mp3(
bitrate=96,
samplerate=44100,
stereo=true
),
icy_id=2,
name="station name",
genre="genre",
host="127.0.0.1",
port=8000,
password="hackme",
url="http://www.domain.tld/fish" <http://www.domain.tld/fish>,
radio
)
Hi folks,
First, Iâve been having a great time experimenting with liquidsoap.
Thanks to everyone behind this.
I am running into two issues, one especially problematic.
The problematic one is that when I connect to the Centova Cast DJ port,
the server is not getting any dataâŠand is throwing an error. From the
2017/03/18 18:11:01 [output(dot)shoutcast:3] Connecting mount sid#1 for
2017/03/18 18:11:01 [output(dot)shoutcast:3] Metadata update may have
failed with error: 404, Not Found: Weblet (HTTP/1.0)
On the SHOUTCast server side, itâs clear the end result is it got
nothing meta-wise.
Iâve searched and searched all over the place and have not seen anything
exactly like it. Iâve tried all types of things based on what sounded
* It works fine if I use the source port
* The connection on the DJ port is supposed to be SHOUTCast v1, which
means I shouldnât give a name, but provide the password as
âusername:passwordâ - that never workedâŠI finally was able to
connect providing it separately as a user and a password
* If I set icy_metadata to âfalseâ the error is no longer thrown, but
still no meta data gets the server
* If I set icy_id to 0, I cannot figure out a way to login (which is
probably fine, I had read something that made me wonder if I should
try 0)
Any ideas?
I will ask my other question in another e-mail to keep the string clean.
Thanks!
Alan
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org
<http://Slashdot.org> <http://slashdot.org/>! http://sdm.link/slashdot <http://sdm.link/slashdot>
_______________________________________________
Savonet-users mailing list
https://lists.sourceforge.net/lists/listinfo/savonet-users <https://lists.sourceforge.net/lists/listinfo/savonet-users>
------------------------------------------------------------------------------First, Iâve been having a great time experimenting with liquidsoap.
Thanks to everyone behind this.
I am running into two issues, one especially problematic.
The problematic one is that when I connect to the Centova Cast DJ port,
the server is not getting any dataâŠand is throwing an error. From the
2017/03/18 18:11:01 [output(dot)shoutcast:3] Connecting mount sid#1 for
2017/03/18 18:11:01 [output(dot)shoutcast:3] Metadata update may have
failed with error: 404, Not Found: Weblet (HTTP/1.0)
On the SHOUTCast server side, itâs clear the end result is it got
nothing meta-wise.
Iâve searched and searched all over the place and have not seen anything
exactly like it. Iâve tried all types of things based on what sounded
* It works fine if I use the source port
* The connection on the DJ port is supposed to be SHOUTCast v1, which
means I shouldnât give a name, but provide the password as
âusername:passwordâ - that never workedâŠI finally was able to
connect providing it separately as a user and a password
* If I set icy_metadata to âfalseâ the error is no longer thrown, but
still no meta data gets the server
* If I set icy_id to 0, I cannot figure out a way to login (which is
probably fine, I had read something that made me wonder if I should
try 0)
Any ideas?
I will ask my other question in another e-mail to keep the string clean.
Thanks!
Alan
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org
<http://Slashdot.org> <http://slashdot.org/>! http://sdm.link/slashdot <http://sdm.link/slashdot>
_______________________________________________
Savonet-users mailing list
https://lists.sourceforge.net/lists/listinfo/savonet-users <https://lists.sourceforge.net/lists/listinfo/savonet-users>
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot <http://sdm.link/slashdot>
_______________________________________________
Savonet-users mailing list
https://lists.sourceforge.net/lists/listinfo/savonet-users <https://lists.sourceforge.net/lists/listinfo/savonet-users>
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot <http://sdm.link/slashdot>
_______________________________________________
Savonet-users mailing list
https://lists.sourceforge.net/lists/listinfo/savonet-users <https://lists.sourceforge.net/lists/listinfo/savonet-users>
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot <http://sdm.link/slashdot>
_______________________________________________
Savonet-users mailing list
https://lists.sourceforge.net/lists/listinfo/savonet-users <https://lists.sourceforge.net/lists/listinfo/savonet-users>
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________
Savonet-users mailing list
https://lists.sourceforge.net/lists/listinfo/savonet-users