Hi,
We are running six streams from a single script (128, 96, 64 and 32 kbps
mp3; 64
and 32 kbps ogg - all Icecast 2.x) under LS 1.0.0.
Our IP's remote FreeBSD server is loaded with 1.5 GB RAM (currently using
225 MB
idle), 5 TB bandwidth, on a dedicated VBox with 4x64 bit cores.
Lately, we have experienced multiple restarts (five daily) on three
streams, and
two on all streams, with all individual loadings of shows suffixed with
about 1.25
sec catchups. I have attempted to isolate the problem, but have determined
it
cannot be CPU, memory, bandwidth, nor network lag.
The log error message: 'Too much latency. Resetting active sources.'
After researching the archives and reading the docs on 'clocks', I feel it
might be best to utilize 'clocks' in our somewhat complex scripts.
However, I
have no idea how or where to implement them, given that each unique daily
script
is about 2800 lines of code.
In order to implement clocks, do each of the sources need a clock, or how
do I go
about doing this?
I have provided a sample snippet of a show's code that is similar for each
show, as well as one of the current outputs:
************
# === EOD ===
a = audio_to_stereo(single("/usr/local/www/rcr/mp3/announce/EOD.mp3"))
# Fill-in Title for ID3 Tag
def fill_in(s)
# the function f takes a list of pairs m representing the metadata
# and it maps an anonymous function on each pair
# replacing empty title definitions by title=filename
def f(m)
print("\n\nFor metadata: #{m}\n\n")
m = if not list.mem_assoc("title",m) then
list.append([("title","")],m) else m end
list.map(fun (key_value) ->
if key_value==("title","") then
if m["filename"] == "/usr/local/www/rcr/mp3/announce/EOD.mp3" then
("title", "Goodbye for now - Rural Catholic Radio - from the heartland,
with
love")
elsif m["filename"] == "/usr/local/www/rcr/mp3/announce/EOD.mp3" then
("title", "Goodbye for now - Rural Catholic Radio - from the heartland,
with
love")
else ("title", "Goodbye for now - Rural Catholic Radio - from the
heartland,
with love")
end
else key_value end, m)
end
map_metadata(f,s)
end
eod = fill_in(a)
# === SWITCH SCHEDULE ===
def crossfade(a,b)
add(normalize=false,
[ fade.initial(duration=2.,b),
fade.final(duration=5.,a)
])
end
radio=mksafe(switch(transitions=[crossfade,crossfade,crossfade,crossfade,
crossfade,crossfade,crossfade,crossfade,crossfade,crossfade,crossfade,crossfade,
crossfade,crossfade,crossfade,crossfade,crossfade,crossfade,crossfade,crossfade,
crossfade,crossfade,crossfade,crossfade,crossfade,crossfade,crossfade,crossfade,
crossfade,crossfade,crossfade,crossfade,crossfade,crossfade,crossfade,crossfade,
crossfade],
track_sensitive=false,
[
.... (the day's switch schedule is here)
]
))
# == ICECAST MP3 32 OUTPUT ==
output.icecast(%mp3(bitrate=32, mono),
host="ruralcatholicradio.com",
port=8014,
password="",
mount="icmp3-32",
name="Rural Catholic Radio",
description="Classic Roman Catholic prayers, meditations, and music - 32
kbps",
genre="Christian, Catholic, Prayers, Music, Meditations, Religious",
public=true,
url="http://www.ruralcatholicradio.com:8014/icmp3-32",
mean(radio))
**********
Thanks,
kronos
--
Using Opera's revolutionary email client: http://www.opera.com/mail/
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users