On Tue, 06 Jul 2010 23:19:42 +0200, Marques Johansson <marq...@displague.com> wrote:

On Tue, Jul 6, 2010 at 4:37 PM, Aryeh Gregor
<simetrical+...@gmail.com<simetrical%2b...@gmail.com>
wrote:

On Tue, Jul 6, 2010 at 10:24 AM, Marques Johansson
<marq...@displague.com> wrote:
> The benefit to the user is that they could have less open network
> connections while streaming video from server controlled sites and those
> sites will have the ability to meter their usage more accurately.
> Inserting an extra clip at the end is more of a playlist or scripting
> answer. Or perhaps a a live re-encoding answer. I'm looking for a way
to
> give the user the raw video file in a metered way.

It sounds like your use-case is very special, and best handled by
script.  I suggested server-side script -- you could do that today.
Just cut off the HTTP connection when the user has used up their
allotted time.  Alternatively, it might be reasonable to have
client-side scripting for video that's flexible enough to do what you
want.  But a dedicated declarative feature is just not reasonable for
such a specific purpose.


I tested cutting off the HTTP connection and browsers didn't handle this. I realize I may need to test a deeper sever than a php exit() can provide. I have essentially tested this (but not this exactly - filehandles, sessions,
additional code, etc):
<?php
header("HTTP/1.1 206 partial");
header("Accept-Ranges: bytes");
header("Content-Range: bytes 0-999999/1000000");
header("Content-Length: 1000000");  // report 1000k
echo str_repeat(" ", 1000); // return 1k
exit();

and found that browsers do not attempt to refetch the data or continue with
a 206 for the next block.

Shouldn't something like this be be worked into the protocol or the language

One thing that you mustn't lie about is Content-Length, so I assume that the real size of this resource if 1000k. If you're trying to return a too short range, you should say so in the Content-Range header. In other words, in the above you should have used

header("Content-Range: bytes 0-999/1000000");

I'm not sure it will work anyway, though.

--
Philip Jägenstedt
Core Developer
Opera Software

Reply via email to