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

Reply via email to