Hi Romain,
I solved this issue by putting default source into output.dummy.
Thank you.
On Mon, Mar 5, 2012 at 3:16 PM, James Moon <[email protected]>wrote:
> Hi Romain,
>
> Thank you for the answer.
> I'm trying out your suggestion, but as I'm doing it, I came up with
> another question.
>
> When live dj connects to one of input.harbor, liquidsoap switches and
> everthing, but when dj dissconnects,
> the default source, continues playing from the point where it got
> overridden.
>
> For example, default source was playing 4 mins track and like dj connect
> to input.harbor at 2 min mark.
> After 1 min, live dj disconnects. Liquidsoap should fall back to 3 min
> mark on the default source, but it plays from 2 min mark.
>
> What should I do so it would play from 3 min mark?
>
> Thank you.
>
>
> On Fri, Mar 2, 2012 at 10:50 PM, Romain Beauxis <[email protected]>wrote:
>
>> Hi James!
>>
>> Le 2 mars 2012 18:19, James Moon <[email protected]> a écrit :
>> > Here is what we try to achieve with liquidsoap(for now at least).
>> > We want to use two input.harbor with default stream source.
>> > Below is our code:
>> > .
>> > .
>> > .
>> > default = amplify(0.00001, noise())
>> > default = rewrite_metadata([("artist","Airtime"), ("title",
>> > "offline")],default)
>>
>> Nice idea to use low-level noise for default fallback! :-)
>>
>> > set("harbor.bind_addr", "0.0.0.0")
>> > .
>> > .
>> > .
>> > master_dj = ref default
>> > dj_live = ref default
>> >
>> > def append_master_dj_input(master_harbor_input_port,
>> > master_harbor_input_mount_point, s) =
>> > if master_harbor_input_port != 0 and
>> master_harbor_input_mount_point !=
>> > "" then
>> > master_dj := input.harbor(master_harbor_input_mount_point,
>> > port=master_harbor_input_port, auth=check_master_dj_client,
>> > buffer=7.,max=15.)
>> > fallback(track_sensitive=false, [!master_dj, s])
>> > else
>> > s
>> > end
>> > end
>> >
>> > def append_dj_input(dj_harbor_input_port, dj_harbor_input_mount_point,
>> s) =
>> > if dj_harbor_input_port != 0 and dj_harbor_input_mount_point != ""
>> then
>> > dj_live := input.harbor(dj_harbor_input_mount_point,
>> > port=dj_harbor_input_port, auth=check_dj_client, buffer=7.,max=15.)
>> > fallback(track_sensitive=false, [!dj_live, s])
>> > else
>> > s
>> > end
>> > end
>> >
>> > s = fallback(track_sensitive=false, [queue, default])
>> > s = on_metadata(notify, s)
>> > s = map_metadata(append_title, s)
>> > s = append_dj_input(dj_live_stream_port, dj_live_stream_mp, s)
>> > s = append_master_dj_input(master_live_stream_port,
>> master_live_stream_mp,
>> > s)
>> > .
>> > .
>> > .
>> > output.dummy(fallible=true, !master_dj)
>> > output.dummy(fallible=true, !dj_live)
>> >
>> >
>> > I'm doing master_dj = ref default and dj_live = ref default so I can put
>> > them into output.dummy later on.
>> > If I knew how to create a reference to 'source' object I would do that,
>> but
>> > I'm not sure. So I'm just creating dummy ref so I can use it later.
>> >
>> > Here are my problems:
>> >
>> > 1. When input stream is connected to one of the input.harbor, I'm get
>> about
>> > 3~4 secs of silence. This means LS is detecting the connection, but the
>> > source is not playing right away.
>> > I'm suspecting it's something to with buffer? How do we make it so it
>> plays
>> > as soon as it switch? or switch whenever it's ready to play.
>>
>> Yeah, you might want to play with input.harbor's buffer/max
>> paramaters. If you set buffer to a low value it should start playing
>> right away. However, in this case you might be subject to buffer
>> underruns in case of temporary network issues.
>>
>> > 2. when I restart liquidsoap, when 2 input stream is still connected, it
>> > logs crazy amount of "Buffer overrun" message in the log file. How do
>> you
>> > solve this?
>>
>> Using output.dummy to drain input.harbor is a very good idea, however,
>> you're doing it wrong here :-)
>>
>> When those lines are executed:
>>
>> output.dummy(fallible=true, !master_dj)
>> output.dummy(fallible=true, !dj_live)
>>
>> master_dj and dj_live still reference the default source so you are
>> only creating output.dummy(default) twice. This is because
>> output.dummy uses the source currenty referenced and is not updated
>> when the reference changes..
>>
>> What you should do instead is wrap output.dummy calls just after the
>> input.harbor creation, using a dummy initial output (Note: this could
>> be more elegant if there was a option type in liq, i.e. the possiblity
>> to do x = ref nul and if !x == nul..)
>>
>> Here's an example:
>>
>> master_dj_drain = ref output.dummy(default)
>>
>> def append_master_dj_input(master_harbor_input_port,
>> master_harbor_input_mount_point, s) =
>> if master_harbor_input_port != 0 and
>> master_harbor_input_mount_point != "" then
>> master_dj = input.harbor(master_harbor_input_mount_point,
>> port=master_harbor_input_port, auth=check_master_dj_client,
>> buffer=7.,max=15.)
>>
>> # Drain this new source
>> source.shutdown(!master_dj_drain)
>> master_dj_drain := output.dummy(master_dj, fallible=true)
>>
>> fallback(track_sensitive=false, [master_dj, s])
>> else
>> s
>> end
>> end
>>
>> That being said, if the append_master_dj_input function is meant to be
>> called only once then you do not have to worry about memory leaks and
>> you can do:
>>
>> def append_master_dj_input(master_harbor_input_port,
>> master_harbor_input_mount_point, s) =
>> if master_harbor_input_port != 0 and
>> master_harbor_input_mount_point != "" then
>> master_dj = input.harbor(master_harbor_input_mount_point,
>> port=master_harbor_input_port, auth=check_master_dj_client,
>> buffer=7.,max=15.)
>>
>> # Drain this new source
>> ignore(output.dummy(master_dj, fallible=true))
>>
>> fallback(track_sensitive=false, [master_dj, s])
>> else
>> s
>> end
>> end
>>
>> I've not tested the code above, but I believe it should be alright :-)
>>
>> Romain
>>
>
>
>
> --
> James Moon
> Software Developer, Sourcefabric
> [email protected]
>
> www.sourcefabric.com | *www.sourcefabric.org*
>
> 720 Bathurst St. Suite 203
> M5S 2R4, Toronto, ON, Canada
>
>
--
James Moon
Software Developer, Sourcefabric
[email protected]
www.sourcefabric.com | *www.sourcefabric.org*
720 Bathurst St. Suite 203
M5S 2R4, Toronto, ON, Canada
------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users