Chinaunix首页 | 论坛 | 博客
  • 博客访问: 856605
  • 博文数量: 1384
  • 博客积分: 27795
  • 博客等级: 上将
  • 技术积分: 16887
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-12 09:28
个人简介

只是心态,抓住机会。

文章分类

全部博文(1384)

文章存档

2014年(3)

2013年(403)

2012年(978)

分类: 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,

http_pseudo_streaming

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.

阅读(5069) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~