Предшествующий уровень техники
Потоковая передача аудиовизуальной информации является процессом посылки аудио/видео представления и других данных из файлов потоковой аудиовизуальной информации или из источников потоковой информации в реальном времени от одного местоположения до другого по сети, такой как Интернет или интранет. Как правило, потоковая передача аудиовизуальной информации включает в себя посылку файла потоковой аудиовизуальной информации от сервера клиенту, когда файл потоковой аудиовизуальной информации может быть воспроизведен (просмотрен и/или прослушан), используя проигрыватель аудиовизуальной информации (медиа-плеер). Потоковая передача аудиовизуальной информации может также быть выполнена между одноранговыми устройствами. В отличие от способов передачи не-потоковой аудиовизуальной информации, которые требуют, чтобы весь файл потоковой аудиовизуальной информации был передан прежде, чем он может быть воспроизведен, потоковая передача аудиовизуальной информации допускает представление частей файла потоковой аудиовизуальной информации в то время, когда он передается или передается в виде потока клиенту.
Потоковая передача аудиовизуальной информации может быть или одноадресной, когда файл потоковой аудиовизуальной информации передается в виде потока от сервера к одиночному клиенту, или многоадресной, когда файл потоковой аудиовизуальной информации передается в виде потока от сервера множеству клиентов. Дополнительно, потоковая передача аудиовизуальной информации может происходить или в реальном времени, когда передается в виде потока файл потоковой аудиовизуальной информации, включающий в себя данные, представляющие реальное событие так, как оно происходит, или по требованию, когда файл потоковой аудиовизуальной информации сохраняют в файле потоковой аудиовизуальной информации и передают в виде потока тогда, когда потребуется. Потоковая передача аудиовизуальной информации по требованию обычно является одноадресной, с потоковой передачей, имеющей место между сервером и каждым клиентом в отдельном случае.
Основной файл потоковой аудиовизуальной информации обычно включает в себя, по меньшей мере, два потока: видеопоток и аудиопоток. Более сложный файл потоковой аудиовизуальной информации будет включать в себя множество видео и/или аудиопотоков, причем каждый поток кодируют с различной скоростью передачи данных (то есть, кодирование с множеством скоростей передачи битов). Например, заданная часть или поток видео (данных) могут быть сохранены в закодированном с множеством скоростей передачи данных файле потоковой аудиовизуальной информации в шести различных потоках видео (данных), причем каждый поток закодирован с различной скоростью передачи данных. Когда клиент запрашивает файл потоковой аудиовизуальной информации от сервера, выполняется определение относительно полосы пропускания линии связи между сервером и клиентом. Затем выбирают один из шести потоков видео и потоков аудио для передачи клиенту на основании заранее определенных критериев относительно полосы пропускания. Например, видео- и аудиопотоки могут быть выбраны так, что их объединенные скорости передачи данных являются меньшими, чем заранее определенный процент от доступной полосы пропускания линии связи. Если в некоторый момент в процессе потоковой передачи полоса пропускания линии связи между сервером и клиентом увеличивается или уменьшается, то выбирается различная комбинация аудио- и видеопотоков, чтобы удовлетворить заранее определенным критериям полосы пропускания. Этот тип "выбора потока" из файла потоковой аудиовизуальной информации, закодированного с множеством скоростей передачи, на основании доступной полосы пропускания обычно называется "интеллектуальная потоковая передача данных".
В некоторых клиентских системах опыт потоковой передачи данных расширяется кэшированием некоторых или всех принятых файлов потоковой аудиовизуальной информации в клиенте до воспроизведения потоков. Кэширование потоков до их воспроизведения уменьшает вероятность, что возможная проблема в сетевом подключении прервет воспроизведение файла потоковой аудиовизуальной информации на клиенте. Кроме того, в некоторых системах некоторое минимальное использование навигации относительно потока (перемотка, повторное воспроизведение) может быть выполнено с использованием кэша.
Одной из проблем, которая в настоящее время существует при кодировании с множеством скоростей передачи битов и/или кэшировании потока аудиовизуальной информации, является та, что для потоков с изменяющимися скоростями передачи данных или не смежных во времени потоков не существует способа сохранения и осуществления последующего к ним прямого обращения (доступа без излишних промежуточных операций), если вообще такое возможно. Как правило, когда выполняется переключение между потоками аудиовизуальной информации в файле потоковой аудиовизуальной информации из-за изменения полосы пропускания, любые предварительно кэшированные части файла потоковой аудиовизуальной информации отвергаются, и устанавливается новый кэш потока. Точно так же, когда делается переход между временно несмежными местоположениями в файле потоковой аудиовизуальной информации, например операция поиска, любые предварительно кэшированные части файла потоковой аудиовизуальной информации отвергаются, и устанавливается новый кэш потока.
Различные системы, способы, и структуры данных, описанные ниже, направлены на решение этих и других проблем.
Сущность изобретения
Описаны различные системы, способы и структуры данных, касающиеся кэширования файла потоковой аудиовизуальной информации способом, который допускает сохранение и извлечение частей файла потоковой аудиовизуальной информации, которые являются временно несмежными и/или кодированными с отличающимися скоростями передачи данных.
В соответствии с одним вариантом выполнения используется механизм кэширования, который использует уникальные механизмы промежуточного сохранения, которые разрешают сохранять такие временно несмежные участки и/или по-разному закодированные части файла потоковой аудиовизуальной информации в кэш-файле, и получать к ним доступ (извлекать их) из кэш-файла. В соответствии с другим вариантом осуществления используется уникальная структура кэш-файла, которая допускает сохранение таких временно несмежных участков и/или по-разному закодированных частей файла потоковой аудиовизуальной информации в кэш-файле, и получать к ним доступ (извлекать их) из кэш-файла.
Краткое описание чертежей
Фиг. 1 иллюстрирует примерную сетевую среду, в которой могут быть использованы описанные различные системы, способы и структуры данных.
Фиг. 2 иллюстрирует примеры клиентского устройства и сервера.
Фиг. 3 иллюстрирует примерную структуру и формат потоковых данных аудиовизуальной информации.
Фиг. 4 иллюстрирует примерную структуру данных кэш-файла.
Фиг. 5 иллюстрирует примерную последовательность операций, включающую в себя различные действия для записи потоковой аудиовизуальной информации.
Фиг. 6 иллюстрирует примерную последовательность операций, включающую в себя различные действия для воспроизведения потоковой аудиовизуальной информации.
Фиг. 7 иллюстрирует примерную общую компьютерную среду, которая может использоваться для осуществления описанных систем, способов и структур данных.
Подробное описание предпочтительного варианта осуществления
В целом, различные системы, способы и структуры данных, описанные ниже, относятся к кэшированию файла потоковой аудиовизуальной информации способом, который допускает сохранение и извлечение частей потоковой аудиовизуальной информации, которые являются временно несмежными участками и/или закодированными с отличающимися скоростями передачи данных. Как описано ниже, механизм кэширования на стороне клиента использует уникальные механизмы промежуточного сохранения и уникальную структуру кэш-файла, которая позволяет таким "несходным" частям файла потоковой аудиовизуальной информации быть сохраненными в кэш-файле, и быть доступным из него.
Примерная среда
Фиг. 1 иллюстрирует примерную сетевую среду 100. В среде 100 множество (x) клиентских устройств 102(1), 102(2), ..., 102(x) подсоединены ко множеству (y) серверных устройств 104(1), 104(2),..., 104(y) через сеть 106. Сеть 106 предназначена для представления любой из множества обычных сетевых топологий и типов (включая в себя проводные и/или беспроводные сети). Сеть 106 может включать в себя, например, Интернет, интранет, глобальную сеть (ГС, WAN), локальную сеть (ЛС, LAN) и/или различные комбинации любой из этих или других сетей.
Должно быть понятно, что используемые здесь серверное устройство (устройство-сервер) может быть любым устройством или процессом, который является источником файла потоковой аудиовизуальной информации, и устройство-клиент может быть любым устройством или процессом, который принимает файл потоковой аудиовизуальной информации (например, для воспроизведения пользователю на клиентском устройстве). Например, в равноправной сети устройство или процесс, которые являются источником файла потоковой аудиовизуальной информации, могут быть названы серверным устройством, в то время как устройство или процесс, которые принимают файл потоковой аудиовизуальной информации, могут быть названы клиентским устройством.
В соответствии с различными вариантами осуществления, описанными ниже, связь между клиентскими устройствами 102 и серверными устройствами 104 может происходить, используя любой из множества обычных протоколов обмена информацией (включая в себя открытые и/или частные протоколы). В одном варианте осуществления связь между устройствами 102 и 104 происходит с использованием версии протокола передачи гипертекстовых файлов (HTTP). В другом варианте осуществления связь между устройствами 102 и 104 происходит с использованием протокола передачи в реальном времени (RTSP). Альтернативно, могут использоваться другие протоколы, такие как протокол инициирования сеанса связи (SIP), простой протокол доступа к объектам (SOAP) и т.д.
Каждое из устройств 102 и 104 может быть любым из множества обычных вычислительных устройств, включая настольные персональные компьютеры, рабочие станции, универсальные компьютеры, электронные приборы на основе Интернет, игровые терминалы, карманные персональные компьютеры, сотовые телефоны, персональные цифровые ассистенты (PDA), телевизионные приставки и т.д. Одно или более устройств 102 и 104 может быть устройствами одного типа или, альтернативно, устройствами различного типа.
Хотя и не показано, одно или более дополнительных устройств (например, брандмауэры, маршрутизаторы, шлюзы, мосты, множество прокси-серверов и т.д.) могут быть расположены между клиентским устройством 102 и серверным устройством 104. Следует отметить, что множество клиентских устройств 102 могут обращаться к одиночному серверному устройству 104, и что одиночное клиентское устройство 102 может обращаться к множеству серверных устройств 146.
Фиг. 2 иллюстрирует примерное серверное устройство 104. Как показано, серверное устройство 104 включает в себя модуль 220 потоковой передачи и один или более файлов 222 потоковой аудиовизуальной информации. Серверное устройство 104 может быть, например, серверным устройством 104 источника на фиг. 1, или альтернативно, другим устройством (например, прокси-устройством). В общем, модуль 220 потоковой передачи функционирует для приема запроса на файл потоковой аудиовизуальной информации или часть файла потоковой аудиовизуальной информации, например, от клиентского устройства 102, и передачи файла потоковой аудиовизуальной информации или части файла к запрашивающей стороне.
"Файл потоковой аудиовизуальной информации" включает в себя один или более цифровых потоков информации, которые могут быть воспроизведены проигрывателем аудиовизуальной информации (медиа-плеером). Как правило, файл потоковой аудиовизуальной информации включает в себя два или более потоков, которые являются временно синхронизированными. Файл потоковой аудиовизуальной информации может также включать в себя другие потоки, которые являются независимыми. Содержимое файла аудиовизуальной информации может быть или может не быть сжато. Термин "файл потоковой аудиовизуальной информации" используется в настоящем описании, чтобы указать, что файл потоковой аудиовизуальной информации передается по сети на клиентское устройство, и что воспроизведение файла аудиовизуальной информации может начинаться до доставки файла аудиовизуальной информации в его целостности (например, обеспечивая данные файла аудиовизуальной информации на основе "как необходимо" вместо предварительной доставки данных полностью перед воспроизведением). Файл потоковой аудиовизуальной информации может быть общедоступен или, альтернативно, ограничен (например, ограниченно доступным только для некоторых пользователей, только если соответствующая плата оплачена, и т.д.). Файл потоковой аудиовизуальной информации может быть любым из множества из одного или более типов файлов аудиовизуальной информации с доступом с разделением во времени, причем информация в файле потоковой аудиовизуальной информации определяет временное представление некоторой части или всего файла в течение воспроизведения, например, аудио, видео, временного текстового представления, анимации и т.д. Дополнительно, файл потоковой аудиовизуальной информации может быть записанным заранее или, альтернативно, "живым" (например, цифровым представлением, выполняемым при передаче концерта, когда концерт исполняется, и обеспечение его доступным для потоковой передачи данных вскоре после сбора данных).
Файл 222 потоковой аудиовизуальной информации может быть сохранен и/или передан в виде потока в соответствии с любым из множества различных форматов файла потоковой аудиовизуальной информации. Например, файл потоковой аудиовизуальной информации может быть сохранен как статический файл потоковой аудиовизуальной информации. Альтернативно, файл потоковой аудиовизуальной информации может быть передан в виде "реального" потока от одного или более источников или производителей потоков аудиовизуальной информации. В одном примерном варианте осуществления изобретения файлы аудиовизуальной информации сохраняют и/или передают в виде потока в соответствии с форматом ASF (расширенный системный формат или расширенный формат потоковой передачи). Дополнительная информация относительно ASF доступна от корпорации Microsoft®, Redmond, Вашингтон. Та же самая методика может также применяться к другим форматам, например, MPEG-1 (формат от Группы Экспертов по движущимся изображениям), MPEG-2, MPEG-4, Quicktime, и т.д.
Как показано, клиентское устройство 102 включает в себя плеер 206 потоковой аудиовизуальной информации, сетевой модуль 208, модуль 210 кэширования, и один или более кэш-файлов 216. В модуль 210 кэширования включены модуль 212 кэширования аудиовизуальной информации и модуль 214 кэширования байтов. Как показано, один или более кэш-файлов хранятся в модуле 218 хранения данных в клиентском устройстве 102.
Вообще, плеер 206 потоковой аудиовизуальной информации обеспечивает средство, посредством которого файл 222 потоковой аудиовизуальной информации может быть выбран пользователем для воспроизведения на клиентском устройстве 102. В соответствии с одним вариантом осуществления плеер 206 потоковой аудиовизуальной информации является приложением или апплетом, который выполняется процессором на клиентском устройстве 102. Плеер 206 потоковой аудиовизуальной информации предназначен для приема и декодирования файлов потоковой аудиовизуальной информации и доставки содержания файлов потоковой аудиовизуальной информации на соответствующие устройства вывода видео и аудио (данных) в клиентском устройстве 102.
Вообще, сетевой модуль 208 функционирует в качестве "шлюза" между плеером 206 потоковой аудиовизуальной информации и различными источниками файлов потоковой аудиовизуальной информации. При работе в этом качестве сетевой модуль 208 исполняет множество функций, относящихся к установке соединений между плеером 206 потоковой аудиовизуальной информации и различными источниками потоковой аудиовизуальной информации. Например, в соответствии с одним вариантом осуществления сетевой модуль 208 устанавливает сетевое соединение между плеером 206 потоковой аудиовизуальной информации и серверным устройством 104. Сетевой модуль 208 также устанавливает сетевое соединение между плеером 206 потоковой аудиовизуальной информации и модулем 210 кэширования.
Кроме того, сетевой модуль 208 исполняет множество функций, относящихся к определению того, от какого из множества доступных источников потоков аудиовизуальной информации плеер 206 потоковой аудиовизуальной информации будет принимать данные. Например, в соответствии с одним вариантом осуществления в ответ на прием запроса от плеера 206 потоковой аудиовизуальной информации на всю или часть конкретного представления потоковой аудиовизуальной информации, сетевой модуль 208 определяет, может ли запрос быть удовлетворен, извлекая требуемые данные из предварительно сохраненного кэш-файла, или должны ли требуемые данные быть извлечены из серверного устройства.
В соответствии с одним вариантом осуществления сетевой модуль 208 определяет скорость передачи потока для файла потоковой аудиовизуальной информации между модулем 220 потоковой передачи и сетевым модулем 208 на основании множества различных факторов. Это может быть определено любым из множества обычных способов, например посредством посылки тестовых сообщений между устройствами 102 и 104, контроля текущего и прошлого поведения соединений между устройствами 102 и 104, приема индикации относительно доступной полосы пропускания от модуля 220 потоковой передачи и т.д. Зная текущую доступную полосу пропускания, сетевой модуль 208 первоначально запрашивает скорость передачи для потока, которая меньше текущей доступной полосы пропускания на конкретную величину. Эта конкретная величина может быть фиксированной (например, всегда 50 Кбит/сек) или динамической (например, 15% от текущей доступной полосы пропускания, или между 5% и 25% от текущей доступной полосы пропускания).
В соответствии с одним вариантом осуществления сетевой модуль 208 создает или назначает модуль 212 кэширования аудиовизуальной информации, описанный ниже. В соответствии с этим вариантом осуществления сетевой модуль может создавать или назначать одиночный сетевой модуль или множество сетевых модулей. Другие функции, которые могут быть выполнены сетевым модулем 208, включают в себя без ограничения: определение, сохранен ли кэш-файл, относящийся к конкретному воспроизведению потоковой аудиовизуальной информации, в модуле хранения данных, и создание кэш-файлов в модуле хранения данных. Обычные компоненты, которые являются частью клиентского устройства 102, могут необязательно использоваться для того, чтобы помочь сетевому модулю 208. Например, в одном примерном варианте осуществления программа просмотра (браузер) Microsoft® Internet Explorer включает в себя функциональные возможности управления кэшем, например контроль истечения времени нахождения элементов в кэше и/или сборку "мусора", и сетевой модуль 208 может использовать эти функциональные возможности при выполнении различных операций сетевого модуля, описанных выше.
В соответствии с одним вариантом осуществления модуль 218 хранения данных образован на основе энергонезависимой памяти. Например, и без ограничения, модуль 218 хранения данных может быть образован одним или более энергонезависимых ЗУ, например магнитных или оптических запоминающих устройств, магнитно-оптических запоминающих устройств, энергонезависимых ОЗУ или энергонезависимых устройств памяти другого типа. В соответствии с другим вариантом осуществления модуль 218 хранения данных образован одним или более типов энергозависимых ЗУ.
Модуль 210 кэширования обеспечивает механизм, посредством которого файл потоковой аудиовизуальной информации может быть записан в кэш-файл и считан из него в модуле 218 хранения данных. Как показано, модуль 210 кэширования включает в себя модуль 212 кэширования аудиовизуальной информации, и модуль 214 кэширования байтов. Как описано более подробно ниже, каждый из модуля 212 кэширования аудиовизуальной информации и модуля 214 кэширования байтов создается и/или управляется в одной или более промежуточных структур данных, в которых сохранены различные части и структуры принятых потоков данных аудиовизуальной информации.
Модуль 212 кэширования аудиовизуальной информации обеспечивает промежуточные структуры данных для принятого файла потоковой аудиовизуальной информации. В частности, модуль 212 кэширования аудиовизуальной информации создает в одном или более считываемых компьютером носителях пять типов структур данных, поток (для) кэширования аудиовизуальной информации, сегмент кэширования аудиовизуальной информации, сегмент с заголовком кэширования аудиовизуальной информации, сегмент индекса кэширования байтов и сегмент данных кэширования байтов. Во время работы модуль 212 кэширования аудиовизуальной информации создает один сегмент с заголовком кэширования аудиовизуальной информации и множество потоков кэширования аудиовизуальной информации и сегментов кэширования аудиовизуальной информации для каждого файла аудиовизуальной информации, который принят. Модуль 212 кэширования аудиовизуальной информации создает и управляет потоком кэширования аудиовизуальной информации для каждого различного типа и кодированной скорости передачи данных для потока, принятого клиентским устройством 102 в файле потоковой аудиовизуальной информации. Используемый здесь термин "тип" потока относится к формату или функции (например аудио или видео) потока. Понятно, что кодированная скорость передачи данных потока является скоростью передачи данных, с которой поток был первоначально сохранен в файле потоковой аудиовизуальной информации. Как таковой, если модуль 212 кэширования аудиовизуальной информации принимает три потока видео из файла потоковой аудиовизуальной информации, причем каждый имеет отличную скорость передачи данных, и два потока аудио, причем каждый имеет отличную скорость передачи данных, модуль 212 кэширования аудиовизуальной информации сформирует пять различных потоков кэширования аудиовизуальной информации. Во время работы модуль 212 кэширования аудиовизуальной информации будет создавать новый поток кэширования аудиовизуальной информации каждый раз, когда модулем 212 кэширования аудиовизуальной информации принимается поток аудиовизуальной информации нового типа или с новой скоростью передачи данных.
Когда поток принят модулем 212 кэширования аудиовизуальной информации, данные в принятом потоке сохраняют в сегменте кэширования аудиовизуальной информации в (то есть, логически связанным с ним) потоке кэширования аудиовизуальной информации того же типа и с той же скоростью передачи данных, что и принятый поток. Например, если видеопоток, закодированный со скоростью передачи X, принят модулем 212 кэширования аудиовизуальной информации, данные из принятого потока будут сохранены в потоке кэширования аудиовизуальной информации типа "видео", имеющем связанную скорость передачи данных X. Если поток кэширования аудиовизуальной информации типа "видео", закодированный со скоростью X передачи данных, еще не был создан, модуль 212 кэширования аудиовизуальной информации создаст такой поток кэширования аудиовизуальной информации. Как только модуль 212 кэширования аудиовизуальной информации создал поток кэширования аудиовизуальной информации для заданного типа и скорости передачи данных принятого потока, модуль 212 кэширования аудиовизуальной информации создаст отдельный сегмент кэширования аудиовизуальной информации для каждой временно не смежной части принятого потока. Используемый здесь термин "временно не смежный" относится к частям принятого потока или файла потоковой аудиовизуальной информации, которые не являются соседними друг с другом в терминах временного представления их содержимого во время воспроизведения. Как таковой, модуль 212 кэширования аудиовизуальной информации будет создавать отдельный сегмент кэширования аудиовизуальной информации в заданном потоке кэширования аудиовизуальной информации для каждой части принятого потока, который не является непосредственно соседним во времени в смысле временной структуры принятого потока, с другим потоком кэширования аудиовизуальной информации в заданном потоке кэширования аудиовизуальной информации.
Фиг. 3 иллюстрирует графическое представление 300 структуры потоков кэширования аудиовизуальной информации и сегментов кэширования аудиовизуальной информации, созданных модулем 212 кэширования аудиовизуальной информации для гипотетического файла потоковой аудиовизуальной информации. Потоки кэширования аудиовизуальной информации и сегмент показаны выровненными вертикально относительно оси 340 времени, где ось времени указывает время воспроизведения файла потоковой аудиовизуальной информации.
Как показано, модуль 212 кэширования аудиовизуальной информации создал три отдельных видеопотока кэширования аудиовизуальной информации: видеопоток (1) 310 кэширования аудиовизуальной информации, видеопоток (2) 312 кэширования аудиовизуальной информации, и видеопоток (3) 314 кэширования аудиовизуальной информации, каждый из которых связан с различной скоростью передачи данных. Дополнительно, модуль 212 кэширования аудиовизуальной информации создал два отдельных аудиопотока аудиовизуальной информации: аудиопоток (1) 316 кэширования аудиовизуальной информации, и аудиопоток (2) 318 кэширования аудиовизуальной информации, каждый из которых связан с различной скоростью передачи данных.
Как показано, модуль 212 кэширования аудиовизуальной информации создает: два временно не смежных видеосегмента 320 и 326 кэширования аудиовизуальной информации в видеопотоке (1) 310 кэширования аудиовизуальной информации, один видео сегмент 322 кэширования аудиовизуальной информации в видеопотоке (2) 312 кэширования аудиовизуальной информации, и один видеосегмент 324 кэширования аудиовизуальной информации в видеопотоке (3) кэширования аудиовизуальной информации. Дополнительно, модуль 212 кэширования аудиовизуальной информации создал: один аудиосегмент 328 кэширования аудиовизуальной информации в аудиопотоке (1) 316 кэширования аудиовизуальной информации, и один сегмент 330 кэширования аудиовизуальной информации в аудиопотоке (2) кэширования аудиовизуальной информации.
Как отмечено, модуль 212 кэширования аудиовизуальной информации также создает для каждого принятого файла потоковой аудиовизуальной информации структуры данных сегмента с заголовком кэширования аудиовизуальной информации. Сегмент с заголовком кэширования аудиовизуальной информации включает в себя поле идентификатора файла, поле считчика сегментов кэширования аудиовизуальной информации, одно или более информационных полей сегментов кэширования аудиовизуальной информации, и/или описание файлов потоковой аудиовизуальной информации.
В соответствии с одним вариантом осуществления поле идентификатора файла включает в себя глобально уникальный идентификатор (GUID), который идентифицирует кэш-файл, в который сохраняют данные каждого из потоков кэширования аудиовизуальной информации и сегменты для заданного файла потоковой аудиовизуальной информации. Поле считчика сегментов кэширования аудиовизуальной информации хранит число, указывающее общее количество сегментов кэширования аудиовизуальной информации, имеющих данные, сохраненные в кэш-файле. Каждое информационное поле сегментов кэширования аудиовизуальной информации хранит информационную структуру данных сегментов кэширования аудиовизуальной информации для каждого сегмента кэширования аудиовизуальной информации, имеющего данные, сохраненные в кэш-файле.
Информационная структура данных сегментов кэширования аудиовизуальной информации включает в себя поля, содержащие некоторые или все из следующей информации об одиночном сегменте кэширования аудиовизуальной информации, имеющем данные в кэш-файле: идентификатор сегмента кэширования аудиовизуальной информации; идентификатор потока, который указывает поток кэширования аудиовизуальной информации, включающий в себя сегмент кэширования аудиовизуальной информации; индикатор начальной позиции сегмента, который указывает начало сегмента кэширования аудиовизуальной информации в том потоке кэширования аудиовизуальной информации, который включает в себя сегмент кэширования аудиовизуальной информации; идентификатор конечной позиции сегмента, который указывает конец сегмента кэширования аудиовизуальной информации в том потоке кэширования аудиовизуальной информации, который включает в себя сегмент кэширования аудиовизуальной информации; индикатор размера потока, который указывает размер потока кэширования аудиовизуальной информации, включающего в себя сегмент кэширования аудиовизуальной информации; идентификатор предыдущего сегмента, который указывает сегмент кэширования аудиовизуальной информации, если таковые вообще имеются, непосредственно предшествующий сегменту кэширования аудиовизуальной информации в потоке кэширования аудиовизуальной информации; идентификатор следующего сегмента, который указывает сегмент кэширования аудиовизуальной информации, если таковой вообще имеется, непосредственно следующий за сегментом кэширования аудиовизуальной информации в потоке кэширования аудиовизуальной информации; и идентификатор типа данных сегмента, который указывает тип данных (например, аудио, видео и т.д.), включенных в сегмент кэширования аудиовизуальной информации.
Информация, включенная в описание файла потоковой аудиовизуальной информации, зависит от формата файла потоковой аудиовизуальной информации. Однако, в общем, описание файла потоковой аудиовизуальной информации может включать в себя такую информацию как описания различных потоков файлов аудиовизуальной информации, описание кодека, используемого для формирования содержимого файла аудиовизуальной информации, и/или другие метаданные, относящиеся к содержимому.
Во время работы модуль 212 кэширования аудиовизуальной информации создает сегмент индекса кэширования байтов и связанный сегмент данных кэширования байтов для каждого сегмента кэширования аудиовизуальной информации, созданного модулем кэширования аудиовизуальной информации. В соответствии с одним вариантом осуществления каждый сегмент данных кэширования байтов включает в себя, без ограничения, представимые данные (например, аудио- или видеоданные и т.д.) сегмента кэширования аудиовизуальной информации, из которого они созданы. В соответствии с одним вариантом осуществления каждый индекс кэширования байтов включает в себя, без ограничения, следующую информацию, относящуюся к данным в ее связанном сегменте данных кэширования байтов: начальное время, продолжительность во времени, смещение данных в сегменте данных кэширования байтов, и/или размер данных.
В соответствии с одним вариантом осуществления модуль 212 кэширования аудиовизуальной информации создает или инициализирует модуль 214 кэширования байтов, описанный ниже. В соответствии с этим вариантом осуществления модуль 212 кэширования аудиовизуальной информации может создавать или инициализировать (назначать) одиночный модуль 214 кэширования байтов или множество модулей кэширования байтов.
Модуль 214 кэширования байтов служит, помимо прочего, для преобразования в последовательную форму и сохранять данные из сегментов индекса кэширования байтов и сегментов данных кэширования байтов в кэш-файле, в соответствии с заранее определенным форматом структуры данных кэш-файла. Фиг. 4 иллюстрирует один такой примерный формат структуры данных кэш-файла для кэш-файла 216. Как показано, кэш-файл 216 состоит из множества страниц 410. В эти страницы включены страница 412 заголовка и ряд страниц 414-420 данных. В общем, страницы 414-420 данных включают в себя индекс кэширования байтов и сегменты данных, созданные модулем 212 кэширования аудиовизуальной информации, в то время как страница 412 заголовка включает в себя информацию, которая описывает одну или более характеристик страниц данных.
Как показано на фиг. 4, страница 412 заголовка включает в себя множество полей 422 данных страницы заголовка. В поля 422 данных страницы заголовка включены поле 424 данных заголовка кэш-файла и ряд полей 426-432 данных управляющей записи кэш-файла (УЗКФ, CFCR). Поле 424 данных заголовка кэш-файла далее включает в себя ряд полей 436 заголовка кэширования. В поля 436 заголовка кэширования включены поле 438 GUID (глобально уникального идентификатора) заголовка кэширования, поле 440 флагов, запись 442 о свободных страницах, поле 444 данных о количестве CFCR, и поле 446 ID (идентификатора) внешнего блока. Поле 438 GUID заголовка кэширования включает в себя глобально уникальный идентификатор, который однозначно идентифицирует кэш-файл 216. Поле 440 флагов включает в себя флажок индикатора, который определяет, включает ли кэш-файл в себя достоверные данные.
Поле 444 данных о количестве CFCR включает в себя идентификатор, который определяет количество управляющих записей кэш-файла, включенных в поля 422 данных страницы заголовка. Поле 446 ID внешнего блока включает в себя указатель на страницу в кэш-файле, которая включает в себя дополнительные управляющие записи кэш-файла. Поле 446 ID внешнего блока используется в случае, когда количество записей кэш-файла, требуемых в кэш-файле, больше чем количество управляющих записей кэш-файла, которые могут быть включены в страницу 412 заголовка.
Запись 442 о свободных страницах включает в себя множество полей 441 данных записей таблицы, включающих в себя поле 443 данных о количестве свободных страниц, поле 445 ID первого внешнего блока и поле 447 записи о свободных страницах. Поле 443 данных о количестве свободных страниц включает в себя идентификатор, указывающий количество свободных страниц в кэш-файле. Поле 447 записи о свободных страницах включает в себя таблицу, конкретно идентифицирующую различные свободные страницы данных в кэш-файле. В случае, когда количество свободных страниц данных превышает количество свободных страниц данных, которые могут быть определены в поле 447 записи о свободных страницах, ID первого внешнего блока включает в себя указатель на страницу, которая включает в себя структуру данных, идентифицирующую дополнительные свободные страницы данных.
Каждая из управляющих записей 426-432 кэш-файла связана с одиночным сегментом кэширования байтов. Вообще, каждая из управляющих записей 426-432 кэш-файла включает в себя информацию, определяющую позицию ее связанного кэша байтов в кэш-файле. Как показано на фиг. 4, каждая управляющая запись кэш-файла включает в себя множество полей 448 данных CFCR. В поля 448 данных CFCR включены поле 450 GUID CFCR, поле 452 индекса первой страницы, поле 454 смещения первой страницы, поле 456 смещения последней страницы и запись 458 таблицы страниц кэширования. Каждое из полей 448 данных CFCR и информация, содержащаяся в ней, может быть названа связанной с одиночный сегментом кэширования байтов, связанного с управляющей записью кэш-файла, которой они принадлежат.
Поле 450 GUID включает в себя глобально уникальный идентификатор, который однозначно идентифицирует управляющую запись кэш-файла, в которую оно включено. Вообще, поле 452 индекса первой страницы, поле 454 смещения первой страницы, поле 456 смещения последней страницы включают в себя адреса, определяющие окно или диапазон адресов, в которых сохранены данные сегмента кэширования байтов.
В соответствии с одним вариантом осуществления поле 452 индекса первой страницы включает в себя адрес первой страницы из страниц данных, включающих в себя ее связанный сегмент кэширования байтов. Поле 454 смещения первой страницы включает в себя указатель на местоположение в странице, относящееся к началу страницы, указанное полем 452 индекса первой страницы, начала данных его связанного сегмента кэширования байтов. Поле 456 смещения последней страницы включает в себя указатель на местоположение в странице относительно начала страницы, указанное полем 452 индекса первой страницы, конца данных его связанного сегмента кэширования байтов.
Запись 458 таблицы страниц кэширования включает в себя множество полей 460 данных записи таблицы, включающее в себя поле 462 данных множества страниц, ID (идентификатор) 464 первого внешнего блока и запись 466 страниц кэширования. Поле 462 данных множества страниц включает в себя идентификатор, указывающий количество страниц данных, которые содержат данные из его связанного сегмента кэширования байтов. Поле 466 записи страниц кэширования включает в себя таблицу, идентифицирующую различные страницы данных, которые включают в себя данные из его связанного сегмента кэширования байтов. В случае, если количество страниц данных, включающих в себя данные из его связанного сегмента кэширования байтов, превышает количество страниц данных, которые могут быть заданы в поле 466 записи страниц кэширования, поле 464 ID (идентификатора) первого внешнего блока включает в себя указатель на страницу, которая включает в себя структуру данных, идентифицирующую дополнительные страницы данных, включающие в себя данные из его связанного сегмента кэширования байтов.
Фиг. 5 иллюстрирует примерную последовательность операций, включающую в себя различные операции 500 для приема и сохранения файла потоковой аудиовизуальной информации. В соответствии с одним вариантом осуществления последовательность операций реализуется клиентским устройством, например клиентским устройством 102, изображенным на фиг. 2, и может быть реализована в программном обеспечении, программируемом оборудовании, аппаратном обеспечении или их комбинациях.
Как показано на фиг. 5, в начале последовательности 500 операций выполняют запрос 510 для всего или части заданного файла потоковой аудиовизуальной информации. Например, в соответствии с одним вариантом осуществления выполняют запрос на серверное устройство, например серверное устройство 104 на фиг. 2, на конкретный файл потоковой аудиовизуальной информации. После запроса 510 на операции 512 определения определяют, является ли требуемый файл потоковой аудиовизуальной информации доступным. Если определено, что требуемый файл потоковой аудиовизуальной информации недоступен, последовательность 500 операций завершается. Если, однако, определено, что требуемый файл потоковой аудиовизуальной информации является доступным, тогда операция 514 создания кэш-файла создает кэш-файл для хранения требуемого файла потоковой аудиовизуальной информации. В соответствии с одним вариантом осуществления операция 514 создания кэш-файла создает кэш-файл в модуле хранения данных, например модуле 218 хранения данных из фиг. 2.
После создания кэш-файла операция 516 запроса описания запрашивает описание файла потоковой аудиовизуальной информации от серверного устройства. При выполнении операции 518 сохранения описания затем принимают и сохраняют описание файлов потоковой аудиовизуальной информации в созданном файле кэширования. Затем, при выполнении операции 520 выбора потока файлов потоковой аудиовизуальной информации выбирают поток аудиовизуальной информации от серверного устройства для передачи на клиентское устройство. В соответствии с одним вариантом осуществления на операции 520 выбора потока файлов потоковой аудиовизуальной информации выбирают поток для передачи на основании, по меньшей мере частично, ширины полосы пропускания, доступной в настоящее время между клиентским устройством и серверным устройством. Операция 522 определения потока затем определяет, существует ли соответствующий поток кэширования аудиовизуальной информации в кэш-файле для выбранного потока. То есть, на этапе 522 определения потока определяют, присутствует ли поток кэширования аудиовизуальной информации, имеющий тот же самый тип и скорость передачи данных, что и выбранный поток в кэш-файле.
Если определено, что соответствующий поток кэширования аудиовизуальной информации не существует в кэш-файле для выбранного потока, на этапе 524 создания потока кэширования аудиовизуальной информации затем создают соответствующий поток кэширования аудиовизуальной информации в кэш-файле. После создания соответствующего потока кэширования аудиовизуальной информации на этапе 526 создания сегмента кэширования аудиовизуальной информации создают сегмент кэширования аудиовизуальной информации в потоке кэширования аудиовизуальной информации, созданном во время выполнения операции 524, соответствующей выбранному потоку. Возвращаясь к операции 522 определения, если определено, что соответствующий поток кэширования уже существует в кэш-файле для выбранного потока, последовательность операций обходит операцию 524 создания потока кэширования потоковой аудиовизуальной информации, и происходит переход к операции 526 создания сегмента кэширования аудиовизуальной информации, на которой сегмент кэширования аудиовизуальной информации создается в соответствующем потоке кэширования аудиовизуальной информации. После операции создания сегмента кэширования аудиовизуальной информации на операции 528 потоковой передачи затем направляют в виде потока данные от выбранного потока в созданный сегмент кэширования аудиовизуальной информации.
Как только данные из выбранного потока направляются в виде потока в созданный кэш сегмента аудиовизуальной информации, операция 530 обнаружения поиска определяет, запрошена ли операция поиска. Если определено, что операция поиска запрошена, в соответствии с последовательностью операций, осуществляют переход назад к операции 520 выбора потока файла потоковой аудиовизуальной информации. Если определено, что операция поиска не запрошена, последовательность операций продолжают для обнаружения изменения полосы пропускания на этапе 532, на котором определяют, изменилась ли полоса пропускания между клиентским устройством и серверным устройством, так как была выполнена операция 520 выбора потока файла потоковой аудиовизуальной информации. Если определено, что произошло изменение в полосе пропускания, последовательность операций возвращается к операции 522 определения потока. Если определено, что изменение в полосе пропускания не произошло, последовательность операций переходит к операции завершения определения потока, на которой определяется, был ли достигнут конец выбранного потока при операции 520 выбора потока файла потоковой аудиовизуальной информации. Если определено, что конец выбранного потока не был достигнут, последовательность 500 операций переходит назад к операции 530 обнаружения поиска. Если определено, что конец выбранного потока был достигнут, последовательность 500 операций переходит к операции 536 определения завершения требуемого файла аудиовизуальной информации, на которой определяют, был ли файл аудиовизуальной информации, запрошенный на этапе 510, полностью сохранен к кэш-файле. В соответствии с одним вариантом осуществления запрошенный файл аудиовизуальной информации определяется как законченный, если все требуемые потоки были полностью загружены на приемлемой скорости передачи данных. Если определено, что требуемый файл аудиовизуальной информации не был полностью сохранен в кэш-файле, последовательность 500 операций возвращается к операции 520 выбора потока файла потоковой аудиовизуальной информации. Если однако определено, что требуемый файл потоковой аудиовизуальной информации был полностью сохранен в кэш-файле, последовательность 500 операций завершается.
Фиг. 6 иллюстрирует примерную последовательность 600 операций, включающую в себя различные операции 600 для извлечения и воспроизведения потоков аудиовизуальной информации. Последовательность 600 операций включает в себя операцию для выборочно извлечения одиночного потока, например одиночного видео- или аудиопотока, из кэш-файла, например кэш-файла 216. Следует заметить, что может быть извлечено множество потоков в файле потоковой аудиовизуальной информации и/или кэш-файла в соответствии с последовательностью 600 операций. В соответствии с одним вариантом осуществления последовательность 600 операций реализуется клиентским устройством, например клиентским устройством 102 на фиг. 2, и может быть реализована программным обеспечением, программируемым оборудованием, аппаратным обеспечением или их комбинацией.
Как показано на фиг. 6, в начале последовательности 600 операций принимают запрос от модуля запроса данных (например проигрыватель (плеер) аудиовизуальной информации), чтобы воспроизвести данные, начиная с требуемого момента в конкретном типе потока. Например, может быть принят запрос, чтобы начать воспроизведение видеопотока с конкретного момента времени в отношении конкретного файла потоковой аудиовизуальной информации, сохраненного на сервере. Однако вместо обращения непосредственно к серверу для обслуживания запроса, операция 612 (определения) предпочтительной скорости передачи данных определяет, являются ли требуемые данные доступными в кэш-файле на предпочтительной скорости передачи данных. Предпочтительная скорость передачи данных может быть установлена или определена различными способами. Например, и без ограничения, в соответствии с одним вариантом осуществления используется методика парных пакетов, чтобы определить предпочтительную скорость передачи данных. В соответствии с другим вариантом осуществления пользователь может явно указать предпочтительную скорость передачи данных.
Если требуемые данные не доступны в кэш-файле на предпочтительной скорости передачи данных, тогда на операции 614 запроса сервера запрашивают требуемые данные от сервера и сохраняют требуемые данные в кэш-файле. После операции 614 запроса сервера последовательность операций возвращается к операции 612 предпочтительной скорости передачи данных. В соответствии с одним вариантом осуществления после того, как сделано множество неудачных попыток, чтобы получить требуемые данные от сервера, выполняют определение относительно того, являются ли требуемые данные доступными в кэш-файле на скорости передачи данных меньшей, чем предпочтительная скорость передачи данных. Если да, то к запрашиваемым данным с более низкой скоростью передачи данных можно обращаться из кэш-файла.
Затем операция 616 определения момента начала определяет, какой поток кэширования аудиовизуальной информации в кэш-файле включает в себя момент начала требуемых данных. Операция 618 доступности данных тогда определяет, являются ли требуемые данные доступными с момента начала до конца потока в соответствии с другим способом, операция 618 (определения) доступности данных определяет, имеются ли любые временные разрывы в данных в потоке от момента начала до конца потока. Если определено, что данные являются доступными от момента начала до конца потока, последовательность операций переходит к операции 622 обнаружения сегмента кэширования, на которой обнаруживают сегмент кэширования аудиовизуальной информации в определенном потоке кэширования аудиовизуальной информации, который включает в себя момент начала. Если, однако, определено, что данные не доступны от момента начала до конца потока, последовательность операций продолжается в соответствии с операцией 620 запроса данных сервера, на которой запрашивают от сервера любые данные, которые необходимы, чтобы завершить поток, так что не имеется никаких временных разрывов от момента начала до конца потока. Затем последовательность 600 операций переходит к операции 622 определения сегмента кэширования. Следует заметить, что последовательность операций продолжается после того, как запрос был сделан к серверу посредством операции 620 запроса данных сервера. То есть последовательность операций не приостанавливается до тех пор, пока данные, запрошенные на операции 620, не будут приняты от сервера и сохранены.
После операции 622 определения сегмента кэширования операция 624 воспроизведения доставляет данные от определенного сегмента кэширования аудиовизуальной информации к запрашивающему данные модулю для воспроизведения. В то время как определенный сегмент кэширования аудиовизуальной информации доставляют запрашивающему модулю, на этапе 626 обнаружения поиска определяют, был ли сделан запрос поиска нового момента начала в определенном потоке кэширования аудиовизуальной информации. Это может происходить, например, когда операция поиска выполнена запрашивающим данные модулем другого временного местоположения в определенном потоке кэширования аудиовизуальной информации. Если на операции 626 обнаружения поиска решено, что поиск запрашивался, последовательность 600 операций возвращается к операции 618 доступных данных. Если, однако, на операции 626 обнаружения поиска решено, что поиск не запрашивался, и после того, как данные из определенного сегмента кэширования аудиовизуальной информации были полностью доставлены запрашивающему данные модулю, при выполнении операции 628 определения конца потока кэширования определяют, был ли достигнут конец определенного потока кэширования аудиовизуальной информации. Если определено, что конец определенного потока кэширования аудиовизуальной информации не был достигнут, при выполнении операции 630 следующего сегмента кэширования определяют следующий сегмент кэширования аудиовизуальной информации в определенном потоке кэширования аудиовизуальной информации, к которому нужно обращаться. Если, однако, определено, что был достигнут конец определенного потока кэширования аудиовизуальной информации, последовательность 600 операций переходит к операции 632 определения конца файла (EOF), на которой определяют, был ли достигнут конец кэш-файла. Если определено, что конец кэш-файла не был достигнут, последовательность 600 операций возвращается к операции 628 определения конца потока кэширования. Если, однако, определено, что конец кэш-файла был достигнут, последовательность 600 операций завершается.
Различные последовательности операций были проиллюстрированы на фиг. 5 и 6. Следует отметить, что операции, проиллюстрированные на чертежах, могут быть выполнены в указанном порядке, или, альтернативно, в другом порядке.
Фиг. 7 иллюстрирует общую компьютерную среду 700, которая может использоваться, чтобы осуществить способы, описанные выше. Компьютерная среда 700 является только одним примером вычислительной среды и не предназначена для предложения какого-либо ограничения относительно объема использования или функциональных возможностей компьютера и сетевых структур. Компьютерная среда 700 не должна интерпретироваться как имеющая какую-либо зависимость или требования, относящиеся к любому или комбинации компонентов, проиллюстрированных в примерной компьютерной среде 700.
Компьютерная среда 700 включает в себя вычислительное устройство общего назначения в форме компьютера 702. Компьютером 702 может быть, например, клиентское устройство 102 или серверное устройство 104 на фиг. 1 или 2. Компоненты компьютера 702 могут включать в себя, но не ограничиваться ими, один или более процессоров или устройств 704 обработки, системную память 706 и системную шину 708, которая соединяет различные элементы системы, включая процессор 704, к системной памяти 706. Системная шина 708 представляет одну или более из любого из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину, ускоренный графический порт и процессор или локальную шину, используя любую из множества шинных архитектур. В качестве примера такие архитектуры могут включать в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (МСА), усовершенствованную шину ISA (EISA), локальную шину ассоциации стандартов видеоэлектроники (VESA), и шину связи периферийных компонентов (PCI), также известную как шина Mezzanine.
Компьютер 702 типично включает в себя множество считываемых компьютером носителей. Таким носителем может быть любой доступный носитель, к которому может обращаться компьютер 702 и который включает в себя и энергозависимые и энергонезависимые носители, сменные и несменные носители.
Системная память 706 включает в себя считываемые компьютером носители в форме энергозависимой памяти, например ОЗУ (ОЗУ) 710, и/или энергонезависимой памяти, например запоминающего устройства только для чтения (ПЗУ) 712. Базовая система ввода-вывода (BIOS) 714, содержащая основные подпрограммы, которые помогают передавать информацию между элементами в компьютере 702, например, в течение запуска, сохранена в ПЗУ 712. ОЗУ 710 типично содержит данные и/или программные модули, которые являются немедленно доступными и/или используемыми в настоящее время процессором 704.
Компьютер 702 может также включать в себя другие сменные/несменные, энергозависимые/энергонезависимые компьютерные носители записи. В качестве примера фиг. 7 иллюстрирует привод 716 жесткого диска для считывания с и записи на несменный энергонезависимый магнитный носитель (не показан), привод 718 магнитного диска для считывания с и записи на сменный энергонезависимый магнитный диск 720 (например, "гибкий диск"), и привод 722 оптического диска для считывания с и/или записи на сменный энергонезависимый оптический диск 724, например CD-ROM, DVD-ROM, или другие оптические носители. Привод 716 жесткого диска, привод 718 магнитного диска и привод 722 оптического диска каждый связаны с системной шиной 708 одним или более интерфейсами 726 носителей. Альтернативно, привод 716 жесткого диска, привод 718 магнитного диска и привод 722 оптического диска могут быть связаны с системной шиной 708 одним или большим количеством интерфейсов (не показаны).
Накопители на дисках и связанные с ними считываемые компьютером носители обеспечивают энергонезависимое хранение считываемых компьютером команд, структур данных, программных модулей и других данных для компьютера 702. Хотя пример иллюстрирует жесткий диск 716, сменный магнитный диск 720 и сменный оптический диск 724, должно быть понятно, что также могут использоваться другие типы считываемых компьютером носителей, которые могут хранить данные, являющиеся доступными для компьютера, например магнитные кассеты или другие магнитные запоминающие устройства, платы флэш-памяти, CD-ROM, цифровые универсальные диски (DVD) или другая оптическая память, блоки памяти произвольного доступа (ОЗУ), блоки памяти только для чтения (ПЗУ), электрически стираемое ППЗУ (СППЗУ), и т.п., чтобы реализовать примерную вычислительную систему и среду.
Множество программных модулей может быть сохранено на жестком диске 716, магнитном диске 720, оптическом диске 724, ПЗУ 712 и/или ОЗУ 710, включая, например, операционную систему 726, одну или более прикладных программ 728, другие программные модули 730 и программные данные 732.
Пользователь может вводить команды и информацию в компьютер 702 через устройства ввода, например клавиатуру 734, и устройства 736 указания (например, "мышь"). Другие устройства 738 ввода (не показаны конкретно) могут включать в себя микрофон, джойстик, игровую сенсорную панель, спутниковую антенну, последовательный порт, сканер и/или подобные. Эти и другие устройства ввода связаны с процессором 704 через интерфейсы 740 ввода/вывода, которые подсоединены к системной шине 708, но могут быть связаны другим интерфейсом и шинными структурами, например параллельным портом, игровым портом или универсальной последовательной шиной (USB).
Монитор 742 или другой тип устройства отображения может также быть связан с системной шиной 708 через интерфейс, например видеоадаптер 744. В дополнение к монитору 742, другие периферийные устройства вывода могут включать в себя компоненты, например громкоговорители (не показаны) и принтер 746, которые могут быть связаны с компьютером 702 через интерфейсы 740 ввода/вывода.
Компьютер 702 может работать в сетевой среде, используя логические подключения к одному или более удаленным компьютерам, например удаленному вычислительному устройству 748. В качестве примера, удаленное вычислительное устройство 748 может быть персональным компьютером, переносным компьютером, сервером, маршрутизатором, сетевым компьютером, одноранговым устройством или другим общим сетевым узлом и т.п. Удаленное вычислительное устройство 748 проиллюстрировано в качестве переносного компьютера и может включать в себя многие или все элементы и особенности, описанные здесь относительно компьютера 702.
Логические подключения между компьютером 702 и удаленным компьютером 748 изображены как локальная сеть (LAN) 750 и общая глобальная сеть связи (WAN) 752. Такие сетевые среды являются обычными в офисах, компьютерных сетях в масштабах предприятия, интранет и Интернет.
При реализации в сетевой среде LAN компьютер 702 может быть связан с локальной сетью 750 через сетевой интерфейс или адаптер 754. При реализации в сетевой среде WAN компьютер 702 может включать в себя модем 756 или другие средства для установления связи по глобальной сети 752. Модем 756, который может быть внутренним или внешним для компьютера 702, может быть связан с системной шиной 708 через интерфейсы 740 ввода/вывода или другие соответствующие механизмы. Должно быть понятно, что проиллюстрированные сетевые подключения являются примерными, и что могут быть использованы другие средства установления линий связи между компьютерами 702 и 748.
В сетевой среде, например, проиллюстрированной в отношении вычислительной среды 700, программные модули, изображенные относительно компьютера 702 или его частей, могут быть сохранены в удаленном запоминающем устройстве памяти. В качестве примера удаленные прикладные программы 758 постоянно находятся на ЗУ удаленного компьютера 748. С целью иллюстрации прикладные программы и другие выполнимые компоненты программы, например операционная система, проиллюстрированы здесь как дискретные блоки, хотя очевидно, что такие программы и компоненты могут постоянно находиться в различные моменты времени в различных компонентах памяти вычислительного устройства 702 и выполнены процессором(ами) компьютера.
Различные модули и способы могут быть описаны здесь в общем контексте компьютером выполняемых команд, например программных модулей, выполняемых одним или более компьютерами или другими устройствами. Вообще, программные модули включают в себя подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют специфические задачи или реализуют специфические абстрактные типы данных. Как правило, функциональные возможности программных модулей могут быть объединены или распределены так, как требуется в различных вариантах осуществления.
Реализация этих модулей и способов может быть сохранена на или передана посредством некоторых форм считываемых компьютером носителей. Считываемые компьютером носители могут быть любыми доступными носителями, к которым может обращаться компьютер. В качестве примера, а не ограничения, считываемый компьютером носитель может содержать "компьютерную среду хранения" и "коммуникационную среду".
"Компьютерная среда хранения" включает в себя энергозависимые и энергонезависимые, сменные и несменные носители, осуществленные любым способом или технологией для хранения информации, например, считываемые компьютером команды, структуры данных, программные модули или другие данные. Компьютерная среда хранения включает в себя, но не ограничена ими, ОЗУ, ПЗУ, СППЗУ, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или другие оптические средства хранения, магнитные кассеты, магнитную ленту, память на магнитном диске или другие магнитные запоминающие устройства, или любую другую среду, которая может использоваться для хранения требуемой информации и к которой может обращаться компьютер.
"Коммуникационная среда" типично реализует считываемые компьютером команды, структуры данных, программные модули или другие данные в модулируемом сигнале данных, например сигнале несущей или другом транспортном механизме. Коммуникационная среда также включает в себя любые средства доставки информации. Термин "модулированный сигнал данных" означает сигнал, который имеет один или более из его параметров установленным или измененным таким образом, чтобы закодировать информацию в сигнале. В качестве примера, а не ограничения, коммуникационная среда включает в себя проводные носители, например проводную сеть или непосредственное проводное соединение, и беспроводные носители, например акустические, РЧ, инфракрасное излучение и другие беспроводные носители. Комбинации любых вышеупомянутых средств также включены в рамки считываемых компьютером носителей.
Хотя описание выше использует язык, который является специфическим для структурных особенностей и/или методологических действий, должно быть понятно, что системы и способы, определенные в прилагаемой формуле изобретения, не ограничены конкретными признаками или описанными действиями. Скорее, конкретные признаки и действия раскрыты в качестве примерных форм осуществления изобретения.
Изобретение относится к системам и способам кэширования файла потоковой аудиовизуальной информации при передаче. Техническим результатом является уменьшение вероятности отказа при воспроизведении файла потоковой аудиовизуальной информации на клиентском устройстве. В способе осуществляется хранение и извлечение частей файла потоковой аудиовизуальной информации, которые являются временно не смежными и/или закодированными с отличающимися скоростями передачи данных. Система содержит модуль хранения данных и модуль кэширования, выполненный с возможностью принимать и хранить множество временно не смежных частей файла потоковой аудиовизуальной информации в кэш-файле в модуле хранения данных. 4 н. и 20. з.п. ф-лы, 7 ил.
принимают множество временно не смежных частей файла потоковой аудиовизуальной информации в модуле кэширования, причем, по меньшей мере, первая и вторая из этих несмежных частей закодированы с различными скоростями передачи данных в битах, и сохраняют множество временно не смежных частей в одиночном кэш-файле,
причем модуль кэширования создает отдельный сегмент кэширования для каждой временно не смежной части, и при этом этап сохранения содержит этапы:
создают множество потоков кэширования аудиовизуальной информации, причем каждый поток кэширования аудиовизуальной информации ассоциирован с уникальной скоростью передачи данных в битах, сохраняют первую несмежную часть в первом сегменте кэширования аудиовизуальной информации в потоке кэширования аудивизуальной информации, ассоциированном со скоростью передачи данных в битах первой несмежной части,
сохраняют вторую несмежную часть во втором сегменте кэширования аудиовизуальной информации в потоке кэширования аудиовизуальной информации, ассоциированном со скоростью передачи данных в битах второй несмежной части, и
сохраняют потоки кэширования аудиовизуальной информации в кэш-файле.
создают первый поток кэширования аудиовизуальной информации,
ассоциированный со скоростью передачи данных в битах первой несмежной части,
сохраняют первую несмежную часть в сегменте кэширования аудиовизуальной информации первого потока сегментов аудиовизуальной информации,
создают второй поток кэширования аудиовизуальной информации,
ассоциированный со скоростью передачи данных в битах второй несмежной части,
сохраняют вторую несмежную часть в сегменте кэширования аудиовизуальной информации второго потока сегментов аудиовизуальной информации,
создают сегмент индекса кэширования байтов и сегмент данных кэширования байтов для каждого сегмента кэширования аудиовизуальной информации и
сохраняют упомянутые сегмент индекса кэширования байтов и сегмент данных кэширования байтов в кэш-файле.
создают посредством модуля кэширования множество потоков кэширования аудиовизуальной информации, причем каждый поток кэширования аудиовизуальной информации ассоциирован с уникальной скоростью передачи данных,
принимают в модуле кэширования множество частей файла потоковой аудиовизуальной информации, причем каждая часть ассоциирована с уникальной временной секцией файла потоковой аудиовизуальной информации,
сохраняют каждую часть в сегменте кэширования аудиовизуальной информации потока кэширования аудиовизуальной информации, ассоциированного со скоростью передачи в битах, с которой эта часть была закодирована, причем, по меньшей мере, две из упомянутых частей сохраняют в сегментах кэширования аудиовизуальной информации в различных потоках кэширования аудиовизуальной информации, сохраняют каждый из потоков кэширования аудиовизуальной информации в одном кэш-файле в модуле хранения данных.
создают сегмент индекса кэширования байтов и сегмент данных кэширования байтов для каждого сегмента кэширования аудиовизуальной информации и
сохраняют сегменты индекса кэширования байтов и сегменты данных кэширования байтов в кэш-файле.
создают сегмент индекса кэширования байтов и сегмент данных кэширования байтов для каждого сегмента и преобразуют в последовательную форму сегменты индекса кэширования байтов и сегменты данных кэширования байтов в кэш-файле.
модуль хранения данных,
модуль кэширования, выполненный с возможностью принимать и хранить множество временно не смежных частей файла потоковой аудиовизуальной информации в кэш-файле в упомянутом модуле хранения данных, причем две или более из множества временно не смежных частей закодированы с различными скоростями передачи данных в битах, причем модуль кэширования содержит модуль кэширования аудиовизуальной информации, выполненный с возможностью сохранять каждую из множества временно не смежных частей в качестве сегмента кэширования аудиовизуальной информации в одном из множества потоков кэширования аудиовизуальной информации, причем каждый поток кэширования аудиовизуальной информации ассоциирован с отличной скоростью передачи данных в битах, и сохранять множество потоков кэширования аудиовизуальной информации в кэш-файле.
производить разбор каждого сегмента кэширования аудиовизуальной информации в сегмент индекса кэширования байтов и сегмент данных кэширования байтов и
модуль кэширования дополнительно содержит модуль кэширования байтов, выполненный с возможностью сохранять сегменты индексов кэширования байтов и сегменты данных кэширования байтов к кэш-файле.
создавать множество потоков кэширования аудиовизуальной информации, причем каждый поток кэширования аудиовизуальной информации ассоциирован с уникальной скоростью передачи данных в битах, и сохранять каждую временно не смежную часть в качестве сегмента кэширования аудиовизуальной информации в потоке кэширования аудиовизуальной информации, ассоциированном со скоростью передачи данных в битах, с которой временно не смежная часть была закодирована, и
производить разбор каждого сегмента кэширования аудиовизуальной информации в сегмент индекса кэширования байтов и сегмент данных кэширования байтов, и
модуль кэширования байтов, выполненный с возможностью сохранять сегменты индекса кэширования байтов и сегменты данных кэширования байтов в кэш-файле.
создавать множество потоков кэширования аудиовизуальной информации, причем каждый поток кэширования аудиовизуальной информации ассоциирован с потоковым типом данных аудиовизуальной информации и скоростью передачи данных, с которой закодирована потоковая аудиовизуальная информация,
сохранять каждую временно не смежную часть принятых данных потоковой аудиовизуальной информации в потоке кэширования аудиовизуальной информации, ассоциированном с типом данных потоковой аудиовизуальной информации и скоростью передачи данных, с которой закодирована потоковая аудиовизуальная информация временно не смежной части, и
сохранять потоки кэширования аудиовизуальной информации в кэш-файле.
создавать множество потоков кэширования аудиовизуальной информации, причем каждый поток кэширования аудиовизуальной информации ассоциирован с типом данных потоковой аудиовизуальной информации и скоростью передачи данных, с которой закодирована потоковая аудиовизуальная информация, и
сохранять каждую временно не смежную часть принятых потоковых данных аудиовизуальной информации в качестве сегмента кэширования аудиовизуальной информации в потоке кэширования аудиовизуальной информации, ассоциированном с типом данных потоковой аудиовизуальной информации и скоростью передачи данных, с которой закодирована потоковая аудиовизуальная информация временно не смежной части,
производить разбор каждого сегмента кэширования аудиовизуальной информации в сегмент индекса кэширования байтов и сегмент данных кэширования байтов и
сохранять сегменты индекса кэширования байтов и сегменты данных кэширования байтов в кэш-файле.
создают множество потоков кэширования аудиовизуальной информации, причем каждый поток кэширования аудиовизуальной информации ассоциирован с уникальной скоростью передачи данных в битах, сохраняют первую несмежную часть в первом сегменте кэширования аудиовизуальной информации в потоке кэширования аудиовизуальной информации, ассоциированном со скоростью передачи данных в битах не смежной части,
сохраняют вторую несмежную часть во втором сегменте кэширования аудиовизуальной информации в потоке кэширования аудиовизуальной информации, ассоциированном со скоростью передачи данных в битах второй несмежной части, и
сохраняют потоки кэширования аудиовизуальной информации в кэш-файле.
принимают первую часть видео из файла потоковой аудиовизуальной информации, закодированную с первой скоростью передачи данных,
сохраняют упомянутую первую часть видео в видеопотоке кэширования аудиовизуальной информации, ассоциированном с первой скоростью передачи данных в битах,
принимают вторую часть видеофайла потоковой аудиовизуальной информации, закодированную со второй скоростью передачи данных в битах,
сохраняют вторую часть видео в видеопотоке кэширования аудиовизуальной информации, ассоциированном со второй скоростью передачи данных,
принимают первую аудиочасть файла потоковой аудиовизуальной информации,
сохраняют первую аудиочасть в потоке аудиокэширования аудиовизуальной информации и
сохраняют аудио- и видеопотоки кэширования аудиовизуальной информации в кэш-файле.
принимают первую часть видеофайла потоковой аудиовизуальной информации, закодированную с первой скоростью передачи данных в битах,
сохраняют первую часть видео в видеопотоке кэширования аудиовизуальной информации, ассоциированном с первой скоростью передачи данных в битах,
принимают вторую часть видеофайла потоковой аудиовизуальной информации, закодированную со второй скоростью передачи данных в битах,
сохраняют вторую часть видео в видеопотоке кэширования аудиовизуальной информации, ассоциированном со второй скоростью передачи данных в битах,
принимают третью часть видеофайла потоковой аудиовизуальной информации, закодированную с первой скоростью передачи данных,
причем третья часть видео является временно не смежной с первой частью видео,
сохраняют третью часть видео в видеопотоке кэширования аудиовизуальной информации, ассоциированном с первой скоростью передачи данных в битах,
принимают первую аудиочасть файла потоковой аудиовизуальной информации и
сохраняют первую аудиочасть в потоке аудиокэширования аудиовизуальной информации, и
сохраняют аудио- и видеопотоки кэширования аудиовизуальной информации в кэш-файле.
сохраняют каждую из временно не смежных частей в уникальном сегменте кэширования аудиовизуальной информации, формируют, по меньшей мере, два сегмента кэширования байтов из каждого сегмента кэширования аудиовизуальной информации и сохраняют упомянутые сегменты кэширования байтов в кэш-файле.
сохраняют каждую из временно не смежных частей в, по меньшей мере, двух сегментах кэширования байтов и
сохраняют упомянутые сегменты кэширования байтов в кэш-файле.
СПОСОБ И УСТРОЙСТВО КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ДАННЫХ | 1995 |
|
RU2117388C1 |
СПОСОБ И УСТРОЙСТВО ДЛЯ УПРАВЛЕНИЯ ВВОДОМ УЧАСТНИКОВ В СИСТЕМУ КОНФЕРЕНЦ-СВЯЗИ | 1996 |
|
RU2144283C1 |
Устройство для синхронизации хода реостатных контроллеров электропоезда | 1959 |
|
SU129670A1 |
US 6314466 А, 06.11.2001 | |||
US 2002029284 А, 07.03.2002. |
Авторы
Даты
2008-05-27—Публикация
2003-08-20—Подача