Почему Youtube буферизует некоторые видео частично, а другие полностью? - PullRequest
2 голосов
/ 10 февраля 2012

Это вопрос о буферизации видео на Youtube.

Например, это видео постепенно буферизуется при воспроизведении:

(1) http://www.youtube.com/watch?v=XGNOc7FYWKA

Так что, если вы приостановите видео, оно буферизируется до некоторой точки, а затем останавливается.

Но попробуйте это видео. Он буферизует всю длину, даже если вы сделаете паузу:

(2) http://www.youtube.com/watch?v=fK1eWVrO_fE

Я немного исследовал это.

Для видео (1) браузер отправляет 2 дополнительных параметра при запросе видео FLV:

GET /videoplayback?ipbits=8&algorithm=throttle-factor&cp=U0hRTVJRUV9OUENOMV9KS1VGOlczX1hyNGxsZU5T&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Csource%2Calgorithm%2Cburst%2Cfactor%2Ccp&id=5c634e73b15858a0&factor=1.25&ip=69.0.0.0&source=youtube&key=yt1&burst = 40 & fexp = 903104% 2C910103 & keepalive = да & sver = 3 & itag = 34 & подпись = 855EF17A58816C002AD9B13DE556B4A61A9D5418.2A2EF1CC340227895ED945AC8FC7D23EE2245 * * 2 133 1021 025 = 021 * 1021 - 056 = 1021 021 = 056 = 1025 021 = 056 10 0 78 0 201 0 0 5 0 0 68 0 216 0 5 6 0 5 6 0 5 6 0 21 0 22 0 5 5 5 5 5 5 211 211 0 5 5 5 5 5 5 5 5 7 22 0 21 БЛИЙСИСТАРИЙТЫВЫЕ ДИАПАЗОННЫЕ ДВИЖ.

Сдвигает диапазон при воспроизведении видео.

Для видео (2) браузер пропускает эти 2 параметра, и сервер отвечает простым HTTP-ответом «Content-Length: (фактическая длина видеофайла)». Вот почему видео загружается полностью.

Теперь на мой вопрос:

Кто-нибудь знает, что вызывает эту разницу в буферизации? Это свойство видео, или сервера, или чего-то еще?

В идеале я хотел бы использовать буферизацию типа (1) для предотвращения потери пропускной способности, если я не смотрю видео полностью.

FWIW, я попытался настроить запрос во втором случае, вручную добавив диапазон и параметры keepalive. Я получил сообщение об ошибке при воспроизведении видео.

...