DataLife Engine > Новости > Клиент Netflix для Xbox 360: Взгляд изнутри

Клиент Netflix для Xbox 360: Взгляд изнутри


6 февраля 2010. Разместил: deeper2k
В этой статье члены команды разработчиков клиента Netflix для Xbox расскажут вам некоторые подробности о том, как работает их приложение. Мы хотели бы поделиться с вами информацией о наиболее интересных функциях последнего релиза нашего приложения Netflix и раскрыть некоторые подробности о том, как все это устроено изнутри. Многие из вас предоставили нам тонны информации через обратную связь относительно первой версии Netflix, так что мы очень внимательно прислушивались к вашим пожеланиям и замечаниям во время работы над новой версией. Мы проделали огромную работу с тем, чтобы сделать Netflix еще более удобным и приятным в использовании.


Пользовательский интерфейс и навигация.

Новые возможности для ПДУ
Навигация по пользовательскому интерфейсу с помощью контроллера консоли всегда была довольно простой, однако, в Netflix 2.0 мы добавили некоторые дополнительные функции для управления с помощью ПДУ к Xbox, чтобы еще больше упростить управление.
1) Вы можете перемещаться вперед и назад по списку ваших каналов, используя кнопки навигации (так называемые bamper’ы) геймпада. Теперь кнопки перелистывания глав ПДУ выполняют то же действие.
2) Когда вы просматриваете понравившиеся вам моменты различных серий вашего любимого сериала, вы можете воспользоваться кнопками навигации контроллера для перехода к предыдущей или последующей серии. Точно так же работают кнопки перелистывания глав. Это позволяет вам быстро и легко найти нужный вам эпизод.

Клиент Neflix для Xbox 360: взгляд изнутри


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

Trick-play
В общепринятых терминах воспроизведения видео понятие "trick-play" обозначает процесс быстрого просмотра или перемотки видео назад. При этом вы видите на экране отдельные кадры видеофайла, разделенные определенным интервалом (обычно это 10 секунд), так что вы можете легко сориентироваться, где вы находитесь в данный момент. В режиме trick-play вы можете использовать кнопки перелистывания глав для покадрового просмотра видео.

Воспроизведение
Чтобы упростить переход в режим OSD (On-Screen Display), в Netflix 2.0 этот функционал привязан к кнопке A геймпада и кнопке Display пульта ДУ. С помощью OSD вы можете изменить режим воспроизведения на полноэкранный, растянутый, реальный, воспроизведение в окне или на режим "party". Последний доступен только во время party-сессии Netflix.

Клиент Neflix для Xbox 360: взгляд изнутри


Присутствие
В Xbox Live ваши друзья могут увидеть, в какие игры вы играете, благодаря нашей системе присутствия. Netflix может отображать информацию о том, что вы смотрите, или скрывать ее. При включенной функции "video rich presence", название просматриваемого вами фильма, или название эпизода, если речь идет о телевизионном сериале, будет отображаться в окне "rich presence", а обложка видео будет показана на панели в окне Friends.
Вы можете изменить параметр Video Status когда захотите, зайдя для этого в Xbox Guide, выбрав панель Settings и нажав Profile. Там выберите опцию Edit Profile, в которой есть параметр Privacy Settings. Этот параметр универсален для всех видеоплееров Xbox, поддерживающих функцию присутствия. Если вы скрыли отображение информации о проигрываемом видеофайле для одного приложения, то это же правило будет действовать для всех приложений.

Каналы с видеофильмами
В дополнение к очереди на просмотр и каналам party-режима, прочие каналы, которые вы видите сразу после запуска Netflix, теперь содержат в себе фильмы, которые сервис Netflix отобрал для вас в соответствие с вашими пристрастиями. Каждый из этих каналов может включать в себя до 200 элементов, предоставляющих вам более чем 800 видеофильмов, мгновенно доступных для просмотра без необходимости заходить на ваш ПК. Над каждым элементом этих каналов возможна навигация, как если бы они находились в вашей очереди на просмотр. Вы можете запустить воспроизведение видео напрямую, или добавить его в вашу очередь на просмотр, чтобы вернуться к нему в будущем.

Режим совместного просмотра
Благодаря этому новому релизу приложения Netflix, пользователи смогут смотреть фильмы вместе, сидя на виртуальном диване. Приложение использует систему Live Party, которая появилась вместе с New Xbox Experience в ноябре 2008 года. Ниже описано, что вам нужно сделать, чтобы посмотреть видео со своими друзьями.

Предварительные настройки
Запустить Netflix Party очень просто. Перейдите в канал Party и выберите "Start Party". Автоматически запустится Xbox Live Party, и вам будет предложен список друзей, которых вы можете пригласить к просмотру. Друзья, находящиеся в данный момент в сети, находятся вверху этого списка. Вы также можете запустить Netflix Party, выбрав фильм или эпизод сериала и нажав кнопку "Watch with party" на странице Details. Некоторые видео недоступны для просмотра в режиме Party и у них кнопки "Watch with Party" и "Suggest to Party" недоступны. Чтобы вместе просматривать видео, вы должны находиться в системе Live Party, так что мы автоматически добавляем вас туда, когда вы создаете или присоединяетесь к сессии Netflix. Каждый пользователь может предложить фильм или эпизод сериала для просмотра в режиме Party, но только лидер (который обозначается звездой у ног его или ее аватара в канале Party) может запускать просмотр видео. Если у одного из участников Neflix Party включена опция родительского контроля, это пользователь должен будет ввести пароль родительского контроля, если просматриваемое видео будет заблокировано в соответствии с его настройками рейтинга. Пока этот пароль не будет введен, ни для одного из пользователей не начнется просмотр видео.

Просмотр
Однажды запустив просмотр видео, лидер, обозначаемый звездой, является единственным, кто может управлять воспроизведением. Каждый может использовать кнопку Y для отображения колеса эмоций. Каждая эмоция имеет 3 вида анимации аватара, которые выбираются случайным образом при выборе вами одной из эмоций.
В закрытом помещении неприлично находиться в шляпе, так что мы берем на себя смелость удалять головной убор с вашего аватара. Не волнуйтесь, как только вы покинете просмотр, мы вам все вернем обратно. То же самое относится и к любым другим свойствам вашего Аватара.



Потоковое видео.

Ребуферизация
Одним из главных требований к потоковому видео является адаптация к изменениям в пропускной способности Интернет-канала. В первой версии Netflix мы видели много случаев снижения качества видео у пользователей, сопровождаемое сообщением "Your Internet connection has slowed" сразу после запуска воспроизведения. Часто это происходило из-за того, что Интернет-провайдер увеличивал доступную пропускную способность на небольшие промежутки времени, чтобы ускорить скорость загрузки для отдельных пользователей. Так как это мы определяем, контент какого качества может обработать ваше Интернет-соединение, измеряя пропускную способность в самом начале загрузки, описанный эффект увеличения заставляет программный клиент полагать, что доступная пропускная способность выше, чем она есть в действительности. Соответственно, мы выбираем уровень качества, битрейт которого слишком высок, чтобы его могло выдержать соединение, пропускная способность которого увеличилась лишь на небольшой промежуток времени, после чего вернулась к своему обычному значению. Собственно, это и является причиной ребуферизации.
В рамках этого релиза мы сделали много для того, чтобы уменьшить частоту зависаний:
   - Мы переключились на использование нового, более продвинутого кодирования VC-1. Потоки VC-1 намного более эффективны, чем сопоставимые с ними по уровню качества аналоги на базе WMV9. Это позволяет нам более эффективно использовать доступную пропускную способность, буферизуя большие объемы данных за меньшее время.
   - Мы реализовали нечто, что мы называем "незаметное переключение потока". Ранее под зависанием понималась необходимость ждать, пока приложение ребуферизует новый поток. Теперь, мы можем обнаруживать падение пропускной способности, которое может вызвать зависание, и среагировать на него прежде, чем оно произойдет. Вместо того, чтобы вынуждать вас ожидать, пока заново пройдут тест скорости и буферизация, мы можем подготовить новый поток в фоновом режиме. Чтобы узнать детали того, как это работает, смотрите следующий раздел.
   - Благодаря такому переключению потока, теперь вы можете переключать на более качественный поток. Ранее вы оставались "запертыми" в потоке с низким битрейтом, если во время воспроизведения видео пропускная способность вашего соединения уменьшалась. Теперь, если ваша пропускная способность увеличивалась до достаточного уровня, битрейт вашего контента также может быть повышен.


(Почти) Незаметное переключение потоков
Как было упомянуто выше, теперь мы можем осуществлять превентивное переключение на новый поток до того, как произойдет зависание. Вот как это работает.
Как и в первой версии Netflix, быстрый тест скорости соединения выполняется первым, чтобы выяснить, на что способно это соединение. На основании этих результатов выбирается поток с соответствующим битрейтом - этот поток должен обеспечить вам максимальное качество видео, и при этом оно должно воспроизводиться без зависаний.
Однако, в отличие от первой версии клиент будет непрерывно контролировать текущую пропускную способность и уровень буфера во время воспроизведения видео. Уровень буфера указывает на количество данных, которые были считаны с сетевого соединения и буферизированы в памяти.
Если уровень буфера падает ниже определенного порога (т.е. уровень буфера попадает в зону опасности зависания), тогда начинается нечто интересное. В этом случае клиент просматривает несколько примеров видео, чтобы определить, как с ними справляется Интернет-подключение, а мы, в свою очередь, можем видеть, уменьшилось ли число уровней буфера. Сперва это может показаться глупым, однако причина того, зачем мы проверяем последний параметр, состоит в том, что непосредственно после начала поиска или воспроизведения уровни буфера технически могут все еще находиться в красной зоне; однако, нет необходимости бить тревогу, пока они по-прежнему продолжают увеличиваться. С другой стороны, если уровни буфера уменьшаются, и результаты измерения пропускной способности указывают на то, что клиент может зависнуть, последний переключается на поток с более низким битрейтом. Подробнее об этом чуть ниже.
Теперь, если вместо снижения уровень буфера будет постоянно расти выше определенной отметки, то клиент будет просматривать несколько примеров видео для измерения пропускной способности и определять, сможет ли Интернет-соединение перейти на более качественный видеопоток. Если это так, то клиент переключит на поток с более высоким битрейтом. Примечание: чтобы избежать слишком частого переключения от потока с низким битрейтом к потоку с высоким битрейтом, если в рамках одной сессии воспроизведения видео переключению на более качественный поток предшествовало переключение с понижением битрейта, то в этом случае перед переходом будет небольшая временная задержка. Этот отрезок времени существенно увеличивается каждый раз, когда происходит переключение на менее качественный видеопоток. Например, предположим, что клиент начинает воспроизведение части контента с качеством потока, определяемом двумя полосками, но впоследствии пропускная способность снижается и клиент переключается на поток с меньшим битрейтом. В этом случае, даже если скорость соединения возвратиться к своему предыдущему значению, на котором клиент мог бы повысить качество видео, последний будет ожидать некоторое время, прежде чем позволить переключиться на новый поток. Если впоследствии во время этой же сессии клиент снова понизит качество потока, то временной промежуток, предшествующий переключению на более качественный поток, увеличится. Основная идея этого состоит в том, чтобы избежать цикла, в котором колебания пропускной способности соединения вынуждают клиент постоянно переключаться между уровнями качества видео.


Процесс переключения потока
При старте процесса переключения потока происходит несколько событий. Во-первых, клиент перестает считывать какие-либо данные из сети для старого потока; это абсолютно не нужно, поскольку в буфере накапливается необходимый объем данных из старого потока. Одновременно с этим освобожденные сетевые ресурсы начинают загружать данные для нового потока. Как только воспроизвелись все данные из старого потока, клиент сразу переключается на новый поток.
Наверное, сейчас самое время признаться, что не совсем корректно называть этот процесс "незаметным переключением потока". На самом деле, имеет место некий скачок, но он слишком незначителене. Он показан на скриншоте внизу:

Клиент Neflix для Xbox 360: взгляд изнутри


Индикатор в правом верхнем углу показывает уровень качества нового потока, который вы просматриваете. Вы будете видеть подобное изображение очень небольшой отрезок времени (обычно секунду или меньше) во время переключения со старого потока на новый. В это время конвейер видео заново настраивается на новый поток. Мы проделали максимально возможный за отведенное нам время объем работы, однако остались некоторые процессы, такие как инициализация устройства Direct3D в соответствии с новым разрешением видео, которые должны происходить именно в этот промежуток времени. Этот процесс происходит очень быстро, но не мгновенно, поэтому и существует эта небольшая задержка.
Иногда клиент не может буферизировать новый поток прежде, чем заканчивается буфер старого потока. Это может случиться, например, если внезапное существенное понижение пропускной способности, или если Интернет-соединение не способно обеспечить непрерывное воспроизведение потока с самым низким битрейтом. В этих случаях вам все же придется подождать повторной буферизации, а на экране в это время будет сообщение "Your Internet connection has slowed".

Потоковая передача и режим Party
Наиболее важной особенностью процесса потоковой передачи видео в режиме Party является то, что видео остается синхронизированным между пользователями, совместно просматривающими контент. Мы четко понимали, что в этом режиме нельзя было бы допустить ситуацию, когда ваш приятель смеялся над какой-то шуткой на две секунды раньше того, когда вы добрались до соответствующего смешного момента фильма. Поскольку мы работали над тем, чтобы сохранить синхронизацию при просмотре видео между всеми пользователями, процесс потоковой передачи данных в режиме Party несколько отличается от потокового вещания в одиночном режиме:
   - Бесшовное переключение потока не работает в режиме Party. Задержки во время переключения потока, даже очень небольшой, может быть достаточно, чтобы спровоцировать десинхронизацию более чем нам 500 миллисекунд, которые мы приняли для себя в качестве максимально допустимой разницы во времени проигрывания между участниками совместного просмотра.
   - Просвет, который мы рекомендуем для воспроизведения видео в режиме Party, больше, чем для одиночного режима. В данном контексте под словом "просвет" мы понимаем рекомендуемую разницу между пропускной способностью вашего соединения и выбранным битрейтом видео. Другими словами, для режиме Party величина просвета, скажем, в 30% (говоря гипотетически), означает, что для потока видео битрейтом 1000 Kbps пропускная способность вашего Интернет-соединения должна быть равна минимум 1429 Kbps. Причиной, по которой мы требуем большего просвета для режима Party, является то зависание в этом режиме затрагивает не только вас, но и всех остальных, кто смотрит видео вместе с вами. Когда зависает поток у одного из пользователей, остальные вынуждены ждать, пока у него пройдет повторная буферизация, чтобы сохранить синхронизацию. Мы хотим быть уверены, что вероятность возникновения такой ситуации очень мала.

Некоторые хитрости для увеличения удобства использования Netflix
Теперь, когда вы знаете некоторые детали относительно того, как работает наша система потокового вещания, мы хотим рассказать вам о том, что вы можете сделать, чтобы по возможности улучшить работу этой системы для себя лично.
Прежде всего, если вам по какой-то причине очень не нравится (почти) незаметное переключение потока, вы можете запретить его использование с нашей стороны, просматривая весь ваш контент в режиме Party. Это работает и когда вы смотрите ваше видео в одиночку, и с другими пользователями. Все, что вам надо сделать, это запустить Netflix в режиме Party. Если вы выбрали этот способ и при этом не хотите смотреть на вашего аватара, вы можете перейти в OSD и воспользоваться режимом Display.
Во-вторых, если у вас нестабильное Интернет-подключение, то кнопка Pause - ваш лучший друг. Помните, я говорил, что клиент будет рассматривать переход на видео с более низким битрейтом только в случае, если 1) значение буфера опускается ниже определенного порога и 2) уровень буфера понижался на протяжении последних нескольких секунд. Когда воспроизведение приостановлено, клиент продолжает считывать данные из сети, но значение буфера в это время не может уменьшиться, так как воспроизведение было остановлено. Потому, нажатие кнопки Pause после начала воспроизведения и остановка просмотра на небольшой промежуток времени (30 секунд, минута или две - вы сами определяете, какое значение вам больше подходит) является наиболее простым способом вызвать увеличение уровня буфера и избежать возможного переключения на поток с более низким битрейтом.

Источник: http://www.xbox.com/engineeringblog
Перевод: Dazila

Вернуться назад