Как YouTube поддерживает запуск воспроизведения с любой части видео? - PullRequest
1 голос
/ 27 октября 2009

В основном я пытаюсь повторить способность YouTube начать воспроизведение видео с любой части размещенного фильма. Таким образом, если у вас есть 60-минутное видео, пользователь может перейти к 30-минутной отметке без потоковой передачи первых 30-минутного видео. У кого-нибудь есть идеи, как YouTube выполняет это?

Ответы [ 4 ]

3 голосов
/ 27 октября 2009

Ну, игрок открывает ресурс HTTP, как обычно. Когда вы нажимаете на панель поиска, проигрыватель запрашивает другую часть файла.

Это передает заголовок как это:

RANGE: bytes-unit = 10001\n\n 

и сервер обслуживает ресурс из этого байтового диапазона. В зависимости от кодека, он должен будет считывать, пока не дойдет до кадра синхронизации, чтобы начать воспроизведение

2 голосов
/ 27 октября 2009

Видео - это серия кадров, воспроизводимых с частотой кадров. Тем не менее, есть некоторые правила о порядке того, какие кадры могут быть декодированы.

По сути, у вас есть опорные кадры (называемые I-кадрами), и у вас есть кадры модификации (классы P-кадров и B-кадров) ... Как правило, правильно настроенный декодер сможет присоединиться к потоку на любой I-кадр (то есть начало декодирования), но не на P и B кадрах ... Итак, когда пользователь перетаскивает ползунок, вам нужно найти ближайший I-кадр и декодировать его ...

Это, конечно, может быть скрыто для вас под капюшоном Flash, но это то, что он будет делать ...

1 голос
/ 27 октября 2009

Если бы я догадался, это был бы какой-то выборочный поиск данных, такой как заголовок Range в HTTP. это может быть даже то, что они используют. Вы можете найти больше об этом здесь .

1 голос
/ 27 октября 2009

Я не знаю, как YouTube это делает, но если вы хотите повторить эту функцию, посмотрите Annodex . Это открытый стандарт, основанный на Ogg Theora , но с дополнительным потоком метаданных XML.

Annodex позволяет вам иметь ссылки на именованные разделы в видео или временные URI до определенного времени в видео. Используя libannodex , сервер может выполнить поиск соответствующей части видео и начать ее отсюда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...