Hello!

Am 19.12.2011 21:56, schrieb David Baelde:
> Hi,
>
> It looks like we are onto something here!
>
> On Mon, Dec 19, 2011 at 8:14 PM, Pad Anius <padan...@gmail.com> wrote:
>> Do you mean that if I use something like:
>>
>> newshour = audio_to_stereo(single("http://xxx.yyy.com/newshour.mp3";))
>> radio = add([radio, switch([({0m0s},newhour)])])
>>
>> then the file newshour.mp3 will NOT be cached once, and will be downloaded
>> **every time** before it is scheduled?
> Yes, the HTTP protocol isn't marked as static, so files should be
> downloaded for each request resolution.
>
>> I am using your second option, with an external script to download files
>> before they are scheduled, and the file is replaced while liquidsoap is
>> playing (other) files. If all files must be  prepared / cached in advance by
>> liquidsoap and never refreshed/reloaded, then I understand that we have a
>> problem (a design problem in liquidsoap? can it be imporoved? ).
> If you replace files, you must absolutely make sure to not overwrite
> something that liquidsoap is currently reading. It's probably okay to
> overwrite a file that liquidsoap has prepared, if it is not already
> playing it, as long as you don't change the file format significantly.

I have experienced Ls to be very stable about this.
The news-file i use will be generated always 2 minutes in advance bevore
playout by simply overwriting the old file.
The news-file is simply linked to LS by a "single(x)" directive.
If (for any reason) the script takes to long and LS is already playing
the news-file
while it's stil written to by the script i see two behaviours:
First: LS fails the news file silently  and goes on playing music form
the queue(s); no news is heard
Second:  LS stops playout in the middle of the news-file, and goes on
playing a title from the infaillable queue and continues on..
 This worked for me so far.

> The request-based sources use a queue to avoid bad surprises, and you
have various parameters to tweak the behavior of that queue. You'll find
>documentation on that, but the first thing is to make sure you're
unhappy with the default behavior, by inspecting how many items are
prepared in >advance in various situations. You can do this via telnet
using the <id>.queue command, request.ready, etc. Note that queued
requests are not all >prepared.

>> a)  if I use a playlist with just one file, and reload the playlist after
>> the file has be downloaded by the external script, still liquidsoap will not
>> recognize that the file has changed, and will not play the file.
> Liquidsoap does not perform any detection of changes on files. If you
> tell it to reload a playlist, it reloads it, that's all. If requests
> were prepared from the old playlist, they remain in the queue until
> newer requests can replace them.
>
>> b) Also I thought that request.dynamic was meant for building a request for
>> a file that is changing  "dynamically", but it does not work also in this
>> case.
> It's meant to get a new request every time. You feed it one request,
> it plays it once, asks for another one, plays it once, etc.
>
>> Maybe the solution would be to downlaod by external script, place the file
>> under a local web server and access the file via http or ftp, as in your
>> first option?
> It depends on various things but I'd advise to let liquidsoap download
> when needed. To do so, use request.dynamic() to give the next URL, and
> liquidsoap will download it in advance, and play it.
>
> Hope this helps,

------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
Savonet-users mailing list
Savonet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/savonet-users

Reply via email to