只是心态,抓住机会。
全部博文(1384)
分类: LINUX
2012-12-13 09:53:32
HTTP Pseudo Streaming is the second method in . The method is also based on HTTP progressive download as the does, and it makes use of the partial download functionality of HTTP to allow user to seek the video to part that has not been downloaded yet.
HTTP Pseudo Streaming requires support from both the client side and server side. For the server side, plug-ins are available for Apache, litghttpd etc. At client side, custom players are required to resynchronize the video, read metadata etc. Two examples of players that supports HTTP Pseudo Streaming ar eJWPlayer and FlowPlayer.
For an example of HTTP Pseudo Streaming, open up any Youtube video. Youtube actually uses lighttpd for server side and its own customized player based on Flash technology for client side (Flash player and Flash based media player are different. Please refer . )
Below is a screenshot of the Wireshark network traffic capture when I was watching a Youtube video,
Figure 1. Wireshark Capture of HTTP Request for HTTP Pseudo Streaming
As there’re lots of segmented packets, I selected a video packet, right clicked it and selected follow TCP stream to get the screen above. It’s a single HTTP request followed by a response from the Youtube HTTP server.
I tried to seek to a part that is not downloaded yet, then do “follow TCP stream” again. I found the HTTP header contains the following strings for the initial request and the seek,
=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc
%3AU0hQSllNVF9FSkNOMF9RR1hB&
fexp=911106%2C910206&algorithm=throttle-factor&itag=34&ip=0.0.0.0&
burst=40&sver=3&signature=B3B26708552F1C9FE68 7AAB13EFE6D73F294624F.0F9EEB822A5CF4AE5443CC5798B2F415C16B75E4&
expire=1315926000&key=yt1&ipbits=0&factor=1.25&id=d46a2f20e9b7b525&
redirect_counter=1 HTTP/1.1=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc
%3AU0hQSllNVF9FSkNOMF9RR1hB&fexp=911106%2C910206&algorithm=throttle-
factor&itag=34&ip=0.0.0.0&burst=40&sver=3&signature=B3B26708552F1C9FE68
7AAB13EFE6D73F294624F.0F9EEB822A5CF4AE5443CC5798B2F415C16B75E4&
expire=1315926000&key=yt1&ipbits=0&factor=1.25&id=d46a2f20e9b7b525&begin
=1032070 HTTP/1.1
The seek HTTP request contains a string “begin=1032070”, which should be used at the HTTP server to jump to the corresponding portion of the video.
Same as the , HTTP Pseudo Streaming download the video clip to browser cache. For Google Chrome, one can find the video clip at,
Ubuntu Linux: /home/roman10/.cache/google-chrome/Default/Cache/
Windows: C:\Users\roman10\AppData\Local\Google\Chrome\User Data\Default\Cache
Where roman10 is my username for both OS.
For the benefits and drawbacks of this method, and its comparison with other HTTP method, please refer to . Note that as HTTP psuedo streaming is not real streaming, it doesn’t support live video streaming.