Hi Pierre,

I'm sorry for the late reply, but I finally looked into the code of
mux_audio [1] and it turns out that you guessed right: mux kills track
information. You can read a bit about it in the comment about
Symmetric mode in the ML source. There is currently no other mode
implemented.

We could cook you a mode where one source (the audio blank in your
case, let's call it auxiliary) is infallible and has irrelevant track
information, and its data is muxed on top of the stream of the other
(master) source, whose track info would be preserved. This is not as
obvious as it seems, but I cannot explain it without entering into the
details of our (slightly flawed) streaming model.

I'll give it a shot and have you test the new feature... I don't have
much time these days but I'll do my best.

Cheers,

David

[1] https://github.com/savonet/liquidsoap/blob/master/src/conversions/mux.ml

On Sat, Aug 30, 2014 at 10:44 AM, Pierre Boutillier
<[email protected]> wrote:
> Hi,
> Thanks very much to reply faster than I do !
> I’ve done extra experiments …
>
> Le 28 août 2014 à 12:12, David Baelde <[email protected]> a écrit :
>> run « make doc » from the doc subdirectory of the liquidsoap source tree, 
>> it'll
>> generate your own reference.html page.
> Great
>>
>>> 1/ my "safe" file has no sound. if I put a file with sound in the queue, it 
>>> is played but without sound. If I try to do
>>> safe=mux_audio(audio=blank(),single(…)), putting a correct request (tried 2 
>>> different) in the queue does not fail but the file is not played … do you 
>>> have clue of why ?
>>
>> My guess is that you have something like output.icecast(%theora,infinite)
> Nope, I don’t.
> Well of course I did at first but your software is better than you think and 
> complains with a type error :-).
> Nether the less, my supposition is that mux_audio never reach an end of track.
>
> My playground is
> a = single("x")
> b = single("y")
> c = single("x")
> output.icecast(%ogg(%theora,%vorbis),[…],add([blank(),rotate([a,mux_audio(audio=blank(),rotate(b,c]))])]))
>
> It plays a, c, b, c, b, c ...
>
>>
>>> 2/ If I replace live=rawlive by live=video.add_text.gstreamer(…,raw live), 
>>> I have my received external stream with some text when a stream is received 
>>> as expected but if I use live=video.add_image(…,raw live), live never fails 
>>> and I have a black screen with my logo when no external stream is received. 
>>> How could I get the behavior « image with logo if (and as long as) an image 
>>> exists » ? More generally, is there a varient of « add » that fails as soon 
>>> as one of its element fails ?
>>
>> Surprisingly, we do not provide a ready-made solution for that. I'm
>> not sure, but I think I would go with a track insensitive switch to
>> disable the second source when the first one is not ready (you can use
>> source.is_ready here). I haven't tried, please let us know if you
>> manage to make it work, otherwise I'll experiment myself.
> Yes,
> add([
> rawlive
> ,switch(track_sensitive=false,[((fun () -> 
> source.is_ready(rawlive)),mux_audio(audio=blank(),single("LogoIncrustation.png
>  »)))])
> ])
> works as I expect!
>
>>
>>> 3/ I’m sure the information is somewhere. My live stream is fragile and 
>>> liquidsoap plays very well its role to fallback. Never the less, I would 
>>> prefer that less than 3s freeze remains freeze rather than reload the « 
>>> safe » video. How could I do that ?
>>
>> That's a good question, but we don't have an answer yet. It requires
>> some hacking on the input.http() operator. I'm telling you because I
>> know you can get into our OCaml code: I'd be happy to guide you if you
>> want to try this :)
> Why not, let’s try to fix my other problems first anyway.
>>
>> Cheers,
>> --
>> David
>
>
> ------------------------------------------------------------------------------
> Slashdot TV.
> Video for Nerds.  Stuff that matters.
> http://tv.slashdot.org/
> _______________________________________________
> Savonet-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/savonet-users



-- 
David

------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce.
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users

Reply via email to