Search squid archive

Re: Youtube Issue!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/27/2011 07:28 PM, Ghassan Gharabli wrote:
Hello again,

I have tested this video myself and "&range=*" is coming along with
some videos without skipping anything ..

Now everything is okay but some videos are being cached 2 times with
the same Content-Length!

Please see this one:

1322399742.127  66732 192.168.10.14 TCP_HIT/200 69489664 GET
http://o-o.preferred.orange-par1.v14.lscache1.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Csource%2Calgorithm%2Cburst%2Cfactor%2Ccp&fexp=903311&algorithm=throttle-factor&itag=34&ip=84.0.0.0&burst=40&sver=3&signature=81E9381A2DF2C1F61388DB08F270607E4CF8F67E.233A3E093009D8EE0123DFC0C3CAE35FB97D7348&source=youtube&expire=1322424000&key=yt1&ipbits=8&factor=1.25&cp=U0hRR1RNUl9FSkNOMV9MR1ZBOl9kd3dzRzJKZlhJ&id=db5b3a6267109fd6
- NONE/- video/x-flv
1322399847.393  79657 192.168.10.14 TCP_HIT/200 69489664 GET
http://o-o.preferred.orange-par1.v14.lscache1.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Csource%2Calgorithm%2Cburst%2Cfactor%2Ccp&fexp=903311&algorithm=throttle-factor&itag=34&ip=84.0.0.0&burst=40&sver=3&signature=81E9381A2DF2C1F61388DB08F270607E4CF8F67E.233A3E093009D8EE0123DFC0C3CAE35FB97D7348&source=youtube&expire=1322424000&key=yt1&ipbits=8&factor=1.25&cp=U0hRR1RNUl9FSkNOMV9MR1ZBOl9kd3dzRzJKZlhJ&id=db5b3a6267109fd6&range=13-2375679
- NONE/- video/x-flv

Content is moving from (id=db5b3a6267109fd6) to
id=db5b3a6267109fd6&range=13-2375679 and that is reallys  trange
howcome it is being skipped if no human was skipping it manually !
..AS far as i know when someone skips and forward the timestamp
manually then you will find "&begin=*" or "start=*" and It is already
ignored so I am not facing erros on playing those videos on YT because
"&range=*" are no longer caching .

This was denied
refresh_pattern
(get_video|videoplayback|videodownload|\.flv).*range\=[0-9\-]*	0 0% 0

I also have ignored it with storeurl_rewrite helper.

Amos, If you said that&range happens when you skip playing .. then
howcome it is happening like that ?


Ghassan



On 11/27/11, Ghassan Gharabli<sounarose@xxxxxxxxxxxxxx>  wrote:
BTW, That what was happeing to me while testing YT&  Ofcourse you cant
even think of caching videos after being skipped by the client .

Concerning the FLV Object , yes I have noticed from before that when
you upload a youtube Video then they split the whole video into frames
which seems to send different objects with the same Video ID ..
ofcourse this one should be ignored by Squid .

302 Redirection was only found in "240p" FLV by default and for sure I
have applied the code just not to hit LOOP .

ACCESS.LOG
-------------------
1322360339.081     88 192.168.10.14 TCP_HIT/200 86436 GET
http://o-o.preferred.orange-par1.v3.lscache3.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Csource%2Calgorithm%2Cburst%2Cfactor%2Ccp&fexp=907605%2C912600%2C915002&algorithm=throttle-factor&itag=34&ip=84.0.0.0&burst=40&sver=3&signature=712F1A94A31D43D03E1DB0F67FF9B7F1A9EDA4EC.029774C29E789ACC1D557E1172163D90F6610205&source=youtube&expire=1322384400&key=yt1&ipbits=8&factor=1.25&cp=U0hRR1NTUl9FSkNOMV9LTVZFOkpsV3BkS1RxZXNF&id=283246f338ece5ad
- NONE/- video/x-flv
1322360339.242    445 192.168.10.14 TCP_MISS/204 229 GET
http://clients1.google.com/generate_204 - DIRECT/209.85.148.138
text/html
1322360339.549    453 192.168.10.14 TCP_MISS/204 422 GET
http://s.youtube.com/stream_204?event=streamingerror&erc=1&retry=1&ec=100&fexp=912600,907605,915002&plid=AASyrgMkZZEo1OUT&v=KDJG8zjs5a0&el=detailpage&rt=0.749&fmt=34&shost=o-o.preferred.orange-par1.v3.lscache3.c.youtube.com&scoville=1&fv=WIN%2011,0,1,152
- DIRECT/74.125.39.100 text/html
1322360339.619    434 192.168.10.14 TCP_MISS/204 422 GET
http://s.youtube.com/stream_204?fv=WIN%2011,0,1,152&event=streamingerror&el=detailpage&erc=2&rt=0.873&fexp=912600,907605,915002&fmt=34&v=KDJG8zjs5a0&shost=tc.v3.cache3.c.youtube.com&plid=AASyrgMkZZEo1OUT&scoville=1&ec=100
- DIRECT/74.125.39.101 text/html
1322360340.112  10781 192.168.10.14 TCP_MISS/204 230 GET
http://o-o.preferred.orange-par1.v3.lscache3.c.youtube.com/generate_204?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Csource%2Calgorithm%2Cburst%2Cfactor%2Ccp&fexp=907605%2C912600%2C915002&algorithm=throttle-factor&itag=34&ip=84.0.0.0&burst=40&sver=3&signature=712F1A94A31D43D03E1DB0F67FF9B7F1A9EDA4EC.029774C29E789ACC1D557E1172163D90F6610205&source=youtube&expire=1322384400&key=yt1&ipbits=8&factor=1.25&cp=U0hRR1NTUl9FSkNOMV9LTVZFOkpsV3BkS1RxZXNF&id=283246f338ece5ad
- DIRECT/64.15.118.50 text/html
1322360341.351  10833 192.168.10.14 TCP_MISS/204 422 GET
http://s.youtube.com/stream_204?rt=0.460&fmt=34&el=detailpage&shost=o-o.preferred.orange-par1.v3.lscache3.c.youtube.com&scoville=1&ec=100&event=streamingerror&retry=1&erc=1&fv=WIN%2011,0,1,152&plid=AASyrgKgSyateKe8&fexp=912600,907605,915002&v=KDJG8zjs5a0
- DIRECT/74.125.39.102 text/html
1322360341.818   2729 192.168.10.14 TCP_HIT/200 2376087 GET
http://tc.v3.cache3.c.youtube.com/videoplayback?fexp=907605%2C912600%2C915002&key=yt1&ipbits=8&burst=40&sver=3&algorithm=throttle-factor&signature=712F1A94A31D43D03E1DB0F67FF9B7F1A9EDA4EC.029774C29E789ACC1D557E1172163D90F6610205&id=283246f338ece5ad&factor=1.25&expire=1322384400&itag=34&source=youtube&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Csource%2Calgorithm%2Cburst%2Cfactor%2Ccp&ip=84.0.0.0&cp=U0hRR1NTUl9FSkNOMV9LTVZFOkpsV3BkS1RxZXNF&playretry=1
- NONE/- video/x-flv


AS you can see , It is moving one time but causing error at FLV Player .


I need someone to test this URL
http://www.youtube.com/watch?v=KDJG8zjs5a0

If someone is interested :


#your perl location in here, mine is #!/bin/perl
$|=1;
while (<>) {
     @X = split;
     $x = $X[0];
     $_ = $X[1];	
			# youtube 1024p HD itag=37, 720p HD itag=22
} if
(m/^http:\/\/([0-9.]{4}|.*\.youtube\.com|.*\.googlevideo\.com|.*\.video\.google\.com).*?\&(itag=37|itag=22).*?\&(id=[a-zA-Z0-9]*)/)
{
	print $x . "http://video-srv.youtube.com.SQUIDINTERNAL/"; . $2 . "&" .
$3 . "\n";
			# youtube 360p itag=34 ,480p itag=35 and others
} elsif
(m/^http:\/\/([0-9.]{4}|.*\.youtube\.com|.*\.googlevideo\.com|.*\.video\.google\.com)\/.*?(itag=[0-9]*).*?(id=[a-zA-Z0-9]*)/)
{
	print $x . "http://video-srv.youtube.com.SQUIDINTERNAL/"; . $3 . "\n";
		
} elsif
(m/^http:\/\/([0-9.]{4}|.*\.youtube\.com|.*\.googlevideo\.com|.*\.video\.google\.com)\/.*?(id=[a-zA-Z0-9]*).*?(itag=[0-9]*)/)
{
	print $x . "http://video-srv.youtube.com.SQUIDINTERNAL/"; . $2 . "\n";
     } else {
         print $x . $_ . "\n";
     }
}

I didnt add "\&" because sometimes "ITAG" comes like
"videoplayback?itag=34" same thing for "ID"


Now Im only getting errors on those videos with 302 Redirection and
Loop patch was applied successfully before compiling Squid and
access.log shows that it is normally moving to the location of the
video url but the 2 URLs are being cached since we are caching
"/videoplayback\?" and both are producing FLV Videos.

When somebody skip the portion of the video to a timestap which hasnt
been downloaded yet then YT adds to its URL something like
&begin=[0-9]. I have denied caching those URLs because it will make
your cache directory bigger&  more bigger by a short time.


Ghassan



On Sun, Nov 27, 2011 at 4:02 AM, Amos Jeffries<squid3@xxxxxxxxxxxxx>
wrote:
On 27/11/2011 5:32 a.m., Ghassan Gharabli wrote:
Hello Amos,


Finally, I have almost captured the most YouTube Videos except
something I want to get some asistance from you .


As I have tested before and tried so many times .. Chudy's script is
outdated.

After testinig and logging Youtube Videos . I finally have found
something not being fully cached . If you still remember I have said
before with my old messages that ID isnt being captured in all places
but its okay I have done this . I will post my details after I
completelly finish them.

Could you please explain to me whats happening here?

If&range=13-2375679 was found in a URL then Squid doesnt understand
how to cache the full video .. as it only cache the first 13 seconds I
guess! and then it stops . If I try to download this finished cached
movie then you notice its size about 2.2 MB . You try to remove it
from cache then Squid cant even find it as it claims not cached but
shows TCP_HIT in access.log . STRANGE!
(NP: by remove you mean PURGE request? HUT just means cached data was
found
to service the request, which is right since purging the data involves
locating it (HITing) before erasing the cached entry. Followup requests
after the purge should not be HIT.).

I took a look at these"range" replies being generated by YT a while back.

What I found was that a request for video URL would send back a FLV
object
with bytes eg "[SWF...]ABCDEFGH". All fine and good this is the cacheable
video.

If the user skips around in the video the player generates a range=
request
stating what timestamp or bytes they want to strat at. Its not clear
which
due to the reply which comes back having a *different* byte sequence than
the video at the same URL.  For example, on the "[SWF...]ABCDEFGH" video
it
would produce:   "[SWF...]EFGH" or something similar.

Under the HTTP rules the range object to be combined must be a snippet
portion of the base object (range 4-999, should have been just "DEFGH").
By
adding the SWF headers on each reply YT are making them unique and
different
objects. Combining them in the middle (ie by a caching app) will cause
errors in the binary object and crash the Flash player or cause it to
display an error message instead of the video

This range request only seems to happen if the user skips into a portion
of
video the player has not yet downloaded. So sending them the whole video,
which is what we try to do with Squid, will cause a display lag for the
user
but not cause problems in their player.


Now look into this URL:
-------------------------------


"http://o-o.preferred.orange-par1.v4.lscache7.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Csource%2Calgorithm%2Cburst%2Cfactor%2Ccp&fexp=907605%2C912600%2C915002&algorithm=throttle-factor&itag=34&ip=84.0.0.0&burst=40&sver=3&signature=8223490C23E48CB708E04666E4

A550422757CEC6.9D8D78E66DD14FEFC4B5F960F493ED4CDFD7C51C&source=youtube&expire=13

22348400&key=yt1&ipbits=8&factor=1.25&cp=U0hRR1NPVl9FSkNOMV9LSVpFOkpsV3BkS1B1ZXN
F&id=e120643085f56831&range=13-2375679"

HTTP/1.0 200 OK
Last-Modified: Fri, 27 Nov 2009 12:44:54 GMT
Content-Type: video/x-flv
Date: Sat, 26 Nov 2011 16:06:29 GMT
Expires: Sat, 26 Nov 2011 16:06:29 GMT
Cache-Control: private, max-age=24511
Accept-Ranges: bytes
Content-Length: 2375667
X-Content-Type-Options: nosniff
Server: gvs 1.0
X-Cache: MISS from Peer6
X-Cache-Lookup: MISS from Peer6:3128
Connection: close

Whats the job of "Accept_ranges: bytes" here?
Accept-* means the software producing that reply or request supports a
certain HTTP feature. In this case it is Squid and maybe the server as
well
supporting HTTP range requests. Not related to YT particulary.

And the very confusion again you can see another similar URL with the
same "/videoplayback?.*(id)" and here comes the ID inthe end of this
URL then moves temporary just . I must mention that this URL sends the
FLV url as Squid already read it in access.log and then it dds
&ir=1&playretry=1 or pr=1&playretry which means Squid would be
confused to cache it 2 times (FLV).

EXAMPLE:
---------------


"http://o-o.preferred.orange-par1.v3.lscache3.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Csource%2Calgorithm%2Cburst%2Cfactor%2Ccp&fexp=908525%2C910207%2C916201&algorithm=throttle

-factor&itag=34&ip=84.0.0.0&burst=40&sver=3&signature=0489805DCC95F6EADBA9D43C3F

D8C107FC768662.73AA6897FE78CF78BE7819E089F1A4FC47534C7D&source=youtube&expire=13

22344800&key=yt1&ipbits=8&factor=1.25&cp=U0hRR1NPUl9FSkNOMV9LSVZJOmdmQWdwWC01dlp
n&id=283246f338ece5ad"

HTTP/1.0 302 Moved Temporarily
Last-Modified: Wed, 02 May 2007 10:26:10 GMT
Date: Sat, 26 Nov 2011 15:50:47 GMT
Expires: Sat, 26 Nov 2011 15:50:47 GMT
Cache-Control: private, max-age=900
Location:
http://r9.orange-par2.c.youtube.com/videoplayback?sparams=id%2Cexpire%

2Cip%2Cipbits%2Citag%2Csource%2Calgorithm%2Cburst%2Cfactor%2Ccp&fexp=908525%2C91

0207%2C916201&algorithm=throttle-factor&itag=34&ip=84.0.0.0&burst=40&sver=3&sign

ature=0489805DCC95F6EADBA9D43C3FD8C107FC768662.73AA6897FE78CF78BE7819E089F1A4FC4

7534C7D&source=youtube&expire=1322344800&key=yt1&ipbits=8&factor=1.25&cp=U0hRR1N
PUl9FSkNOMV9LSVZJOmdmQWdwWC01dlpn&id=283246f338ece5ad&ir=1
X-Content-Type-Options: nosniff
Content-Type: text/html
Server: gvs 1.0
Age: 2068
Content-Length: 0
X-Cache: HIT from Peer6
X-Cache-Lookup: HIT from Peer6:3128
Connection: close
This is the 302 redirect Adrian and Chudy were discussing at the end of
the
wiki page. If you cache it with storeurl_access reductions it will loop
infinitely back at itself.

Amos


Hi,

Can we use bash shell script to write squid redirector for you tube video caching?Actually i m much good with bash shell script.

Regards,
Benjamin


[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux