CC-2590: support multiple stream on liquidsoap

- temp commit
This commit is contained in:
james 2011-08-10 18:04:48 -04:00
parent ceea384154
commit 3dca3fd800
3 changed files with 172 additions and 77 deletions

View File

@ -6,11 +6,18 @@
# Output settings #
###########################################
output_sound_device = false
output_icecast_vorbis = true
output_icecast_mp3 = false
output_shoutcast = false
output_s1 = "icecast"
output_s2 = "icecast"
output_s3 = "shoutcast"
s1_type = "mp3"
s2_type = "ogg"
s3_type = "mp3"
#output_bitrate = 128
s1_bitrate = 64
s2_bitrate = 128
s3_bitrate = 128
#output_samplerate = 44100
#output_stereo = true
@ -23,18 +30,31 @@ log_file = "/var/log/airtime/pypo-liquidsoap/<script>.log"
###########################################
# Icecast Stream settings #
###########################################
icecast_host = "127.0.0.1"
icecast_port = 8000
icecast_pass = "hackme"
s1_host = "127.0.0.1"
s2_host = "127.0.0.1"
s3_host = "127.0.0.1"
s1_port = 8000
s2_port = 8000
s3_port = 9000
s1_pass = "hackme"
s2_pass = "hackme"
s3_pass = "testing"
# Icecast mountpoint names
mount_point_mp3 = "airtime.mp3"
mount_point_vorbis = "airtime.ogg"
s1_mount = "airtime_64.mp3"
s2_mount = "airtime_128.ogg"
s3_mount = "airtime_128.ogg"
# Webstream metadata settings
icecast_url = "http://airtime.sourcefabric.org"
icecast_description = "Airtime Radio!"
icecast_genre = "genre"
s1_url = "http://airtime.sourcefabric.org"
s2_url = "http://airtime.sourcefabric.org"
s3_url = "http://airtime.sourcefabric.org"
s1_description = "Airtime Radio!"
s2_description = "Airtime Radio!"
s3_description = "Airtime Radio!"
s1_genre = "genre"
s2_genre = "genre"
s3_genre = "genre"
# Audio stream metadata for vorbis/ogg is disabled by default
# due to a number of client media players that disconnect
@ -46,10 +66,10 @@ output_icecast_vorbis_metadata = false
###########################################
# Shoutcast Stream settings #
###########################################
shoutcast_host = "127.0.0.1"
shoutcast_port = 9000
shoutcast_pass = "testing"
#shoutcast_host = "127.0.0.1"
#shoutcast_port = 9000
#shoutcast_pass = "testing"
# Webstream metadata settings
shoutcast_url = "http://airtime.sourcefabric.org"
shoutcast_genre = "genre"
#shoutcast_url = "http://airtime.sourcefabric.org"
#shoutcast_genre = "genre"

View File

@ -36,6 +36,133 @@ def to_live(old,new) =
sequence([old,new])
end
def output_to(output_type, type, bitrate, host, port, pass, mount_point, url, description, genre, s) =
if output_type == "icecast" then
if type == "mp3" then
if bitrate == 64 then
ignore(output.icecast(%mp3(bitrate = 64),
host = host,
port = port,
password = pass,
mount = mount_point,
fallible = true,
restart = true,
restart_delay = 5,
url = url,
description = description,
genre = genre,
s)
)
elsif bitrate == 128 then
ignore(output.icecast(%mp3(bitrate = 128),
host = host,
port = port,
password = pass,
mount = mount_point,
fallible = true,
restart = true,
restart_delay = 5,
url = url,
description = description,
genre = genre,
s)
)
end
else
if bitrate == 64 then
if output_icecast_vorbis_metadata then
ignore(output.icecast(%vorbis,
host = host,
port = port,
password = pass,
mount = mount_point,
fallible = true,
restart = true,
restart_delay = 5,
url = url,
description = description,
genre = genre,
s)
)
else
s = add(normalize=false, [amplify(0.00001, noise()),s])
ignore(output.icecast(%vorbis,
host = host,
port = port,
password = pass,
mount = mount_point,
fallible = true,
restart = true,
restart_delay = 5,
url = url,
description = description,
genre = genre,
s)
)
end
elsif bitrate == 128 then
if output_icecast_vorbis_metadata then
ignore(output.icecast(%vorbis,
host = host,
port = port,
password = pass,
mount = mount_point,
fallible = true,
restart = true,
restart_delay = 5,
url = url,
description = description,
genre = genre,
s)
)
else
s = add(normalize=false, [amplify(0.00001, noise()),s])
ignore(output.icecast(%vorbis,
host = host,
port = port,
password = pass,
mount = mount_point,
fallible = true,
restart = true,
restart_delay = 5,
url = url,
description = description,
genre = genre,
s)
)
end
end
end
else
if bitrate == 64 then
ignore(output.shoutcast(%mp3(bitrate = 64),
host = host,
port = port,
password = pass,
fallible = true,
restart = true,
restart_delay = 5,
url = url,
genre = genre,
s)
)
elsif bitrate == 128 then
ignore(output.shoutcast(%mp3(bitrate = 128),
host = host,
port = port,
password = pass,
fallible = true,
restart = true,
restart_delay = 5,
url = url,
genre = genre,
s)
)
end
end
end
# Add a skip function to a source
# when it does not have one
# by default

View File

@ -56,70 +56,18 @@ if output_sound_device then
ignore(output.alsa(s))
end
if output_icecast_mp3 then
#format = %mp3(bitrate=192, samplerate=44100, stereo=false)
ignore(output.icecast(%mp3,
host = icecast_host,
port = icecast_port,
password = icecast_pass,
mount = mount_point_mp3,
fallible = true,
restart = true,
restart_delay = 5,
url = icecast_url,
description = icecast_description,
genre = icecast_genre,
s)
)
if output_s1 != "" then
#output_to(output_type, type, bitrate, host, port, pass, mount_point, url, description, genre, s)
output_to(output_s1, s1_type, s1_bitrate, s1_host, s1_port, s1_pass, s1_mount, s1_url, s1_description, s1_genre, s)
end
if output_icecast_vorbis then
if output_icecast_vorbis_metadata then
ignore(output.icecast(%vorbis,
host = icecast_host,
port = icecast_port,
password = icecast_pass,
mount = mount_point_vorbis,
fallible = true,
restart = true,
restart_delay = 5,
url = icecast_url,
description = icecast_description,
genre = icecast_genre,
s)
)
else
#remove metadata from ogg source and merge tracks to fix bug
#with vlc and mplayer disconnecting at the end of every track
s = add(normalize=false, [amplify(0.00001, noise()),s])
ignore(output.icecast(%vorbis,
host = icecast_host,
port = icecast_port,
password = icecast_pass,
mount = mount_point_vorbis,
fallible = true,
restart = true,
restart_delay = 5,
url = icecast_url,
description = icecast_description,
genre = icecast_genre,
s)
)
end
if output_s2 != "" then
#output_to(output_type, type, bitrate, host, port, pass, mount_point, url, description, genre, s)
output_to(output_s2, s2_type, s2_bitrate, s2_host, s2_port, s2_pass, s2_mount, s2_url, s2_description, s2_genre, s)
end
if output_shoutcast then
ignore(output.shoutcast(%mp3,
host = shoutcast_host,
port = shoutcast_port,
password = shoutcast_pass,
fallible = true,
restart = true,
restart_delay = 5,
url = shoutcast_url,
genre = shoutcast_genre,
s)
)
if output_s3 != "" then
#output_to(output_type, type, bitrate, host, port, pass, mount_point, url, description, genre, s)
output_to(output_s3, s3_type, s3_bitrate, s3_host, s3_port, s3_pass, s3_mount, s3_url, s3_description, s3_genre, s)
end