RU2629001C2 - Improved blocks transmission steaming system on request for streaming processing with small delay - Google Patents

Improved blocks transmission steaming system on request for streaming processing with small delay Download PDF

Info

Publication number
RU2629001C2
RU2629001C2 RU2014147463A RU2014147463A RU2629001C2 RU 2629001 C2 RU2629001 C2 RU 2629001C2 RU 2014147463 A RU2014147463 A RU 2014147463A RU 2014147463 A RU2014147463 A RU 2014147463A RU 2629001 C2 RU2629001 C2 RU 2629001C2
Authority
RU
Russia
Prior art keywords
multimedia
segment
time
block
random access
Prior art date
Application number
RU2014147463A
Other languages
Russian (ru)
Other versions
RU2014147463A (en
Inventor
Майкл Дж. ЛУБИ
Марк УОТСОН
Лоренцо ВИЧИЗАНО
Паям ПАКЗАД
Бинь Ван
Ин Чен
Томас ШТОКХАММЕР
Джабер Мохаммад БОРРАН
Original Assignee
Квэлкомм Инкорпорейтед
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/456,474 external-priority patent/US9380096B2/en
Application filed by Квэлкомм Инкорпорейтед filed Critical Квэлкомм Инкорпорейтед
Publication of RU2014147463A publication Critical patent/RU2014147463A/en
Application granted granted Critical
Publication of RU2629001C2 publication Critical patent/RU2629001C2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23106Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23406Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving management of server-side video buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234327Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into layers, e.g. base layer and one or more enhancement layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/438Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving encoded video stream packets from an IP network
    • H04N21/4383Accessing a communication channel
    • H04N21/4384Accessing a communication channel involving operations to reduce the access time, e.g. fast-tuning for reducing channel switching latency
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/84Generation or processing of descriptive data, e.g. content descriptors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Graphics (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Television Signal Processing For Recording (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

FIELD: information technology.
SUBSTANCE: streaming system is proposed on request of blocks for streaming with a low multimedia presentation delay. According to the encoding protocol, a plurality of multimedia segments is formed, where each media segment includes a random access point. In accordance with the same protocol, a plurality of multimedia fragments is coded, and the multimedia segments are aggregated from a plurality of media fragments.
EFFECT: streamlining the presentation of streaming media and providing efficient simultaneous or time-shared streaming of multimedia data.
18 cl, 33 dwg

Description

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕFIELD OF THE INVENTION

Настоящее изобретение относится к усовершенствованным системам и способам потоковой передачи мультимедиа, а более конкретно к системам и способам, которые адаптируются к условиям сети и буфера, чтобы оптимизировать представление потокового мультимедиа и обеспечить возможность эффективной одновременной или распределенной во времени передачи потоковых мультимедийных данных.The present invention relates to improved media streaming systems and methods, and more particularly, to systems and methods that adapt to network and buffer conditions to optimize streaming media performance and enable efficient simultaneous or time-distributed streaming of multimedia data.

УРОВЕНЬ ТЕХНИКИBACKGROUND

Передача потокового мультимедиа может стать все более и более важной, так как она становится общепринятой для высококачественного звука и видео, которые нужно передать по пакетным сетям, например Интернет, сотовым и беспроводным сетям, сетям в линиях электропередач, и другим типам сетей. Качество, с которым можно представить переданное потоковое мультимедиа, может зависеть от некоторого количества факторов, включая разрешение (или другие атрибуты) первоначального контента, качество кодирования первоначального контента, возможностей принимающих устройств по декодированию и представлению мультимедиа, своевременности и качества сигнала, принятого в приемниках, и т.д. Чтобы создать хорошее впечатление от восприятия потокового мультимедиа, могут быть особенно важны транспорт и своевременность сигнала, принятого в приемниках. Хороший транспорт может обеспечить точность принятого в приемнике потока относительно того, что отправляет отправитель, тогда как своевременность может представлять то, как быстро приемник может начать воспроизведение контента после начального запроса того контента.Streaming multimedia can become more and more important as it becomes common for high-quality audio and video that need to be transmitted over packet networks such as the Internet, cellular and wireless networks, power line networks, and other types of networks. The quality with which streaming multimedia can be presented may depend on a number of factors, including the resolution (or other attributes) of the original content, the quality of encoding of the original content, the capabilities of the receiving devices to decode and present multimedia, the timeliness and quality of the signal received at the receivers, etc. In order to create a good impression of the perception of streaming multimedia, transport and the timeliness of the signal received at the receivers can be especially important. Good transport can ensure the accuracy of the stream received at the receiver as to what the sender sends, while timeliness can represent how quickly the receiver can start playing content after the initial request for that content.

Систему передачи мультимедиа можно охарактеризовать как систему, имеющую источники мультимедиа, назначения мультимедиа и каналы (во времени и/или в пространстве), разделяющие источники и назначения. Обычно источник включает в себя передатчик с доступом к мультимедиа с управлением в электронном виде, и приемник с возможностью электронного управления приемом мультимедиа (или ее приближением) и выдачи его потребителю мультимедиа (например, пользователю, имеющему устройство отображения, соединенное некоторым способом с приемником, запоминающим устройством или элементом, другим каналом и т.д.).A multimedia transmission system can be characterized as a system having multimedia sources, multimedia destinations and channels (in time and / or space) separating the sources and destinations. Typically, the source includes a transmitter with access to multimedia with electronic control, and a receiver with the ability to electronically control the reception of multimedia (or its approximation) and issue it to a multimedia consumer (for example, a user having a display device connected in some way to a memory receiver device or element, another channel, etc.).

Хотя возможно много вариантов, в общем примере, система передачи мультимедиа содержит один или более серверов, которые имеют доступ к мультимедийному контенту в электронном виде, а одна или более клиентских систем или устройств формируют запросы мультимедиа к серверам, и серверы передают мультимедиа с использованием передатчика как части сервера, передающей к приемнику у клиента, чтобы клиент мог потреблять принятое мультимедиа некоторым способом. В простом примере имеется один сервер и один клиент, для заданного запроса и ответа, но это не обязательно так.Although there are many options, in a general example, a multimedia transmission system contains one or more servers that have access to multimedia content in electronic form, and one or more client systems or devices generate multimedia requests to the servers, and the servers transmit multimedia using the transmitter as parts of the server transmitting to the receiver at the client so that the client can consume received multimedia in some way. In a simple example, there is one server and one client for a given request and response, but this is not necessary.

Обычно системы передачи мультимедиа могут быть описаны либо моделью «загрузки», либо моделью «потоковой передачи». Модель «загрузки» может отличаться независимостью распределения во времени между передачей мультимедийных данных и воспроизведением мультимедиа пользователю или устройству-получателю.Typically, multimedia transmission systems can be described by either a “download” model or a “streaming” model. The “download” model may differ in the independence of the time distribution between the transmission of multimedia data and the playback of multimedia to a user or a recipient device.

В качестве примера, мультимедиа загружается в достаточном количестве заранее до того, когда оно нужно или будет использоваться, а когда оно используется, оно уже имеется как раз в нужном количестве у получателя. Передача в контексте загрузки часто выполняется с использованием протокола транспортировки файлов, например HTTP, FTP или доставки файлов однонаправленным транспортом (FLUTE), и скорость передачи можно определить по лежащему в основе потоку и/или протоколу отслеживания перегрузок, например TCP/IP. Работа потока или протокола отслеживания перегрузок может не зависеть от воспроизведения мультимедиа пользователю или устройству назначения, которое может происходить одновременно с загрузкой или в какое-нибудь другое время.As an example, multimedia is loaded in sufficient quantities in advance before when it is needed or will be used, and when it is used, it is already available in the right amount at the recipient. Transmission in the context of downloading is often accomplished using a file transfer protocol, such as HTTP, FTP, or Unidirectional File Delivery (FLUTE), and the transmission speed can be determined by the underlying stream and / or congestion tracking protocol, such as TCP / IP. The operation of the flow or congestion tracking protocol may not depend on multimedia playback to the user or destination device, which may occur simultaneously with the download or at some other time.

Режим «потоковой передачи» может отличаться сильной связью между распределением во времени передачи мультимедийных данных и воспроизведением мультимедиа пользователю или устройству-получателю. Передача в этом контексте часто выполняется с использованием протокола потоковой передачи, например потокового протокола реального времени (RTSP) для управления и транспортного протокола в режиме реального времени (RTP) для мультимедийных данных. Скорость передачи можно определить с помощью сервера потоковой передачи, часто она совпадает со скоростью воспроизведения данных.The “streaming” mode can be characterized by a strong connection between the distribution in time of the transmission of multimedia data and the playback of multimedia to a user or a recipient device. Transmission in this context is often performed using a streaming protocol, for example, a real-time streaming protocol (RTSP) for control and a real-time transport protocol (RTP) for multimedia data. The transmission speed can be determined using the streaming server, often it coincides with the speed of data playback.

Некоторые недостатки модели «загрузки» могут состоять в том, что из-за независимости распределения во времени передачи и воспроизведения, мультимедийные данные могут либо отсутствовать, когда они нужны для воспроизведения (например, из-за того, что имеющаяся в наличии полоса пропускания меньше скорости передачи мультимедийных данных), вызывая прекращение воспроизведения на мгновение («остановка»), что приводит к плохому восприятию пользователя, либо может потребоваться загрузить мультимедийные данные гораздо раньше воспроизведения (например, из-за того, что имеющаяся в наличии полоса пропускания больше скорости передачи мультимедийных данных), потребляя ресурсы хранения на принимающем устройстве, которые могут быть дефицитными, и потребляя ценные сетевые ресурсы для передачи, которые могут растрачиваться напрасно, если контент, в конечном счете, не воспроизводится или не используется иным образом.Some disadvantages of the “download” model may be that due to the independence of the distribution over the transmission and playback time, multimedia data may or may not be available when it is needed for playback (for example, due to the fact that the available bandwidth is less than speed multimedia data transfer), causing playback to stop momentarily (“stopping”), which results in poor user experience, or you may need to download multimedia data much earlier than playback ( For example, due to the fact that the available bandwidth is greater than the transmission speed of multimedia data), consuming storage resources on the receiving device, which may be scarce, and consuming valuable network resources for transmission, which may be wasted if the content is ultimately account is not reproduced or used in any other way.

Преимущество модели «загрузки» может состоять в том, что технология, необходимая для выполнения таких загрузок, например HTTP, очень зрелая, широко используется и применима к широкому диапазону приложений. Серверы загрузки и решения для широкой масштабируемости таких загрузок файлов (например, Web-серверы HTTP и сети передачи контента) легко могут иметься в наличии, делая развертывание услуг на основе этой технологии простым и недорогим.An advantage of the “download” model may be that the technology needed to perform such downloads, such as HTTP, is very mature, widely used and applicable to a wide range of applications. Download servers and solutions for the scalability of such file downloads (for example, HTTP Web servers and content transfer networks) can easily be available, making deployment of services based on this technology simple and inexpensive.

Некоторые недостатки модели «потоковой передачи» могут состоять в том, что обычно скорость передачи мультимедийных данных не адаптируется к имеющейся в наличии полосе пропускания в соединении от сервера к клиенту, и что необходимы специализированные потоковые серверы или более сложная сетевая архитектура, обеспечивающая полосу пропускания и гарантии задержки. Хотя существуют системы потоковой передачи, которые поддерживают изменение скорости передачи данных в соответствии с имеющейся в наличии полосой пропускания (например, Adobe Flash Adaptive Streaming), они обычно не так эффективны, как протоколы управления транспортными потоками загрузки, например TCP, при использовании всей имеющейся в наличии полосы пропускания.Some of the drawbacks of the streaming model may be that the multimedia data rate usually does not adapt to the available bandwidth from the server to the client, and that specialized streaming servers or a more complex network architecture providing bandwidth and guarantees are needed delays. Although there are streaming systems that support changing the data rate according to the available bandwidth (for example, Adobe Flash Adaptive Streaming), they are usually not as effective as transport control streaming protocols, for example, TCP, using all available in bandwidth availability.

В последнее время разработаны и развернуты новые системы передачи мультимедиа на основе сочетания моделей «потоковой передачи» и «загрузки». Пример такой модели в этом документе называется моделью «потоковой передачи по запросу блоков», в которой клиент мультимедиа запрашивает блоки мультимедийных данных у обслуживающей инфраструктуры с использованием протокола загрузки, например HTTP. Вопросом в таких системах может быть возможность начать воспроизведение потока, например декодирование и визуализацию принятых аудио и видео потоков с использованием персонального компьютера и демонстрацию видео на экране компьютера, и воспроизведение аудио через встроенные громкоговорители, или, в качестве другого примера, декодирование и визуализацию принятых аудио и видео потоков с использованием телевизионной приставки и демонстрацию видео на телевизионном устройстве отображения и воспроизведение аудио через стереосистему.Recently, new multimedia transmission systems have been developed and deployed based on a combination of streaming and download models. An example of such a model is referred to in this document as a “block-demand streaming” model in which the multimedia client requests multimedia blocks from the serving infrastructure using a download protocol, such as HTTP. The question in such systems may be the ability to start playing a stream, for example decoding and visualizing received audio and video streams using a personal computer and showing the video on a computer screen, and playing audio through the built-in speakers, or, as another example, decoding and visualizing the received audio and video streams using a set-top box, and showing video on a television display device and playing audio through a stereo system.

Другие вопросы, например способность декодирования исходных блоков достаточно быстро, чтобы не отставать от скорости потоковой передачи источника, минимизации задержки декодирования и уменьшения использования имеющихся в наличии ресурсов CPU, являются проблемами. Другим вопросом является предоставление устойчивого и масштабируемого решения по потоковой передаче, которое позволяет выходить из строя компонентам системы без неблагоприятного влияния на качество потоков, передаваемых приемникам. Другие проблемы могут возникнуть на основании быстро изменяющейся информации о представлении, когда она распространяется. Таким образом, желательно иметь усовершенствованные процессы и устройство.Other issues, such as the ability to decode source blocks fast enough to keep up with the source streaming speed, minimize decoding delay, and reduce the use of available CPU resources, are problems. Another issue is the provision of a sustainable and scalable streaming solution that allows system components to fail without adversely affecting the quality of streams transmitted to receivers. Other problems may arise based on rapidly changing presentation information when it is distributed. Thus, it is desirable to have improved processes and apparatus.

РАСКРЫТИЕ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

Система потоковой передачи по запросу блоков обеспечивает улучшения в восприятии пользователя и в эффективности полосы пропускания в таких системах, обычно используя систему захвата, которая формирует данные в виде, пригодном для обслуживания традиционным файловым сервером (HTTP, FTP или подобным), причем система захвата впускает контент и готовит его в виде файлов или элементов данных для обслуживания файловым сервером, который может включать в себя или не включать в себя кэш.A block-based streaming system provides improvements in user perception and bandwidth efficiency in such systems, typically using a capture system that generates data in a form suitable for serving with a traditional file server (HTTP, FTP or the like), while the capture system allows content to be received and prepares it in the form of files or data elements for servicing by a file server, which may or may not include a cache.

В соответствии с вариантом осуществления, сервер мультимедиа системы потоковой передачи по запросу блока обеспечивает потоковую передачу с малой задержкой контента представления мультимедиа. Относительно большие файлы мультимедийного сегмента для потоковой передачи профиля прямой трансляции (live) могут быть агрегированы из относительно небольших мультимедийных фрагментов для потоковой передачи с малой задержкой. Мультимедийные сегменты и мультимедийные фрагменты кодируются в соответствии с одинаковым протоколом кодирования.In accordance with an embodiment, a multimedia server of a streaming system upon request of a block enables low-delay streaming of multimedia presentation content. Relatively large multimedia segment files for streaming a live profile can be aggregated from relatively small multimedia fragments for low latency streaming. The multimedia segments and multimedia fragments are encoded in accordance with the same encoding protocol.

Нижеследующее подробное описание вместе с сопровождающими чертежами обеспечит более полное понимание предмета и преимуществ настоящего изобретения.The following detailed description, together with the accompanying drawings, will provide a more complete understanding of the subject and advantages of the present invention.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

Фиг. 1 изображает элементы системы потоковой передачи по запросу блоков в соответствии с вариантами осуществления настоящего изобретения.FIG. 1 depicts elements of a block-upon-demand streaming system in accordance with embodiments of the present invention.

Фиг. 2 иллюстрирует систему потоковой передачи по запросу блоков с Фиг. 1, показывая больше подробностей в элементах клиентской системы, которая соединяется с обслуживающей инфраструктурой блоков («BSI») для приема данных, которые обрабатываются системой захвата контента.FIG. 2 illustrates a block request streaming system of FIG. 1, showing more details in elements of a client system that connects to a serving block infrastructure (“BSI”) for receiving data that is processed by a content capturing system.

Фиг. 3 иллюстрирует аппаратную/программную реализацию системы захвата.FIG. 3 illustrates a hardware / software implementation of a capture system.

Фиг. 4 иллюстрирует аппаратную/программную реализацию клиентской системы.FIG. 4 illustrates a hardware / software implementation of a client system.

Фиг. 5 иллюстрирует возможные структуры хранилища контента, показанного на Фиг. 1, включая сегменты и файлы дескриптора представления мультимедиа («MPD»), и расшифровку сегментов, распределение во времени, и другую структуру в файле MPD.FIG. 5 illustrates possible structures of the content store shown in FIG. 1, including segments and multimedia presentation descriptor (“MPD”) files, and segment decoding, time distribution, and other structure in the MPD file.

Фиг. 6 иллюстрирует подробности типичного исходного сегмента, который может храниться в хранилище контента, проиллюстрированном на Фиг. 1 и 5.FIG. 6 illustrates details of a typical source segment that may be stored in the content repository illustrated in FIG. 1 and 5.

Фиг. 7a и 7b иллюстрируют простое и иерархическое индексирование в файлах.FIG. 7a and 7b illustrate simple and hierarchical indexing in files.

Фиг. 8(а) иллюстрирует задание переменных размеров блока с выровненными точками поиска на множестве версий мультимедийного потока.FIG. 8 (a) illustrates the definition of variable block sizes with aligned search points on multiple versions of a multimedia stream.

Фиг. 8(b) иллюстрирует задание переменных размеров блока с не выровненными точками поиска на множестве версий мультимедийного потока.FIG. 8 (b) illustrates the definition of variable block sizes with non-aligned search points on multiple versions of a multimedia stream.

Фиг. 9(а) иллюстрирует таблицу метаданных.FIG. 9 (a) illustrates a metadata table.

Фиг. 9(b) иллюстрирует передачу блоков и таблицы метаданных от сервера к клиенту.FIG. 9 (b) illustrates the transfer of blocks and metadata tables from server to client.

Фиг. 10 иллюстрирует блоки, которые не зависят от границ RAP.FIG. 10 illustrates blocks that are independent of RAP boundaries.

Фиг. 11 иллюстрирует непрерывное и прерывающееся распределение во времени по сегментам.FIG. 11 illustrates a continuous and discontinuous time distribution over segments.

Фиг. 12 является чертежом, показывающим аспект масштабируемых блоков.FIG. 12 is a drawing showing an aspect of scalable blocks.

Фиг. 13 изображает графическое отображение развития со временем некоторых переменных в системе потоковой передачи по запросу блоков.FIG. 13 depicts a graphical representation of the evolution of some variables over time in a streaming system upon request of blocks.

Фиг. 14 изображает другое графическое отображение развития со временем некоторых переменных в системе потоковой передачи по запросу блоков.FIG. 14 depicts another graphical representation of the evolution of some variables over time in a streaming system upon request of blocks.

Фиг. 15 изображает сетку состояний в зависимости от пороговых значений.FIG. 15 depicts a grid of states versus threshold values.

Фиг. 16 является блок-схемой процесса, который может выполняться в приемнике, который может запрашивать одиночные блоки и несколько блоков в запросе.FIG. 16 is a flowchart of a process that may be performed at a receiver that may request single blocks and multiple blocks in a request.

Фиг. 17 является блок-схемой алгоритма гибкого конвейерного процесса.FIG. 17 is a flowchart of a flexible conveyor process algorithm.

Фиг. 18 иллюстрирует пример в некоторый момент потенциальный набор запросов, их приоритеты, и по каким соединениям они могут быть выданы.FIG. Figure 18 illustrates an example at some point of a potential set of requests, their priorities, and over which connections they can be issued.

Фиг. 19 иллюстрирует пример потенциального набора запросов, их приоритеты, и по каким соединениям они могут быть выданы, который прошел от одного момента к другому.FIG. 19 illustrates an example of a potential set of requests, their priorities, and by what connections they can be issued, which passed from one moment to another.

Фиг. 20 является блок-схемой совместимого выбора кэширующего прокси-сервера на основе идентификатора файла.FIG. 20 is a block diagram of a compatible cache proxy selection based on a file identifier.

Фиг. 21 иллюстрирует определение синтаксиса для подходящего языка выражений.FIG. 21 illustrates the definition of syntax for a suitable expression language.

Фиг. 22 иллюстрирует пример подходящей хэш-функции.FIG. 22 illustrates an example of a suitable hash function.

Фиг. 23 иллюстрирует примеры правил составления идентификатора файла.FIG. 23 illustrates examples of file ID compilation rules.

Фиг. 24(a)-(e) иллюстрируют колебания полосы пропускания у соединений TCP.FIG. 24 (a) to (e) illustrate bandwidth variations in TCP connections.

Фиг. 25 иллюстрирует несколько запросов HTTP исходных данных и данных восстановления.FIG. 25 illustrates several HTTP source and recovery data requests.

Фиг. 26 иллюстрирует примерное время переключения каналов с FEC и без него.FIG. 26 illustrates an example channel switching time with and without FEC.

Фиг. 27 иллюстрирует подробности генератора сегментов восстановления, который, как часть показанной на Фиг. 1 системы захвата, формирует сегменты восстановления из исходных сегментов и управляющих параметров.FIG. 27 illustrates details of a recovery segment generator, which, as part of FIG. 1 capture system, forms recovery segments from the source segments and control parameters.

Фиг. 28 иллюстрирует отношения между исходными блоками и блоками восстановления.FIG. 28 illustrates the relationship between source blocks and recovery blocks.

Фиг. 29 иллюстрирует процедуру для услуг прямой трансляции в разные моменты на клиенте.FIG. 29 illustrates a procedure for live streaming services at various times on a client.

Фиг. 30 иллюстрирует отношения между мультимедийными фрагментами для потоковой передачи с малой задержкой и мультимедийными фрагментами.FIG. 30 illustrates the relationship between multimedia fragments for low-latency streaming and multimedia fragments.

На чертежах на одинаковые элементы ссылаются с помощью одинаковых номеров, и субиндексы указаны в круглых скобках для указания нескольких экземпляров подобных или идентичных элементов. Пока не указано иное, конечный субиндекс (например, «N» или «M») не предназначен быть ограничивающим до какого-либо конкретного значения, и количество экземпляров одного элемента может отличаться от количества экземпляров другого элемента, даже когда иллюстрируется одинаковый номер и повторно используется субиндекс.In the drawings, the same elements are referenced using the same numbers, and subindexes are indicated in parentheses to indicate multiple instances of similar or identical elements. Unless otherwise indicated, the final subindex (for example, “N” or “M”) is not intended to be limiting to any particular value, and the number of instances of one element may differ from the number of instances of another element, even when the same number is illustrated and reused subindex.

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯDETAILED DESCRIPTION OF THE INVENTION

Как описано в этом документе, задача системы потоковой передачи состоит в перемещении мультимедиа из места хранения (или места, где оно формируется) в место, где оно потребляется, т.е. представляется пользователю или иным образом «используется» человеком или электронным потребителем. В идеале, система потоковой передачи может обеспечивать непрерывное воспроизведение (или, в более общем смысле, непрерывное «потребление») на принимающей стороне и может начать воспроизведение потока или совокупности потоков вскоре после того, как пользователь запросил поток или потоки. По причинам эффективности также желательно, чтобы каждый поток останавливался, как только пользователь указывает на то, что поток уже не нужен, например, когда пользователь переключается с одного потока на другой поток или он следует представлению потока, например потока «субтитров». Если мультимедийный компонент, например видео, продолжает представляться, но другой поток выбирается для представления этого мультимедийного компонента, часто предпочтительно занять ограниченную полосу пропускания новым потоком и остановить старый поток.As described in this document, the task of a streaming system is to move multimedia from a storage location (or a place where it is formed) to a place where it is consumed, i.e. it appears to the user or is otherwise “used” by a person or an electronic consumer. Ideally, a streaming system can provide continuous playback (or, more generally, continuous “consumption”) at the receiving end and can start playing a stream or a set of streams shortly after a user requests a stream or streams. For reasons of efficiency, it is also desirable that each stream stop as soon as the user indicates that the stream is no longer needed, for example, when the user switches from one stream to another stream or follows a stream view, for example, a subtitle stream. If a multimedia component, such as a video, continues to be presented, but another stream is selected to represent this multimedia component, it is often preferable to take up the limited bandwidth of the new stream and stop the old stream.

Система потоковой передачи по запросу блоков в соответствии с вариантами осуществления, описанными в этом документе, обеспечивает много преимуществ. Следует понимать, что жизнеспособная система не должна включать в себя все описанные в этом документе признаки, так как некоторые применения могут обеспечить соответственно удовлетворительное восприятие не со всеми признаками, описанными в этом документе.A block-request streaming system in accordance with the embodiments described herein provides many advantages. It should be understood that a viable system should not include all the features described in this document, since some applications may not provide a satisfactory perception with all the features described in this document.

ПОТОКОВАЯ ПЕРЕДАЧА HTTPHTTP STREAM

Потоковая передача HTTP является специальным типом потоковой передачи. При потоковой передаче HTTP источники могут быть стандартными web-серверами и сетями передачи контента (CDN) и могут использовать стандартный HTTP. Эта методика может затрагивать сегментацию потока и использование нескольких потоков, все в рамках стандартизованных запросов HTTP. Мультимедиа, например видео, может кодироваться с несколькими скоростями передачи данных, чтобы сформировать разные версии, или отображения. Термин «версия» и «отображение» в этом документе используются синонимично. Каждую версию или отображение можно разбить на более мелкие порции, возможно порядка нескольких секунд каждая, чтобы образовать сегменты. Каждый сегмент тогда можно сохранить на web-сервере или CDN в виде отдельного файла.HTTP streaming is a special type of streaming. When streaming HTTP, sources can be standard web servers and content transfer networks (CDNs) and can use standard HTTP. This technique may involve thread segmentation and the use of multiple threads, all within the framework of standardized HTTP requests. Multimedia, such as video, can be encoded at multiple data rates to form different versions, or displays. The terms "version" and "display" are used synonymously in this document. Each version or display can be broken down into smaller portions, perhaps of the order of several seconds each, to form segments. Each segment can then be saved on a web server or CDN as a separate file.

На стороне клиента затем можно выполнять запросы с использованием HTTP к отдельным сегментам, которые плавно стыкуются вместе с помощью клиента. Клиент может переключаться на разные скорости данных на основе имеющейся в наличии полосы пропускания. Клиент также может запрашивать несколько отображений, причем каждое представляет разный мультимедийный компонент, и может представлять мультимедиа в этих отображениях одновременно и синхронно. Триггеры для переключения могут включать в себя, например, занятость буфера и сетевые замеры. При работе в устойчивом состоянии клиент может задать темп запросов к серверу, чтобы поддерживать целевую занятость буфера.On the client side, you can then perform requests using HTTP to individual segments that seamlessly fit together with the client. The client can switch to different data rates based on the available bandwidth. The client can also request several displays, each representing a different multimedia component, and can represent multimedia in these displays simultaneously and synchronously. Triggers for switching may include, for example, buffer occupancy and network measurements. When operating in a stable state, the client can set the rate of requests to the server in order to maintain target buffer occupancy.

Преимущества потоковой передачи HTTP могут включать в себя адаптацию скорости передачи данных, быстрый запуск и поиск, и минимальную ненужную передачу. Эти преимущества проистекают из управления передачей, чтобы она только немного опережала воспроизведение, используя по максимуму имеющуюся в наличии полосу пропускания (посредством мультимедиа с переменной скоростью), и оптимизируя сегментацию потока и интеллектуальные процедуры на клиенте.The benefits of HTTP streaming can include speed adaptation, fast startup and search, and minimal unnecessary transmission. These benefits stem from transmission control so that it only slightly outstrips playback, utilizing the maximum available bandwidth (through variable speed multimedia), and optimizing stream segmentation and smart client procedures.

Описание представления мультимедиа может выдаваться клиенту потоковой передачи HTTP, так что клиент может использовать совокупность файлов (например, в форматах, заданных 3GPP, в этом документе называемых сегментами 3gp) для предоставления пользователю услуги потоковой передачи. Описание представления мультимедиа, и по возможности обновления этого описания представления мультимедиа, описывают представление мультимедиа, которое является структурированной совокупностью сегментов, причем каждый содержит мультимедийные компоненты, так что клиент может представлять включенное мультимедиа синхронизированным способом и может обеспечить расширенные функциональные возможности, например поиск, переключение скоростей передачи данных и совместное представление мультимедийных компонентов в разных отображениях. Клиент может использовать информацию описания представления мультимедиа разными способами предоставления услуги. В частности, из описания представления мультимедиа клиент потоковой передачи HTTP может определить, к каким сегментам в совокупности можно обращаться, чтобы данные были применимы к возможности клиента и пользователю в рамках услуги потоковой передачи.A description of the multimedia presentation may be provided to the HTTP streaming client, so that the client can use a plurality of files (for example, in formats specified by 3GPP, referred to in this document as 3gp segments) to provide the user with streaming services. The description of the multimedia presentation, and if possible updating this description of the multimedia presentation, describes a multimedia presentation, which is a structured set of segments, each containing multimedia components, so that the client can present the included multimedia in a synchronized manner and can provide advanced functionality, for example, search, speed switching data transmission and joint presentation of multimedia components in different displays. A client may use multimedia presentation description information in various ways of providing a service. In particular, from the description of the multimedia presentation, the HTTP streaming client can determine which segments together can be accessed so that the data is applicable to the client and user capabilities within the streaming service.

В некоторых вариантах осуществления, описание представления мультимедиа может быть статическим, хотя сегменты могут формироваться динамически. Описание представления мультимедиа может быть как можно более компактным, чтобы минимизировать время доступа и загрузки для услуги. Остальную соединяемость с выделенным сервером можно минимизировать, например, регулярной или частой синхронизацией распределения во времени между клиентом и сервером.In some embodiments, the description of the multimedia presentation may be static, although segments may be formed dynamically. The description of the multimedia presentation can be as compact as possible in order to minimize the access and download times for the service. The remaining connectivity to a dedicated server can be minimized, for example, by regular or frequent synchronization of the time distribution between the client and the server.

Представление мультимедиа может формироваться для разрешения доступа терминалам с разными возможностями, например доступом к разным типам сетей доступа, с разными текущими сетевыми условиями, размерами дисплеев, скоростями доступа и поддержкой кодеков. Клиент тогда может извлекать подходящую информацию для предоставления пользователю услуги потоковой передачи.A multimedia presentation can be configured to allow access to terminals with different capabilities, for example, access to different types of access networks, with different current network conditions, display sizes, access speeds and codec support. The client can then retrieve suitable information to provide the user with streaming services.

Описание представления мультимедиа также может обеспечить гибкость развертывания и компактность в соответствии с требованиями.A media presentation description can also provide deployment flexibility and compactness as required.

В самом простом случае каждое альтернативное отображение может храниться в одиночном файле 3GP, т.е. в файле, соответствующем 3GPP TS26.244, или в любом другом файле, который соответствует базовому формату мультимедийного файла ISO, который задан в ISO/IEC 14496-12 или производных спецификациях (например, формат файла 3GP, описанный в техническом описании 3GPP 26.244). В оставшейся части этого документа при ссылке на файл 3GP следует понимать, что ISO/IEC 14496-12 и производные спецификации могут соотнести все описанные признаки с более общим базовым форматом мультимедийного файла ISO, который задан в ISO/IEC 14496-12 или любых производных спецификациях. Клиент тогда может запросить начальную часть файла, чтобы узнать метаданные мультимедиа (которые обычно хранятся в блоке заголовка Фильма, также называемом блоком «moov»), вместе с моментами фрагментов фильма и байтовыми смещениями. Клиент затем может выдавать частичные запросы GET HTTP для получения фрагментов фильма при необходимости.In the simplest case, each alternate mapping can be stored in a single 3GP file, i.e. in a 3GPP TS26.244 compliant file, or in any other file that conforms to the base ISO media file format specified in ISO / IEC 14496-12 or derived specifications (for example, the 3GP file format described in 3GPP 26.244 datasheet). In the remainder of this document, when referring to a 3GP file, it should be understood that ISO / IEC 14496-12 and its derivative specifications can correlate all the features described with the more general basic ISO multimedia file format defined in ISO / IEC 14496-12 or any derivative specifications . The client can then request the start of the file to find out the multimedia metadata (which is usually stored in the Movie header block, also called the “moov” block), along with movie fragments and byte offsets. The client can then issue partial HTTP GET requests to receive movie fragments if necessary.

В некоторых вариантах осуществления может быть желательно, разделить каждое отображение на несколько сегментов, где сегменты. В случае, когда формат сегмента основан на формате файла 3GP, тогда сегменты содержат неперекрывающиеся временные секции фрагментов фильма, называемые «разделением по времени». Каждый из этих сегментов может содержать несколько фрагментов фильма, и каждый может быть действительным самостоятельным файлом 3GP. В другом варианте осуществления, отображение разделяется на начальный сегмент, содержащий метаданные (обычно это блок заголовка фильма «moov»), и набор мультимедийных сегментов, каждый содержащий мультимедийные данные, и сцепление начального сегмента и любого мультимедийного сегмента образует действительный файл 3GP, а также сцепление начального сегмента и всех мультимедийных сегментов одного отображения образует действительный файл 3GP. Все представление может быть образовано путем воспроизведения каждого сегмента по очереди, соотнося локальные временные отметки внутри файла с глобальным временем представления в соответствии со временем начала каждого отображения.In some embodiments, it may be desirable to divide each display into several segments, where segments. In the case where the segment format is based on the 3GP file format, then the segments contain non-overlapping time sections of movie fragments called “time sharing”. Each of these segments can contain multiple movie fragments, and each can be a valid standalone 3GP file. In another embodiment, the display is divided into an initial segment containing metadata (usually a moov movie title block), and a set of multimedia segments, each containing multimedia data, and a concatenation of the initial segment and any multimedia segment constitute a valid 3GP file as well as a concatenation the initial segment and all multimedia segments of one display forms a valid 3GP file. The whole view can be formed by playing each segment in turn, correlating the local time stamps inside the file with the global time of the presentation in accordance with the start time of each display.

Следует отметить, что по всему данному описанию ссылки на «сегмент» следует понимать как включающие в себя любой объект данных, который полностью или частично сформирован или считан с носителя информации или иным образом получен в результате запроса по протоколу загрузки файла, включая, например, запрос HTTP. Например, в случае HTTP объекты данных могут храниться в фактических файлах, находящихся на диске или другом носителе информации, соединенном с сервером HTTP или образующем его часть, или объекты данных могут формироваться с помощью сценария CGI или другой динамически исполняемой программы, которая исполняется в ответ на запрос HTTP. Термин «файл» и «сегмент» в этом документе используются синонимично, пока не указано иное. В случае HTTP, сегмент может рассматриваться в виде тела содержимого ответа на запрос HTTP.It should be noted that throughout this description, references to a “segment” should be understood as including any data object that is fully or partially generated or read from a storage medium or otherwise obtained as a result of a request using a file upload protocol, including, for example, a request HTTP For example, in the case of HTTP, data objects can be stored in actual files located on a disk or other storage medium connected to or forming part of the HTTP server, or data objects can be generated using a CGI script or other dynamically executable program that is executed in response to HTTP request. The terms “file” and “segment” are used synonymously in this document unless otherwise indicated. In the case of HTTP, the segment can be considered as the body of the contents of the response to the HTTP request.

Термин «представление» и «элемент контента» в этом документе используются синонимично. Во многих примерах представление является аудио, видео или другим представлением мультимедиа, которое обладает заданным временем «воспроизведения», однако возможны другие варианты.The terms “presentation” and “content item” are used synonymously in this document. In many examples, the presentation is an audio, video, or other multimedia presentation that has a predetermined “play” time, but other options are possible.

Термин «блок» и «фрагмент» в этом документе используются синонимично, пока не указано иное, и обычно относятся к наименьшей агрегации данных, которая индексируется. На основе имеющегося в наличии индексирования, клиент может запрашивать разные части фрагмента в разных запросах HTTP, или может запрашивать один или более последовательные фрагменты или части фрагментов в одном запросе HTTP. В случае, когда используются сегменты на основе базового формата мультимедийного файла ISO или сегменты на основе формата файла 3GP, фрагмент обычно относится к фрагменту фильма, заданному в виде сочетания блока заголовка фрагмента фильма («moof») и блока мультимедийных данных («mdat»).The terms “block” and “fragment” are used synonymously in this document unless otherwise indicated, and usually refer to the smallest aggregation of data that is indexed. Based on the available indexing, a client can request different parts of a fragment in different HTTP requests, or it can request one or more consecutive fragments or parts of fragments in a single HTTP request. In the case where segments based on the basic ISO multimedia file format are used or segments based on the 3GP file format, a fragment usually refers to a movie fragment defined as a combination of a movie fragment title block (“moof”) and multimedia data block (“mdat”) .

В этом документе сеть, переносящая данные, предполагается пакетной сетью, чтобы упростить описания в этом документе, с пониманием того, что после прочтения этого раскрытия изобретения специалист в данной области техники может применить варианты осуществления настоящего изобретения, описанные в этом документе, к другим типам сетей передачи, например сетям с непрерывным битовым потоком.In this document, a data network is assumed to be a packet network in order to simplify the descriptions in this document, with the understanding that after reading this disclosure, one skilled in the art can apply the embodiments of the present invention described in this document to other types of networks transmissions, for example, networks with a continuous bit stream.

В этом документе коды FEC предполагаются обеспечивающими защиту от длительного и переменного времени передачи данных, чтобы упростить описания в этом документе, с пониманием того, что после прочтения этого раскрытия изобретения специалист в данной области техники может применить варианты осуществления настоящего изобретения к другим типам проблем передачи данных, например, искажению при инвертировании битов данных. Например, в отсутствии FEC, если последняя часть запрошенного фрагмента поступает гораздо позже или имеет большой разброс во времени поступления, нежели предыдущие части фрагмента, то время переключения контента может быть большим и переменным, тогда как с использованием FEC и параллельных запросов, только большинство данных, запрошенных для фрагмента, должно поступить до того, как их можно восстановить, посредством этого уменьшая время переключения контента и непостоянство времени переключения контента. В этом описании можно предположить, что данные, которые нужно кодировать (т.е. исходные данные), разбиты на «символы» равной длины, которые могут иметь любую длину (вплоть до одиночного бита), но символы могут иметь разные длины для разных частей данных, например, разные размеры символов могут использоваться для разных блоков данных.In this document, FEC codes are intended to provide protection against long and variable data transmission times in order to simplify the descriptions in this document, with the understanding that after reading this disclosure, one skilled in the art can apply embodiments of the present invention to other types of data transmission problems , for example, distortion when inverting data bits. For example, in the absence of FEC, if the last part of the requested fragment arrives much later or has a large variation in the arrival time than the previous parts of the fragment, then the content switching time can be large and variable, while using FEC and parallel requests, only the majority of the data requested for the fragment must arrive before they can be restored, thereby reducing the content switching time and the variability of the content switching time. In this description, it can be assumed that the data that needs to be encoded (ie, the original data) is divided into “characters” of equal length, which can be of any length (up to a single bit), but the characters can have different lengths for different parts data, for example, different character sizes can be used for different data blocks.

В этом описании, чтобы упростить описания в этом документе, предполагается, что FEC применяется к «блоку» или «фрагменту» данных за раз, т.е. «блок» является «исходным блоком» для целей кодирования и декодирования FEC. Клиентское устройство может использовать индексирование сегмента, описанное в этом документе, чтобы помочь в определении структуры исходного блока в сегменте. Специалист в данной области техники может применить варианты осуществления настоящего изобретения к другим типам структур исходного блока, например, исходный блок может быть частью фрагмента, или включать в себя один или более фрагменты или части фрагментов.In this description, in order to simplify the descriptions in this document, it is assumed that FEC is applied to a “block” or “fragment” of data at a time, i.e. “Block” is the “source block” for the purposes of encoding and decoding FEC. The client device may use the segment indexing described in this document to help determine the structure of the source block in the segment. One skilled in the art can apply embodiments of the present invention to other types of structures of the source block, for example, the source block may be part of a fragment, or include one or more fragments or parts of fragments.

Коды FEC, рассмотренные для использования с потоковой передачей по запросу блоков, обычно являются систематическими кодами FEC, т.е. исходные символы исходного блока могут включаться как часть кодирования исходного блока, и таким образом передаются исходные символы. Как признает специалист в данной области техники, варианты осуществления, описанные в этом документе, в равной степени применяются к кодам FEC, которые не являются систематическими. Систематический кодер FEC формирует из исходного блока исходных символов некоторое количество символов восстановления, и сочетание по меньшей мере некоторых из исходных символов и символов восстановления является кодированными символами, которые отправляются по каналу, представляющему исходный блок. Некоторые коды FEC могут быть полезны для эффективного формирования такого количества символов восстановления, которое необходимо, например «информационных аддитивных кодов» или «фонтанных кодов», и примеры этих кодов включают в себя «коды цепной реакции» и «коды многоэтапной цепной реакции». Другие коды FEC, например коды Рида-Соломона, практически могут формировать только ограниченное количество символов восстановления для каждого исходного блока.FEC codes considered for use with block-request streaming are usually systematic FEC codes, i.e. the source symbols of the source block may be included as part of the encoding of the source block, and thus the source symbols are transmitted. As one skilled in the art recognizes, the embodiments described herein apply equally to FEC codes that are not systematic. The FEC systematic encoder generates a number of recovery symbols from a source block of source symbols, and a combination of at least some of the source symbols and recovery symbols are coded symbols that are sent on a channel representing the source block. Some FEC codes may be useful for efficiently generating as many recovery symbols as necessary, for example, “information additive codes” or “fountain codes”, and examples of these codes include “chain reaction codes” and “multi-stage chain reaction codes”. Other FEC codes, such as Reed-Solomon codes, can practically only generate a limited number of recovery characters for each source block.

Во многих этих примерах предполагается, что клиент соединяется с сервером мультимедиа или множеством серверов мультимедиа, и клиент запрашивает потоковое мультимедиа по каналу или множеству каналов от сервера мультимедиа или множества серверов мультимедиа. Однако также возможны более сложные конфигурации.In many of these examples, it is assumed that the client connects to a multimedia server or a plurality of multimedia servers, and the client requests streaming multimedia on a channel or plurality of channels from a multimedia server or a plurality of multimedia servers. However, more complex configurations are also possible.

ПРИМЕРЫ ПРЕИМУЩЕСТВEXAMPLES OF ADVANTAGES

При потоковой передаче по запросу блоков, клиент мультимедиа поддерживает связь между распределением во времени этих запросов блоков и распределением по времени воспроизведения мультимедиа для пользователя. Эта модель может сохранять преимущества модели «загрузки», описанной выше, наряду с предотвращением некоторых недостатков, которые происходят от обычного разрыва связи между воспроизведением мультимедиа и передачей данных. Модель потоковой передачи по запросу блоков позволяет использовать механизмы управления скоростью и отслеживанием перегрузок в транспортных протоколах, например TCP, чтобы гарантировать то, что для мультимедийных данных используется максимальная имеющаяся в наличии полоса пропускания. Более того, разделение представления мультимедиа на блоки позволяет выбирать каждый блок кодированных мультимедийных данных из набора нескольких имеющихся в наличии кодирований.When streaming at the request of blocks, the media client maintains a relationship between the time distribution of these block requests and the time distribution of media playback for the user. This model may retain the advantages of the “download” model described above, while avoiding some of the disadvantages that arise from the usual disconnection between multimedia playback and data transfer. The block-based streaming model allows the use of speed and congestion tracking mechanisms in transport protocols, such as TCP, to ensure that the maximum available bandwidth is used for multimedia data. Moreover, dividing the multimedia presentation into blocks allows each block of encoded multimedia data to be selected from a set of several available encodings.

Этот выбор может быть основан на любом количестве критериев, включая согласование скорости мультимедийных данных с имеющейся в наличии полосой пропускания, даже когда имеющаяся в наличии полоса пропускания меняется со временем, согласование разрешения мультимедиа или сложности декодирования с возможностями или конфигурацией клиента, или согласование с пользовательскими предпочтениями, например языками. Выбор также может включать в себя загрузку и представление вспомогательных компонентов, например компонентов доступности, скрытых субтитров, субтитров, видеоизображения на языке глухонемых и т.д. Примеры существующих систем, использующих модель потоковой передачи по запросу блоков, включают в себя Move Networks™, Microsoft Smooth Streaming и протокол поточной передачи в Apple iPhone™.This selection can be based on any number of criteria, including matching the media speed with the available bandwidth, even when the available bandwidth changes over time, matching the media resolution or decoding complexity with the capabilities or configuration of the client, or matching with user preferences e.g. languages. The selection may also include loading and presenting auxiliary components, for example, accessibility components, closed captioning, subtitle, deaf-mute video, etc. Examples of existing systems using the block-demand streaming model include Move Networks ™, Microsoft Smooth Streaming, and the Apple iPhone ™ streaming protocol.

Обычно каждый блок мультимедийных данных может храниться на сервере в качестве отдельного файла, а затем протокол, например HTTP, в сочетании с программным обеспечением сервера HTTP, выполняемым на сервере, используется для запроса файла как некой единицы. Обычно клиенту передаются файлы метаданных, которые могут иметь, например, формат расширяемого языка разметки (XML) или текстовый формат списка воспроизведения или двоичный формат, которые описывают особенности представления мультимедиа, например имеющиеся в наличии кодирования (например, необходимую полосу пропускания, разрешения, параметры кодирования, тип мультимедиа, язык), обычно называемые «отображениями» в этом документе, и способ, которым кодирования разделены на блоки. Например, метаданные могут включать в себя унифицированный указатель ресурса (URL) для каждого блока. Сами URL могут обеспечивать схему, например предваряемую строкой «http://» для указания того, что протоколом, который нужно использовать для доступа к документированному ресурсу, является HTTP. Другим примером является «ftp://» для указания того, что протоколом, который нужно использовать, является FTP.Typically, each block of multimedia data can be stored on the server as a separate file, and then a protocol, such as HTTP, in combination with the HTTP server software running on the server, is used to request the file as a unit. Typically, metadata files are sent to the client, which can be, for example, an extensible markup language (XML) format or a text format for a playlist or a binary format that describes the features of a multimedia presentation, such as the encodings available (for example, the necessary bandwidth, resolution, encoding settings , type of multimedia, language), commonly referred to as “mappings” in this document, and the way that encodings are divided into blocks. For example, metadata may include a uniform resource locator (URL) for each block. URLs themselves can provide a scheme, for example preceded by the string "http: //" to indicate that the protocol that you want to use to access the documented resource is HTTP. Another example is “ftp: //” to indicate that the protocol to be used is FTP.

В других системах, например, мультимедийные блоки могут формироваться сервером «на лету» в ответ на запрос от клиента, который указывает часть представления мультимедиа, в момент, который запрашивается. Например, в случае HTTP со схемой «http://» исполнение запроса с этим URL выдает ответ на запрос, который содержит некоторые конкретные данные в теле содержимого этого ответа на запрос. Реализация в сети того, каким образом формировать этот ответ на запрос, может быть довольно разной, в зависимости от реализации сервера, обслуживающего такие запросы.In other systems, for example, multimedia blocks can be formed by the server “on the fly” in response to a request from a client that indicates a part of the multimedia presentation at the moment that is requested. For example, in the case of HTTP with the “http: //” scheme, executing a request with this URL produces a response to the request, which contains some specific data in the body of the contents of this response to the request. The network implementation of how to generate this response to the request can be quite different, depending on the implementation of the server serving such requests.

Обычно каждый блок может быть декодируемым независимо. Например, в случае видео мультимедиа, каждый блок может начинаться с «точки поиска». В некоторых схемах кодирования точка поиска называется «Точками Произвольного Доступа» или «RAP», хотя не все RAP могут назначаться точкой поиска. Аналогичным образом, в других схемах кодирования, точка поиска начинается в кадре «Независимого Обновления Данных», или «IDR», в случае кодирования видео H.264, хотя не все IDR могут назначаться точкой поиска. Точка поиска является позицией в видео (или другом) мультимедиа, где декодер может начать декодирование без необходимости каких-либо данных о предшествующих кадрах или данных или выборок, что может быть случаем, когда кадр или выборка, которая декодируется, кодировалась не автономно, а, например, как разность между текущим кадром и предшествующим кадром.Typically, each block can be decoded independently. For example, in the case of video multimedia, each block can begin with a “search point”. In some coding schemes, the search point is called “Random Access Points” or “RAP”, although not all RAPs can be assigned as a search point. Similarly, in other coding schemes, the search point begins in the “Independent Data Update”, or “IDR” frame, in the case of H.264 video encoding, although not all IDRs can be assigned as a search point. The search point is a position in the video (or other) multimedia where the decoder can start decoding without the need for any data about previous frames or data or samples, which may be the case when the frame or sample that is being decoded was not encoded independently, but, for example, as the difference between the current frame and the previous frame.

Вопросом в таких системах может быть возможность начать воспроизведение потока, например декодирование и визуализацию принятых аудио и видео потоков с использованием персонального компьютера и демонстрацию видео на экране компьютера и воспроизведение аудио через встроенные громкоговорители, или, в качестве другого примера, декодирование и визуализацию принятых аудио и видео потоков с использованием телевизионной приставки и демонстрацию видео на телевизионном устройстве отображения и воспроизведение аудио через стереосистему. Первоочередной задачей может быть минимизация задержки между тем, когда пользователь решает посмотреть новый контент, переданный в виде потока, и выполняет действие, которое выражает это решение, например пользователь, нажимает на ссылку в окне обозревателя или на кнопку воспроизведения на устройстве дистанционного управления, и тем, когда контент начинает демонстрироваться на экране пользователя, в дальнейшем называемой «временем переключения контента». Каждая из этих задач может быть решена с помощью элементов улучшенной системы, описанной в этом документе.The question in such systems may be the ability to start playing a stream, for example decoding and visualizing received audio and video streams using a personal computer and showing the video on a computer screen and playing audio through the built-in speakers, or, as another example, decoding and visualizing the received audio and video streams using a set-top box and demonstration of video on a television display device and playback of audio through a stereo system. The primary task may be to minimize the delay between when the user decides to watch the new content transmitted as a stream and performs an action that expresses this decision, for example, the user clicks on the link in the browser window or on the play button on the remote control, and when the content begins to be displayed on a user’s screen, hereinafter referred to as the “content switching time”. Each of these tasks can be solved using the elements of the improved system described in this document.

Примером переключения контента является то, когда пользователь смотрит первый контент, переданный посредством первого потока, и затем пользователь решает посмотреть второй контент, переданный посредством второго потока, и инициирует действие для начала просмотра второго контента. Второй поток может отправляться с такого же набора или другого набора серверов, что и первый поток. Другим примером переключения контента является то, когда пользователь посещает web-сайт и решает начать просмотр первого контента, переданного посредством первого потока, путем нажатия на ссылку в окне обозревателя. Аналогичным образом пользователь может решить начать воспроизведение контенте не с начала, а с некоторого времени в рамках потока. Пользователь указывает своему клиентскому устройству перейти к позиции во времени, и пользователь мог предполагать, что выбранное время визуализируется мгновенно. Минимизация времени переключения контента важна для просмотра видео, чтобы обеспечить пользователям восприятие высококачественного быстрого просмотра контента при поиске и отборе широкого диапазона имеющегося в наличии контента.An example of content switching is when a user watches the first content transmitted by the first stream, and then the user decides to watch the second content transmitted by the second stream, and initiates an action to start viewing the second content. The second stream may be sent from the same set or another set of servers as the first stream. Another example of content switching is when a user visits a website and decides to start viewing the first content transmitted through the first stream by clicking on a link in a browser window. Similarly, the user can decide to start playing content not from the beginning, but from some time in the stream. The user instructs his client device to go to a position in time, and the user could assume that the selected time is visualized instantly. Minimizing the switching time of content is important for watching videos in order to provide users with the perception of high-quality quick viewing of content when searching and selecting a wide range of available content.

В последнее время стало установившейся практикой рассматривать использование кодов упреждающего исправления ошибок (FEC) для защиты потокового мультимедиа во время передачи. При отправке по пакетной сети, примеры которой включают в себя Интернет и беспроводные сети, например стандартизованные группами, такими как 3GPP, 3GPP2 и DVB, исходный поток помещается в пакеты, когда он формируется, или обеспечивается, и соответственно пакеты могут использоваться для переноса исходного потока или потока контента в порядке, в которым он формируется или передается в приемники.Recently, it has become an established practice to consider the use of forward error correction (FEC) codes to protect streaming media during transmission. When sent over a packet network, examples of which include the Internet and wireless networks, for example, standardized by groups such as 3GPP, 3GPP2 and DVB, the original stream is placed in packets when it is formed, or provided, and accordingly packets can be used to carry the original stream or a content stream in the order in which it is generated or transmitted to receivers.

В типичном применении кодов FEC к этим типам сценариев кодер может использовать код FEC при формировании пакетов восстановления, которые затем отправляются в дополнение к первоначальным пакетам, содержащим исходный поток. Пакеты восстановления обладают таким свойством, что когда происходит потеря исходного пакета, принятые пакеты восстановления могут использоваться для восстановления данных, содержащихся в потерянных исходных пакетах. Пакеты восстановления могут использоваться для восстановления содержимого потерянных исходных пакетов, которые утрачены полностью, но также могут использоваться для восстановления, когда происходит частичная потеря пакетов, либо полностью принятые пакеты восстановления, либо даже частично принятые пакеты восстановления. Таким образом, полностью или частично принятые пакеты восстановления могут использоваться для восстановления полностью или частично потерянных исходных пакетов.In a typical application of FEC codes to these types of scripts, the encoder can use the FEC code to form recovery packets, which are then sent in addition to the original packets containing the source stream. Recovery packages have the property that when a source package is lost, received recovery packages can be used to recover data contained in the lost source packages. Recovery packages can be used to recover the contents of lost source packages that are completely lost, but can also be used to recover when a partial loss of packages occurs, or fully accepted recovery packages, or even partially accepted recovery packages. Thus, fully or partially received recovery packages can be used to recover completely or partially lost source packages.

В еще одних примерах, другие типы искажения могут возникать в отправленных данных, например, значения битов могут инвертироваться, и соответственно пакеты восстановления могут использоваться для коррекции такого искажения и обеспечения как можно более точного восстановления исходных пакетов. В других примерах исходный поток не обязательно отправляется в дискретных пакетах, а вместо этого может отправляться, например, в виде непрерывного потока двоичных сигналов.In yet other examples, other types of distortion may occur in the sent data, for example, bit values may be inverted, and accordingly, recovery packets may be used to correct such distortion and to provide as accurate recovery of the original packets as possible. In other examples, the original stream is not necessarily sent in discrete packets, but instead can be sent, for example, as a continuous stream of binary signals.

Есть много примеров кодов FEC, которые могут использоваться для обеспечения защиты исходного потока. Коды Рида-Соломона являются общеизвестными кодами для коррекции ошибок и коррекции со стиранием в системах связи. Для коррекции со стиранием, например, в сетях пакетной передачи данных общеизвестная эффективная реализация кодов Рида-Соломона использует матрицы Коши или Вандермонда, которые описаны в L. Rizzo, «Effective Erasure Codes for Reliable Computer Communication Protocols», Computer Communication Review, 27(2):24-36 (апрель 1997) (в дальнейшем «Rizzo»), и Bloemer и др., «An XOR-Based Erasure-Resilient Coding Scheme», Технический отчет TR-95-48, Международный институт вычислительной техники, Беркли, Калифорния (1995) (в дальнейшем «XOR-Reed-Solomon») или где-либо еще.There are many examples of FEC codes that can be used to provide protection for the source stream. Reed-Solomon codes are well-known codes for error correction and erasure correction in communication systems. For correction with erasure, for example, in packet data networks, the well-known effective implementation of Reed-Solomon codes uses Cauchy or Vandermonde matrices, which are described in L. Rizzo, “Effective Erasure Codes for Reliable Computer Communication Protocols”, Computer Communication Review, 27 (2 ): 24-36 (April 1997) (hereinafter “Rizzo”), and Bloemer et al., “An XOR-Based Erasure-Resilient Coding Scheme”, Technical Report TR-95-48, International Institute of Computing Engineering, Berkeley, California (1995) (hereinafter XOR-Reed-Solomon) or elsewhere.

Другие примеры кодов FEC включают в себя коды LDPC, коды цепной реакции, например описанные в Luby I, и коды многоэтапной цепной реакции, например в Shokrollahi I.Other examples of FEC codes include LDPC codes, chain reaction codes, such as those described in Luby I, and multi-stage chain reaction codes, such as Shokrollahi I.

Примеры процесса декодирования FEC для разновидностей кодов Рида-Соломона описываются в Rizzo и XOR-Reed-Solomon. В тех примерах декодирование может применяться после того, как принято достаточное количество пакетов исходных данных и данных восстановления. Процесс декодирования может иметь большой объем вычислений, и, в зависимости от имеющихся в наличии ресурсов CPU, может требовать значительного времени для завершения относительно длительности времени, занятого мультимедиа в блоке. Приемник может учитывать эту длительность времени, необходимую для декодирования, при вычислении задержки, необходимой между началом приема мультимедийного потока и воспроизведением мультимедиа. Эта задержка из-за декодирования воспринимается пользователем как задержка между запросом конкретного мультимедийного потока и началом воспроизведения. Соответственно, желательно минимизировать эту задержку.Examples of the FEC decoding process for Reed-Solomon code varieties are described in Rizzo and XOR-Reed-Solomon. In those examples, decoding can be applied after a sufficient number of source data and recovery data packets have been received. The decoding process can have a large amount of computation, and, depending on the available CPU resources, it may take considerable time to complete relative to the length of time the multimedia is occupied in the block. The receiver can take this length of time necessary for decoding into account when calculating the delay required between the start of receiving the multimedia stream and playing the multimedia. This delay due to decoding is perceived by the user as the delay between the request of a particular multimedia stream and the start of playback. Accordingly, it is desirable to minimize this delay.

Во многих применениях пакеты могут дополнительно подразделяться на символы, к которым применяется процесс FEC. Пакет может содержать один или более символы (или менее одного символа, но обычно символы не делятся между группами пакетов, пока состояния ошибки среди групп пакетов известны как сильно взаимосвязанные). Символ может иметь любой размер, но часто размер символа составляет не более размера пакета. Исходные символы являются теми символами, которые кодируют данные, которые нужно передать. Символы восстановления являются символами, сформированными из исходных символов, прямо или косвенно в дополнение к исходным символам (т.е. данные, которые нужно передать, можно восстановить полностью, если все исходные символы имеются в наличии и отсутствуют символы восстановления).In many applications, packets can be further subdivided into characters to which the FEC process applies. A packet may contain one or more characters (or less than one character, but usually the characters are not divided between groups of packets, as long as the error conditions among the groups of packets are known as highly interrelated). A character can be of any size, but often the size of the character is no more than the size of the packet. The source characters are those characters that encode the data to be transmitted. Recovery symbols are symbols formed from the original symbols, directly or indirectly in addition to the original symbols (i.e., the data to be transferred can be completely restored if all the original symbols are present and there are no restoration symbols).

Некоторые коды FEC могут быть блочными, в которых операции кодирования зависят от символа(ов), которые находятся в блоке, и могут не зависеть от символов вне того блока. С помощью блочного кодирования кодер FEC может сформировать символы восстановления для блока из исходных символов в том блоке, затем перейти к следующему блоку и не нуждаться в обращении к исходным символам помимо символов для текущего кодируемого блока. При передаче, исходный блок, содержащий исходные символы, можно представить кодированным блоком, содержащим кодированные символы (которые могут быть некоторыми исходными символами, некоторыми символами восстановления или теми и другими). При наличии символов восстановления не все исходные символы необходимы в каждом кодированном блоке.Some FEC codes may be block in which the encoding operations depend on the character (s) that are in the block and may not depend on the characters outside that block. Using block coding, the FEC encoder can generate recovery characters for a block from the source characters in that block, then move on to the next block and not need to access the source characters besides the characters for the current encoded block. Upon transmission, the source block containing the source characters can be represented as a coded block containing encoded characters (which may be some source characters, some recovery characters, or both). If recovery characters are present, not all source characters are needed in each coded block.

Для некоторых кодов FEC, в особенности кодов Рида-Соломона, время кодирования и декодирования может непрактично расти с ростом количества кодированных символов на исходный блок. Таким образом, на практике часто существует практическая верхняя граница (255 является приблизительным практическим пределом для некоторых применений) для общего количества кодированных символов, которые могут формироваться в расчете на исходный блок, особенно в типичном случае, когда процесс кодирования или декодирования Рида-Соломона выполняется специальными аппаратными средствами, например, процессы MPE-FEC, которые используют коды Рида-Соломона, включенные как часть стандарта DVB-H для защиты потоков от потери пакетов, реализуются в специализированных аппаратных средствах в сотовом телефоне, которые ограничиваются всего 255 кодированными символами Рида-Соломона на исходный блок. Поскольку символы часто необходимо помещать в отдельные полезные нагрузки пакетов, это устанавливает практическую верхнюю границу на максимальную длину кодируемого исходного блока. Например, если полезная нагрузка пакета ограничивается 1024 байтами или меньше, и каждый пакет несет один кодированный символ, то кодированный исходный блок может составлять не более 255 килобайт, и это, конечно, также является верхней границей размера самого исходного блока.For some FEC codes, in particular Reed-Solomon codes, the encoding and decoding times may impractically increase with the number of encoded characters per source block. Thus, in practice, there is often a practical upper bound (255 is an approximate practical limit for some applications) for the total number of coded symbols that can be generated per source block, especially in the typical case when the Reed-Solomon encoding or decoding process is performed by special hardware, for example, MPE-FEC processes that use Reed-Solomon codes, included as part of the DVB-H standard to protect streams from packet loss, are implemented in cialized hardware in a cell phone, which is limited to only 255 encoded Reed-Solomon characters per source block. Since characters often need to be placed in separate packet payloads, this sets the practical upper bound to the maximum length of the encoded source block. For example, if the payload of a packet is limited to 1024 bytes or less, and each packet carries one encoded character, then the encoded source block can be no more than 255 kilobytes, and this, of course, is also the upper bound on the size of the source block itself.

Другие вопросы, например способность декодировать исходные блоки достаточно быстро, чтобы не отставать от скорости потоковой передачи источника, минимизировать задержку декодирования, внесенную декодированием FEC, и использовать только небольшую часть имеющегося в наличии CPU в приемном устройстве в любой момент времени в течение декодирования FEC, решаются с помощью элементов, описанных в этом документе.Other issues, such as the ability to decode source blocks fast enough to keep up with the source streaming speed, minimize the decoding delay introduced by FEC decoding, and use only a small portion of the available CPU in the receiver at any time during FEC decoding, are solved using the elements described in this document.

Необходимость обеспечения устойчивого и масштабируемого решения по потоковой передаче, которое позволяет выходить из строя компонентам системы без неблагоприятного влияния на качество потоков, передаваемых приемникам.The need to provide a sustainable and scalable streaming solution that allows system components to fail without adversely affecting the quality of streams transmitted to receivers.

Система потоковой передачи по запросу блоков должна поддерживать изменения в структуре или метаданных представления, например, изменения количества имеющихся в наличии кодирований мультимедиа или изменения параметров кодирований мультимедиа, например скорости передачи данных, разрешения, соотношения сторон, аудио или видео кодеков либо параметров кодеков, или изменения других метаданных, например URL, ассоциированных с файлами контента. Такие изменения могут быть необходимы по некоторому количеству причин, включая редактирование контента одновременно из разных источников, например рекламы или разных сегментов более крупного представления, модификацию URL или других параметров, которые становятся необходимы в результате изменений в обслуживающей инфраструктуре, например, из-за конфигурационных изменений, сбоев оборудования или восстановления из сбоев оборудования, или по другим причинам.A block-based streaming system should support changes to the structure or presentation metadata, for example, changing the number of multimedia encodings available, or changing multimedia encoding parameters, such as data rate, resolution, aspect ratio, audio or video codecs or codec parameters, or changes other metadata, such as URLs associated with content files. Such changes may be necessary for a number of reasons, including editing content at the same time from different sources, for example advertising or different segments of a larger view, modification of URLs or other parameters that become necessary as a result of changes in the service infrastructure, for example, due to configuration changes hardware failures or recovery from hardware failures, or for other reasons.

Существуют способы, в которых представление может управляться с помощью постоянно обновляемого файла списка воспроизведения. Поскольку этот файл постоянно обновляется, то по меньшей мере некоторые изменения, описанные выше, можно произвести в рамках этих обновлений. Недостаток традиционного способа состоит в том, что клиентские устройства обязаны все время отыскивать файл списка воспроизведения, что называется «опросом», создавая нагрузку на обслуживающую инфраструктуру, и что этот файл нельзя кэшировать дольше интервала обновления, делая еще сложнее задачу для обслуживающей инфраструктуры. Это решается с помощью элементов в этом документе, так что обновления описанного выше вида обеспечиваются без необходимости в постоянном опросе файла метаданных клиентами.There are ways in which a presentation can be controlled using a constantly updated playlist file. Since this file is constantly updated, at least some of the changes described above can be made as part of these updates. The disadvantage of the traditional method is that client devices must always search for a playlist file, which is called a “polling”, creating a load on the serving infrastructure, and that this file cannot be cached for longer than the update interval, making the task for the serving infrastructure even more difficult. This is solved using the elements in this document, so that updates of the type described above are provided without the need for constant polling of the metadata file by clients.

Другой проблемой, особенно в услугах прямой трансляции, обычно известной из вещательного распространения, является отсутствие возможности у пользователя просматривать контент, который был транслирован раньше того времени, когда пользователь присоединился к программе. Обычно, локальная персональная запись потребляет лишнее локальное хранилище или не возможна, так как клиент не настроился на программу, либо запрещена правилами защиты контента. Сетевая запись и отложенный просмотр предпочтительны, но требуют отдельных соединений пользователя с сервером и раздельного протокола передачи и инфраструктуры помимо услуг прямой трансляции, приводя к дублированной инфраструктуре и значительным затратам сервера. Это также решается с помощью элементов, описанных в этом документе.Another problem, especially in live broadcast services, usually known from broadcast distribution, is the inability of the user to view content that was broadcast earlier than the time when the user joined the program. Usually, local personal recording consumes unnecessary local storage or is not possible, because the client has not tuned in to the program, or is prohibited by the content protection rules. Network recording and lazy viewing are preferable, but require separate user connections to the server and a separate transfer protocol and infrastructure in addition to the live broadcast services, resulting in a duplicated infrastructure and significant server costs. This is also solved using the elements described in this document.

ОБЗОР СИСТЕМЫSYSTEM OVERVIEW

Один вариант осуществления изобретения описан со ссылкой на Фиг. 1, которая показывает упрощенную схему системы потоковой передачи по запросу блоков, осуществляющей изобретение.One embodiment of the invention is described with reference to FIG. 1, which shows a simplified diagram of a block-upon-stream streaming system implementing the invention.

На Фиг. 1 иллюстрируется система 100 потоковой передачи блоков, содержащая обслуживающую инфраструктуру 101 блоков («BSI»), в свою очередь содержащую систему 103 захвата для захвата контента 102, подготовки этого контента и его упаковки для услуги от сервера 104 потоковой передачи HTTP путем сохранения его в хранилище 110 контента, которое доступно системе 103 захвата и серверу 104 потоковой передачи HTTP. Как показано, система 100 также может включать в себя кэш 106 HTTP. При работе, клиент 108, например клиент потоковой передачи HTTP, отправляет запросы 112 на сервер 104 потоковой передачи HTTP и принимает ответы 114 от сервера 104 потоковой передачи HTTP или из кэша 106 HTTP. В каждом случае элементы, показанные на Фиг. 1, могут быть реализованы по меньшей мере частично в программном обеспечении, содержащем программный код, который выполняется на процессоре или другой электронике.In FIG. 1 illustrates a block streaming system 100 containing a serving block infrastructure 101 (“BSI”), which in turn contains a capture system 103 for capturing content 102, preparing this content, and packaging it for a service from the HTTP streaming server 104 by storing it in storage 110 content that is available to the capture system 103 and the HTTP streaming server 104. As shown, system 100 may also include an HTTP cache 106. In operation, a client 108, such as an HTTP streaming client, sends requests 112 to the HTTP streaming server 104 and receives responses 114 from the HTTP streaming server 104 or from the HTTP cache 106. In each case, the elements shown in FIG. 1 can be implemented at least in part in software comprising program code that runs on a processor or other electronics.

Контент может содержать фильмы, аудио, плоское 2D видео, 3D видео, другие типы видео, изображения, согласованный по времени текст, согласованные по времени метаданные или подобное. Некоторый контент может включать в себя данные, которые нужно представлять или потреблять согласованно по времени, например данные для представления вспомогательной информации (идентификатор станции, реклама, котировки акций, последовательности Flash™ и т.д.) вместе с другим воспроизводимым мультимедиа. Также могут использоваться другие гибридные представления, которые объединяют другое мультимедиа и/или выходят за пределы просто аудио и видео.The content may include movies, audio, 2D flat video, 3D video, other types of video, images, time-aligned text, time-aligned metadata, or the like. Some content may include data that needs to be presented or consumed concurrently in time, for example, data to represent supporting information (station identifier, advertisement, stock quotes, Flash ™ sequences, etc.) along with other playable multimedia. Other hybrid representations may also be used that combine other multimedia and / or go beyond just audio and video.

Как проиллюстрировано на Фиг. 2, мультимедийные блоки могут храниться в обслуживающей инфраструктуре 101(1) блоков, которая может быть, например, сервером HTTP, устройством сети передачи контента, посредником HTTP, посредником либо сервером FTP, или некоторым другим сервером или системой мультимедиа. Обслуживающая инфраструктура 101(1) блоков соединена с сетью 122, которая может быть, например, сетью с интернет-протоколом («IP»), такой как Интернет. Клиент системы потоковой передачи по запросу блоков показан с шестью функциональными компонентами, а именно селектором 123 блоков, который снабжается описанными выше метаданными и выполняющий функцию выбора блоков или частичных блоков, которые нужно запросить, из множества имеющихся в наличии блоков, указанных метаданными, запросчик 124 блоков, который принимает инструкции запросов от селектора 123 блоков и выполняет операции, необходимые для отправки запроса заданного блока, частей блока или нескольких блоков к обслуживающей инфраструктуре 101(1) блоков по сети 122 и для приема данных, содержащих блок в ответ, а также буфер 125 блоков, блок 126 отслеживания буфера, декодер 127 мультимедиа и один или более преобразователи 128 мультимедиа, которые облегчают потребление мультимедиа.As illustrated in FIG. 2, the multimedia blocks may be stored in the serving block infrastructure 101 (1), which may be, for example, an HTTP server, a content network device, an HTTP intermediary, an intermediary or an FTP server, or some other media server or system. The serving block infrastructure 101 (1) is connected to a network 122, which may be, for example, an Internet Protocol (“IP”) network, such as the Internet. The client of the streaming system upon request of the blocks is shown with six functional components, namely, a block selector 123, which is supplied with the metadata described above and performs the function of selecting the blocks or partial blocks to be requested from among the many available blocks indicated by the metadata, the block interrogator 124 , which receives request instructions from the selector 123 blocks and performs the operations necessary to send a request to a given block, parts of a block or several blocks to the serving infrastructure ure 101 (1) blocks on the network 122 and for receiving data containing the block in response, as well as a block buffer 125, a buffer tracking block 126, a media decoder 127, and one or more media converters 128 that facilitate multimedia consumption.

Данные блоков, принятые запросчиком 124 блоков, передаются для временного хранения в буфер 125 блоков, который хранит мультимедийные данные. В качестве альтернативы, принятые данные блоков могут сохраняться непосредственно в буфер 125 блоков, как проиллюстрировано на Фиг. 1. Декодер 127 мультимедиа снабжается мультимедийными данными с помощью буфера 125 блоков и выполняет такие преобразования над этими данными, которые необходимы для обеспечения подходящих входных данных в преобразователи 128 мультимедиа, которые визуализируют мультимедиа в виде, подходящем для пользователя или другого потребления. Примеры преобразователей мультимедиа включают в себя визуальные устройства отображения, которые можно встретить в мобильных телефонах, компьютерных системах или телевизорах, а также могут включать в себя звуковоспроизводящие устройства, например громкоговорители или наушники.The block data received by the block interrogator 124 is transmitted for temporary storage to a block buffer 125 that stores multimedia data. Alternatively, the received block data may be stored directly in the block buffer 125, as illustrated in FIG. 1. The multimedia decoder 127 is provided with multimedia data using a block buffer 125 and performs such transformations on this data as is necessary to provide suitable input to the multimedia converters 128 that render the multimedia in a form suitable for a user or other consumption. Examples of multimedia converters include visual display devices that can be found on mobile phones, computer systems, or televisions, and may also include sound reproducing devices, such as speakers or headphones.

Примером декодера мультимедиа является функция, которая преобразует данные в формате, описанном в стандарте кодирования видео H.264, в аналоговые или цифровые отображения видеокадров, например карту пикселей YUV-формата с ассоциированными временными отметками представления для каждого кадра или выборки.An example of a multimedia decoder is a function that converts data in the format described in the H.264 video encoding standard to analog or digital displays of video frames, for example, a YUV-format pixel map with associated presentation timestamps for each frame or sample.

Монитор 126 буфера принимает информацию касательно содержимого буфера 125 блоков, и на основе этой информации и по возможности другой информации обеспечивает входные данные в селектор 123 блоков, который используется для определения отбора блоков для запроса, как описано в настоящем документе.The buffer monitor 126 receives information regarding the contents of the block buffer 125, and based on this information and possibly other information provides input to the block selector 123, which is used to determine the selection of blocks for the request, as described herein.

В используемой в этом документе терминологии, каждый блок имеет «время воспроизведения» или «длительность», которая представляет собой количество времени, которое заняло бы у приемника воспроизведение мультимедиа, включенного в блок, с нормальной скоростью. В некоторых случаях, воспроизведение мультимедиа в блоке может зависеть от того, приняты ли уже данные из предыдущих блоков. В редких случаях воспроизведение некоторого мультимедиа в блоке может зависеть от последующего блока, и в этом случае время воспроизведения для блока задается относительно мультимедиа, которое можно воспроизвести в блоке без обращения к последующему блоку, а время воспроизведения для последующего блока увеличивается на время воспроизведения мультимедиа в этом блоке, который можно воспроизвести только после приема последующего блока. Поскольку включение мультимедиа в блок, который зависит от последующих блоков, является редким случаем, в оставшейся части этого раскрытия изобретения мы допускаем, что мультимедиа в одном блоке не зависит от последующих блоков, но отметим, что специалисты в данной области техники признают, что эту разновидность можно легко добавить в описанные ниже варианты осуществления.In the terminology used in this document, each unit has a “play time” or “duration”, which is the amount of time that it would take for the receiver to play the multimedia included in the unit at normal speed. In some cases, multimedia playback in a block may depend on whether data from previous blocks has already been received. In rare cases, the playback of some multimedia in a block may depend on the subsequent block, in which case the playback time for the block is set relative to the multimedia that can be played in the block without reference to the subsequent block, and the playback time for the subsequent block is increased by the multimedia playback time in this a block that can only be played after receiving a subsequent block. Since the inclusion of multimedia in a block that depends on subsequent blocks is a rare case, in the remainder of this disclosure, we assume that multimedia in one block does not depend on subsequent blocks, but we note that those skilled in the art recognize that this variation can easily be added to the embodiments described below.

Приемник может иметь элементы управления, например «пауза», «быстрая перемотка вперед», «перемотка назад» и т.д., что может привести к потреблению блока при воспроизведении с разной скоростью, но если приемник может получить и декодировать каждую последующую последовательность блоков в агрегированное время, меньшее либо равное их агрегированному времени воспроизведения за исключением последнего блока в последовательности, то приемник может представить пользователю мультимедиа без остановки. В некоторых описаниях в этом документе, конкретная позиция в мультимедийном потоке называется конкретным «временем» в мультимедиа, соответствующим времени, которое прошло бы между началом воспроизведения мультимедиа и временем, когда достигается конкретная позиция в видео потоке. Время или позиция в мультимедийном потоке является традиционным понятием. Например, там, где видео поток содержит 24 кадра в секунду, про первый кадр можно сказать, что он имеет позицию или время t=0,0 секунд, а про 241-ый кадр можно сказать, что он имеет позицию или время t=10,0 секунд. Естественно, в видео потоке на основе кадров позиция или время не должны быть непрерывными, так как каждый из битов в потоке от первого бита 241-го кадра до точно перед первым битом 242-го кадра могут все иметь одинаковое значение времени.The receiver may have controls, such as “pause”, “fast forward,” “rewind,” etc., which can lead to block consumption when playing at different speeds, but if the receiver can receive and decode each subsequent sequence of blocks at an aggregated time less than or equal to their aggregated playback time with the exception of the last block in the sequence, the receiver can present multimedia to the user without stopping. In some descriptions in this document, a specific position in a multimedia stream is called a specific “time” in multimedia, corresponding to the time that would elapse between the start of multimedia playback and the time when a specific position in the video stream is reached. Time or position in a multimedia stream is a traditional concept. For example, where the video stream contains 24 frames per second, we can say about the first frame that it has a position or time t = 0.0 seconds, and about the 241st frame we can say that it has a position or time t = 10 , 0 seconds. Naturally, in a frame-based video stream, the position or time should not be continuous, since each of the bits in the stream from the first bit of the 241st frame to exactly before the first bit of the 242nd frame can all have the same time value.

Принимая вышеприведенную терминологию, система потоковой передачи по запросу блоков (BRSS) содержит одного или более клиентов, которые формируют запросы к одному или более серверам контента (например, серверам HTTP, серверам FTP и т.д.). Система захвата содержит один или более процессоров захвата, причем процессор захвата принимает контент (в режиме реального времени или не в режиме реального времени), обрабатывает контент для использования посредством BRSS и сохраняет его в хранилище, доступном серверам контента, по возможности также, вместе с метаданными, сформированными процессором захвата.Accepting the above terminology, a block-request streaming system (BRSS) contains one or more clients that generate requests to one or more content servers (eg, HTTP servers, FTP servers, etc.). A capture system comprises one or more capture processors, the capture processor receiving content (in real time or not in real time), processes the content for use by BRSS, and stores it in a storage accessible to the content servers, if possible also together with metadata formed by the capture processor.

BRSS также может содержать кэши контента, которые скоординированы с серверами контента. Серверы контента и кэши контента могут быть традиционными серверами HTTP и кэшами HTTP, которые принимают запросы файлов или сегментов в виде запросов HTTP, которые включают в себя URL, и также могут включать в себя байтовый диапазон, чтобы запросить не весь файл или сегмент, указанный с помощью URL. Клиенты могут включать в себя традиционного клиента HTTP, который запрашивает серверы HTTP и обрабатывает ответы на те запросы, где клиент HTTP управляется новой клиентской системой, которая формулирует запросы, передает их клиенту HTTP, получает ответы от клиента HTTP и обрабатывает их (или сохраняет, преобразует и т.д.), чтобы выдать их в проигрыватель представлений для воспроизведения клиентским устройством. Обычно, клиентская система заранее не знает, какое мультимедиа потребуется (так как потребности могут зависеть от ввода пользователя, изменений во вводе пользователя и т.д.), поэтому говорят, что это «потоковая» система, в которой мультимедиа «потребляется», как только оно принимается, или вскоре после этого. В результате, задержки ответа и ограничения полосы пропускания могут вызывать задержки в представлении, например, вызывая приостановку представления, когда поток догоняет то место, где пользователь потребляет представление.BRSS may also contain content caches that are coordinated with content servers. Content servers and content caches can be traditional HTTP servers and HTTP caches, which accept file or segment requests as HTTP requests, which include URLs, and can also include a byte range to request not the entire file or segment specified with using the URL. Clients can include a traditional HTTP client that requests HTTP servers and processes responses to those requests where the HTTP client is controlled by a new client system that formulates the requests, passes them to the HTTP client, receives responses from the HTTP client and processes them (or saves, converts them etc.) to issue them to the presentation player for playback by the client device. Usually, the client system does not know in advance what kind of multimedia is needed (since the needs may depend on user input, changes in user input, etc.), therefore they say that this is a “streaming” system in which multimedia is “consumed”, as only it is accepted, or soon after. As a result, response delays and bandwidth limitations can cause delays in the presentation, for example, causing the presentation to pause when the stream catches up to where the user consumes the presentation.

Чтобы обеспечить представление, которое воспринимается как обладающее хорошим качеством, некоторое количество подробностей может быть реализовано в BRSS на стороне клиента, на стороне захвата, либо на обеих сторонах. В некоторых случаях подробности, которые реализуются, выполняются с учетом и для рассмотрения интерфейса клиент-сервер в сети. В некоторых вариантах осуществления клиентская система и система захвата осведомлены об улучшении, тогда как в других вариантах осуществления только одна сторона осведомлена об улучшении. В таких случаях вся система выигрывает от улучшения, даже если одна сторона не осведомлена об этом, хотя в других случаях выгода возникает, только если обе стороны осведомлены об этом, а когда одна сторона не осведомлена, она по-прежнему работает без сбоя.To provide a presentation that is perceived to be of good quality, a number of details can be implemented in BRSS on the client side, on the capture side, or on both sides. In some cases, the details that are being implemented are performed taking into account and to consider the client-server interface on the network. In some embodiments, the client and capture systems are aware of the improvement, while in other embodiments, only one side is aware of the improvement. In such cases, the whole system benefits from improvement, even if one side is not aware of it, although in other cases the benefit arises only if both parties are aware of it, and when one side is not aware, it still works without failure.

Как проиллюстрировано на Фиг. 3, система захвата может быть реализована в виде сочетания аппаратных и программных компонентов в соответствии с различными вариантами осуществления. Система захвата может содержать набор инструкций, который может исполняться для побуждения системы выполнить любую одну или более методологии, рассмотренные в этом документе. Система может быть реализована как специальная машина в виде компьютера. Система может быть серверным компьютером, персональным компьютером (PC) или любой системой, допускающей исполнение набора инструкций (последовательно или иным образом), которые указывают действия, которые должна предпринять система. Кроме того, хотя иллюстрируется только одиночная система, термин «система» также следует употреблять, как включающий любую совокупность систем, которые по отдельности или совместно выполняют набор (или несколько наборов) инструкций для выполнения любой одной или более из методологий, рассмотренных в этом документе.As illustrated in FIG. 3, the capture system may be implemented as a combination of hardware and software components in accordance with various embodiments. A capture system may contain a set of instructions that may be executed to cause the system to follow any one or more of the methodologies discussed in this document. The system can be implemented as a special machine in the form of a computer. The system may be a server computer, a personal computer (PC), or any system capable of executing a set of instructions (sequentially or otherwise) that indicate the actions the system should take. In addition, although only a single system is illustrated, the term “system” should also be used as including any set of systems that individually or collectively carry out a set (or several sets) of instructions for performing any one or more of the methodologies discussed in this document.

Система захвата может включать в себя процессор 302 захвата (например, центральный процессор (CPU)), память 304, которое может хранить программный код во время исполнения, и дисковое запоминающее устройство 306, все из которых осуществляет связь друг с другом по шине 300. Система может дополнительно включать в себя устройство 308 отображения (например, жидкокристаллический дисплей (LCD) или электроннолучевую трубку (CRT)). Система также может включать в себя устройство 310 буквенно-цифрового ввода (например, клавиатуру) и устройство 312 сетевого интерфейса для приема источника контента и передачи в хранилище контента.The capture system may include a capture processor 302 (eg, a central processing unit (CPU)), a memory 304 that can store program code at runtime, and a disk storage device 306, all of which communicate with each other via bus 300. The system may further include a display device 308 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The system may also include an alphanumeric input device 310 (eg, a keyboard) and a network interface device 312 for receiving a content source and transmitting to a content store.

Дисковое запоминающее устройство 306 может включать в себя машиночитаемый носитель информации, на котором может храниться один или более наборы инструкций (например, программное обеспечение), воплощающих любую одну или более методологии или функции, описанные в этом документе. Инструкции также могут находиться, полностью или по меньшей мере частично, в памяти 304 и/или в процессоре 302 захвата во время их исполнения системой, причем память 304 и процессор 302 захвата также составляют машиночитаемые носители информации.Disk storage device 306 may include a computer-readable storage medium that can store one or more sets of instructions (eg, software) embodying any one or more methodologies or functions described herein. The instructions may also be located, in whole or at least partially, in the memory 304 and / or in the capture processor 302 during their execution by the system, the memory 304 and the capture processor 302 also constituting computer-readable storage media.

Как проиллюстрировано на Фиг. 4, клиентская система может быть реализована в виде сочетания аппаратных и программных компонентов в соответствии с различными вариантами осуществления. Клиентская система может содержать набор инструкций, который может исполняться для побуждения системы выполнить любую одну или более методологии, рассмотренных в этом документе. Система может быть реализована как специальная машина в виде компьютера. Система может быть серверным компьютером, персональным компьютером (PC) или любой системой, допускающей исполнение набора инструкций (последовательно или иным образом), которые указывают действия, которые должна быть предприняты системой. Кроме того, хотя иллюстрируется только одиночная система, термин «система» также следует употреблять, как включающий любую совокупность систем, которые по отдельности или совместно выполняют набор (или несколько наборов) инструкций для выполнения любой одной или более методологий, рассмотренных в этом документе.As illustrated in FIG. 4, the client system may be implemented as a combination of hardware and software components in accordance with various embodiments. The client system may contain a set of instructions that can be executed to prompt the system to follow any one or more of the methodologies discussed in this document. The system can be implemented as a special machine in the form of a computer. The system may be a server computer, a personal computer (PC), or any system capable of executing a set of instructions (sequentially or otherwise) that indicate the actions to be taken by the system. In addition, although only a single system is illustrated, the term “system” should also be used as including any set of systems that individually or collectively carry out a set (or several sets) of instructions for performing any one or more of the methodologies discussed in this document.

Клиентская система может включать в себя процессор 402 клиента (например, центральный процессор (CPU)), память 404, которая может хранить программный код во время исполнения, и дисковое запоминающее устройство 406, все из которых осуществляют связь друг с другом по шине 400. Система может дополнительно включать в себя устройство 408 отображения (например, жидкокристаллический дисплей (LCD) или электроннолучевую трубку (CRT)). Система также может включать в себя устройство 410 буквенно-цифрового ввода (например, клавиатуру) и устройство 412 сетевого интерфейса для отправки запросов и приема ответов.The client system may include a client processor 402 (eg, a central processing unit (CPU)), a memory 404 that can store program code at runtime, and a disk storage device 406, all of which communicate with each other via bus 400. The system may further include a display device 408 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The system may also include an alphanumeric input device 410 (e.g., a keyboard) and a network interface device 412 for sending requests and receiving responses.

Дисковое запоминающее устройство 406 может включать в себя машиночитаемый носитель информации, на котором может храниться один или более наборы инструкций (например, программное обеспечение), воплощающие любую одну или более методологии или функции, описанные в этом документе. Инструкции также могут находиться, полностью или по меньшей мере частично, в памяти 404 и/или в процессоре 402 клиента во время их исполнения системой, причем память 404 и процессор 402 клиента также составляют машиночитаемые носители информации.Disk storage device 406 may include a computer-readable medium that can store one or more sets of instructions (eg, software) embodying any one or more methodologies or functions described herein. The instructions may also be located, in whole or at least partially, in the memory 404 and / or in the client processor 402 during their execution by the system, the memory 404 and the client processor 402 also constituting computer-readable media.

ИСПОЛЬЗОВАНИЕ ФОРМАТА ФАЙЛА 3GPPUSING 3GPP FILE FORMAT

Формат файла 3GPP или любой другой файл на основе базового формата мультимедийного файла ISO, например формата файла MP4 или формата файла 3GPP2, может использоваться в качестве контейнерного формата для потоковой передачи HTTP со следующими особенностями. Индекс сегмента может включаться в каждый сегмент, чтобы сигнализировать временные смещения и байтовые диапазоны, так что клиент может загружать подходящие порции файлов или мультимедийные сегменты при необходимости. Распределение во времени глобального представления всего представления мультимедиа и локальное распределение во времени в каждом файле 3GP или мультимедийном сегменте можно точно выровнять. Дорожки в одном файле 3GP или мультимедийном сегменте можно точно выровнять. Дорожки между отображениями также можно выровнять путем присвоения каждой из них глобальной временной шкалы, так что переключение по отображению может быть плавным, и совместное представление мультимедийных компонентов в разных отображениях может быть синхронным.The 3GPP file format or any other file based on the basic ISO media file format, for example, the MP4 file format or the 3GPP2 file format, can be used as a container format for HTTP streaming with the following features. A segment index can be included in each segment to signal time offsets and byte ranges, so that the client can download the appropriate chunks of files or multimedia segments if necessary. The time distribution of the global representation of the entire multimedia presentation and the local time distribution in each 3GP file or multimedia segment can be precisely aligned. Tracks in a single 3GP file or multimedia segment can be precisely aligned. Tracks between displays can also be aligned by assigning each of them a global timeline, so that switching between displays can be smooth, and the joint presentation of multimedia components in different displays can be synchronous.

Формат файла может содержать профиль для Адаптивной Потоковой Передачи со следующими свойствами. Все данные фильма могут содержаться во фрагментах фильма - блок «moov» может не содержать никакой информации о выборке. Данные выборки Аудио и Видео могут чередоваться, с аналогичными требованиями в отношении профиля прогрессивной загрузки, который задан в TS26.244. Блок «moov» можно поместить в начало файла, с последующими данными смещения фрагмента, также называемыми индексом сегмента, содержащим информацию о смещении во временных и байтовых диапазонах для каждого фрагмента или по меньшей мере подмножества фрагментов в содержащем сегменте.The file format may contain a profile for Adaptive Streaming with the following properties. All movie data may be contained in movie fragments - the moov block may not contain any sample information. Audio and Video sample data can be alternated, with similar requirements for the progressive download profile defined in TS26.244. The moov block can be placed at the beginning of the file, followed by fragment offset data, also called segment index, containing offset information in time and byte ranges for each fragment or at least a subset of fragments in the containing segment.

Описанию представления мультимедиа также можно ссылаться на файлы, которые следуют за существующим профилем прогрессивной загрузки. В этом случае клиент может использовать описание представления мультимедиа просто для выбора подходящей альтернативной версии среди нескольких имеющихся в наличии версий. Клиенты также могут использовать частичные запросы GET HTTP с файлами, совместимыми с профилем прогрессивной загрузки, чтобы запрашивать подмножества каждой альтернативной версии и посредством этого реализовать менее эффективную форму адаптивной потоковой передачи. В этом случае разные отображения, содержащие мультимедиа в профиле прогрессивной загрузки, по-прежнему могут придерживаться общей глобальной временной шкалы, чтобы сделать возможным плавное переключение между отображениями.The media presentation description can also be referenced to files that follow the existing progressive download profile. In this case, the client can use the description of the multimedia view simply to select a suitable alternative version from among several available versions. Clients can also use partial HTTP GET requests with files compatible with the progressive download profile to request subsets of each alternative version and thereby implement a less efficient form of adaptive streaming. In this case, different displays containing multimedia in the progressive download profile can still adhere to a common global timeline to enable smooth switching between displays.

ОБЗОР УСОВЕРШЕНСТВОВАННЫХ СПОСОБОВREVIEW OF IMPROVED WAYS

В следующих разделах описаны способы для улучшенных систем потоковой передачи по запросу блоков. Следует понимать, что некоторые из этих улучшений могут использоваться вместе или без других этих улучшений, в зависимости от потребностей применения. При работе в целом, приемник запрашивает у сервера или другого передатчика определенные блоки или части блоков данных. Файлы, также называемые сегментами, могут содержать несколько блоков и ассоциируются с одним отображением представления мультимедиа.The following sections describe methods for advanced block-demand streaming systems. It should be understood that some of these improvements can be used together or without other of these improvements, depending on the needs of the application. In general, the receiver asks the server or another transmitter for specific blocks or parts of data blocks. Files, also called segments, can contain several blocks and are associated with a single display of a multimedia view.

Предпочтительно, чтобы формировалась информация индексирования, также называемая «индексированием сегмента» или «картой сегмента», которая обеспечивает соотнесение моментов воспроизведения или декодирования с байтовыми смещениями соответствующих блоков или фрагментов в сегменте. Это индексирование сегмента может включаться в сегмент, обычно в начале сегмента (по меньшей мере некоторая часть карты сегмента находится в начале), и часто является небольшим. Индекс сегмента также может обеспечиваться в отдельном сегменте или файле индекса. Особенно в случаях, когда индекс сегмента содержится в сегменте, приемник может быстро загрузить часть или всю эту карту сегмента и впоследствии использовать ее для отображения между временными смещениями и соответствующими байтовыми позициями фрагментов, ассоциированных с теми временными смещениями в файле.Preferably, indexing information is generated, also called “segment indexing” or “segment map”, which provides correlation of playback or decoding moments with byte offsets of the corresponding blocks or fragments in the segment. This segment indexing can be included in a segment, usually at the beginning of a segment (at least some part of the segment map is at the beginning), and is often small. A segment index can also be provided in a separate segment or index file. Especially in cases where the segment index is contained in the segment, the receiver can quickly load part or all of this segment map and subsequently use it to display between the time offsets and the corresponding byte positions of the fragments associated with those time offsets in the file.

Приемник может использовать байтовое смещение для запроса данных из фрагментов, ассоциированных с конкретными временными смещениями, без необходимости загружать все данные, ассоциированные с другими фрагментами, не ассоциированными с интересующими временными смещениями. Таким образом, карта сегмента или индексирование сегмента может значительно улучшить возможность приемника по непосредственному доступу к частям сегмента, которые подходят для текущих интересующих временных смещений, с выгодами, включающими улучшенное время переключения контента, возможность быстро переключиться с одного отображения на другое, когда меняются сетевые условия, и уменьшенную потерю сетевых ресурсов при загрузке мультимедиа, которое не воспроизводится на приемнике.The receiver can use the byte offset to request data from fragments associated with specific time offsets, without having to download all the data associated with other fragments not associated with the time offsets of interest. Thus, a segment map or indexing a segment can significantly improve the receiver's ability to directly access portions of the segment that are suitable for current time offsets of interest, with benefits including improved content switching times, the ability to quickly switch from one display to another when network conditions change , and reduced loss of network resources when downloading media that does not play on the receiver.

Если рассматривается переключение с одного отображения (в этом документе называемого «отображением, с которого происходит переключение») на другое отображение (в этом документе называемое «отображением, на которое происходит переключение»), то индекс сегмента также может использоваться для идентификации времени начала точки произвольного доступа в отображении, на которое происходит переключение, чтобы идентифицировать объем данных, который нужно запросить в отображении, с которого происходит переключение, чтобы гарантировать, что плавное переключение обеспечивается в том смысле, что мультимедиа в отображении, с которого происходит переключение, загружается вплоть до времени представления, так что воспроизведение отображения, на которое происходит переключение может начаться плавно с точки произвольного доступа.If you are considering switching from one display (in this document called a “display from which to switch”) to another display (in this document called a “display to which switching occurs”), then the segment index can also be used to identify the start time of an arbitrary point access in the display to be switched to identify the amount of data to be requested in the display from which to switch to ensure that n avnoe switch is provided in the sense that the multimedia display at which switching occurs is loaded up to the presentation time, so that the display reproduction, which occurs at switching can smoothly start the random access point.

Эти блоки представляют сегменты видео мультимедиа или другого мультимедиа, которые нужны запрашивающему приемнику для формирования вывода для пользователя приемника. Приемник мультимедиа может быть клиентским устройством, например, когда приемник принимает контент от сервера, который передает контент. Примеры включают в себя телевизионные приставки, компьютеры, игровые консоли, специально оборудованные телевизоры, карманные устройства, специально оборудованные мобильные телефоны или другие клиентские приемники.These blocks represent segments of video multimedia or other multimedia that the requesting receiver needs to generate output for the receiver user. The multimedia receiver may be a client device, for example, when the receiver receives content from a server that transmits the content. Examples include set-top boxes, computers, game consoles, specially equipped televisions, handheld devices, specially equipped mobile phones, or other client receivers.

В настоящем документе описано множество способов усовершенствованного управления буфером. Например, способ управления буфером позволяет клиентам запрашивать блоки мультимедиа наивысшего качества, которые можно непрерывно принять во время для воспроизведения. Свойство переменного размера блока улучшает эффективность сжатия. Возможность иметь несколько соединений для передачи блоков запрашивающему устройству наряду с ограничением частоты запросов обеспечивает улучшенную эффективность передачи. Частично принятые блоки данных могут использоваться для продолжения представления мультимедиа. Соединение может повторно использоваться для нескольких блоков без необходимости фиксировать соединение в начале для конкретного набора блоков. Согласованность при выборе серверов из числа нескольких возможных серверов несколькими клиентами улучшается, что уменьшает частоту дублированного контента на ближайших серверах и улучшает вероятность того, что сервер содержит весь файл. Клиенты могут запрашивать мультимедийные блоки на основе метаданных (например, имеющихся в наличии кодирований мультимедиа), которые встраиваются в URL для файлов, содержащих мультимедийные блоки. Система может предусмотреть вычисление и минимизацию величины времени буферизации, необходимого до того, как можно начинать воспроизведение контента, без последующих пауз при воспроизведении мультимедиа. Имеющаяся в наличии полоса пропускания может совместно использоваться несколькими мультимедийными блоками, отрегулированная, когда приближается время воспроизведения каждого блока, чтобы при необходимости большую долю имеющейся в наличии полосы пропускания можно было распределить блоку с ближайшим временем воспроизведения.This document describes many advanced buffer management techniques. For example, a buffer control method allows clients to request the highest quality media blocks that can be continuously received during playback. The variable block size property improves compression efficiency. The ability to have multiple connections for transferring blocks to the requesting device along with limiting the frequency of requests provides improved transmission efficiency. Partially received data blocks may be used to continue the presentation of multimedia. A join can be reused for multiple blocks without having to fix the join at the beginning for a particular set of blocks. Consistency in selecting servers from among several possible servers by several clients is improved, which reduces the frequency of duplicate content on nearby servers and improves the likelihood that the server contains the entire file. Clients can request multimedia blocks based on metadata (for example, multimedia encodings available) that are embedded in URLs for files containing multimedia blocks. The system can provide for calculating and minimizing the amount of buffering time required before content can be started, without subsequent pauses in multimedia playback. The available bandwidth can be shared between several multimedia units, adjusted when the playback time of each unit approaches, so that if necessary, a large portion of the available bandwidth can be allocated to the unit with the closest playback time.

Потоковая передача HTTP может использовать метаданные. Метаданные уровня представления включают в себя, например, длительность потока, имеющиеся в наличии кодирования (скорости передачи данных, кодеки, пространственные разрешения, частоты кадров, язык, типы мультимедиа), указатели на метаданные потока для каждого кодирования, и защиту контента (информацию управления цифровыми правами (DRM)). Метаданные потока могут быть URL для файлов сегментов.HTTP streaming can use metadata. Presentation level metadata includes, for example, stream lengths, available encodings (data rates, codecs, spatial resolutions, frame rates, language, media types), pointers to stream metadata for each encoding, and content protection (digital management information Rights (DRM)). Stream metadata can be URLs for segment files.

Метаданные сегмента могут включать в себя байтовый диапазон в сравнении с временной информацией для запросов в сегменте и идентификацию Точек Произвольного Доступа (RAP) или других точек поиска, где некоторая часть или вся эта информация может быть частью индексирования сегмента или карты сегмента.Segment metadata can include a byte range versus time information for queries in a segment and the identification of Random Access Points (RAPs) or other search points where some or all of this information may be part of indexing a segment or segment map.

Потоки могут содержать несколько кодирований одного и того же контента. Каждое кодирование затем можно разбить на сегменты, причем каждый сегмент соответствует единице хранения или файлу. В случае HTTP, сегмент обычно является ресурсом, к которому можно обращаться по URL, и запрос такого URL приводит к возврату сегмента в качестве тела содержимого сообщения ответа на запрос. Сегменты могут содержать несколько групп картинок (GoP). Каждая GoP может дополнительно содержать несколько фрагментов, причем индексирование сегмента обеспечивает информацию о временном/байтовом смещении для каждого фрагмента, т.е. единицей индексирования является фрагмент.Streams may contain multiple encodings of the same content. Each encoding can then be segmented, with each segment corresponding to a storage unit or file. In the case of HTTP, a segment is usually a resource that can be accessed by URL, and requesting such a URL will return the segment as the body of the content of the response message to the request. Segments can contain several groups of pictures (GoP). Each GoP may additionally contain several fragments, and segment indexing provides information on the time / byte offset for each fragment, i.e. the unit of indexing is a fragment.

Фрагменты или части фрагментов можно запрашивать по параллельным соединениям TCP, чтобы увеличить пропускную способность. Это может смягчить проблемы, которые возникают при совместном использовании соединений по линии связи с ограничением или когда соединения теряются из-за перегрузки, соответственно увеличивая общую скорость и надежность передачи, что может существенно улучшить скорость и надежность времени переключения контента. Полосой пропускания можно пожертвовать ради задержки путем избыточного запроса, но следует соблюдать осторожность, чтобы избежать формирования запросов слишком далеко в будущее, что может увеличить риск «информационного голода».Fragments or parts of fragments can be requested over parallel TCP connections to increase throughput. This can mitigate the problems that arise when sharing connections over a restricted communication line or when connections are lost due to congestion, thereby increasing the overall speed and reliability of the transmission, which can significantly improve the speed and reliability of the content switching time. Bandwidth can be sacrificed for delay by over-querying, but care should be taken to avoid generating queries too far into the future, which may increase the risk of “information hunger”.

Несколько запросов сегментов на одном и том же сервере можно организовать в конвейер (выполняя следующий запрос перед тем, как завершается текущий запрос), чтобы избежать повторяющихся задержек запуска TCP. Запросы последовательных фрагментов можно конфигурировать в один запрос.Multiple segment requests on the same server can be organized into a pipeline (by executing the following request before the current request completes) to avoid repeated delays in starting TCP. Sequential fragment requests can be configured in a single request.

Некоторые CDN предпочитают большие файлы и могут инициировать фоновые выборки всего файла из первоначального сервера, когда первый раз видят запрос диапазона. Однако большинство CDN будут обслуживать запросы диапазона из кэша, если данные имеются. Поэтому может быть полезным отнести некоторую часть клиентских запросов ко всему файлу сегмента. Эти запросы позже можно отменить при необходимости.Some CDNs prefer large files and may initiate background fetching of the entire file from the original server when they first see a range request. However, most CDNs will serve range requests from the cache if data is available. Therefore, it may be useful to attribute some client requests to the entire segment file. These requests can later be canceled if necessary.

Действительные точки переключения могут быть точками поиска, в частности RAP, в целевом потоке. Возможны разные реализации, например фиксированные структуры GoP или выравнивание RAP по потокам (на основе начала мультимедиа или на основе GoP).Valid switch points can be search points, in particular RAPs, in the target stream. Different implementations are possible, for example, fixed GoP structures or stream-aligned RAPs (based on the beginning of multimedia or based on GoP).

В одном варианте осуществления, сегменты и GoP могут быть выровнены по потокам с разной скоростью. В этом варианте осуществления, GoP могут иметь переменный размер и могут содержать несколько фрагментов, но фрагменты не выровнены между потоками с разной скоростью.In one embodiment, segments and GoPs can be stream aligned at different speeds. In this embodiment, GoPs may be of variable size and may contain multiple fragments, but fragments are not aligned between streams at different speeds.

В некоторых вариантах осуществления, может выгодно применяться избыточность файла. В этих вариантах осуществления код стирания применяется к каждому фрагменту для формирования избыточных версий данных. Предпочтительно, форматирование источника не меняется из-за использования FEC, и дополнительные сегменты восстановления, например, в виде зависимого отображения первоначального отображения, содержащие данные восстановления FEC, формируются и обеспечивается в качестве дополнительного этапа в системе захвата. Клиент, который способен восстановить фрагмент с использованием только исходных данных для того фрагмента, может запрашивать у серверов только исходные данные для фрагмента в сегменте. Если серверы недоступны или соединения с серверами медленные, что может определяться либо до, либо после запроса исходных данных, то можно запросить дополнительные данные восстановления для фрагмента из сегмента восстановления, что уменьшает время для надежной передачи достаточных данных для восстановления фрагмента, по возможности используя декодирование FEC, чтобы использовать сочетание принятых исходных данных и данных восстановления для восстановления исходных данных фрагмента. Кроме того, можно запросить дополнительные данные восстановления, чтобы сделать возможным восстановление фрагмента, если фрагмент становится срочным, т.е. его время воспроизведения становится близким, что увеличивает долю данных для того фрагмента на линии связи, но эффективнее, нежели закрытие других соединений на линии связи для высвобождения полосы пропускания. Это также может уменьшить риск «информационного голода» от использования параллельных соединений.In some embodiments, file redundancy may be advantageously applied. In these embodiments, an erase code is applied to each fragment to generate redundant versions of the data. Preferably, the formatting of the source does not change due to the use of FEC, and additional recovery segments, for example, in the form of a dependent display of the initial display, containing FEC recovery data, are generated and provided as an additional step in the capture system. A client that is able to recover a fragment using only the source data for that fragment can request from the servers only the source data for the fragment in the segment. If the servers are unavailable or the connections to the servers are slow, which can be determined either before or after requesting the initial data, then you can request additional recovery data for the fragment from the recovery segment, which reduces the time for reliable transfer of sufficient data to restore the fragment, possibly using FEC decoding to use a combination of the received source data and recovery data to restore the source data of the fragment. In addition, additional recovery data may be requested to make it possible to recover the fragment if the fragment becomes urgent, i.e. its playback time becomes close, which increases the proportion of data for that fragment on the communication line, but more efficient than closing other connections on the communication line to free up bandwidth. It can also reduce the risk of “information hunger” from using parallel connections.

Форматом фрагмента может быть сохраненный поток пакетов транспортного протокола в режиме реального времени (RTP) с синхронизацией аудио/видео, достигаемой по протоколу управления передачей в реальном масштабе времени (RTCP).The fragment format can be a stored real-time transport protocol packet stream (RTP) with audio / video synchronization achieved by real-time transmission control protocol (RTCP).

Форматом сегмента также может быть сохраненный поток пакетов MPEG-2 с синхронизацией аудио/видео, достигаемой по внутреннему распределению во времени TS MPEG-2.The segment format can also be a stored MPEG-2 packet stream with audio / video synchronization achieved by the internal time distribution of the MPEG-2 TS.

Использование сигнализации и/или формирования блоков для повышения эффективности потоковой передачиUsing signaling and / or blocking to improve streaming performance

Некоторое количество свойств может использоваться или не использоваться в системе потоковой передачи по запросу блоков для обеспечения улучшенной производительности. Производительность может относиться к возможности воспроизводить представление без остановки, получению мультимедийных данных в рамках ограничений полосы пропускания и/или выполнению этого в рамках ограниченных ресурсов процессора на клиенте, сервере и/или системе захвата. Некоторые из этих свойств будут описаны сейчас.A number of properties may or may not be used in a block-demand streaming system to provide improved performance. Performance may relate to the ability to play a presentation without stopping, to receive multimedia data within the limits of bandwidth and / or to do so within the limited processor resources of a client, server and / or capture system. Some of these properties will be described now.

ИНДЕКСИРОВАНИЕ В СЕГМЕНТАХSEGMENT INDEXING

Чтобы сформулировать частичные запросы GET для фрагментов фильма, клиента можно информировать о байтовом смещении и времени начала при декодировании или времени представления всех мультимедийных компонентов, содержащихся во фрагментах в рамках файла или сегмента, а также о том, какие фрагменты начинаются или содержат Точки Произвольного Доступа (и поэтому подходят для использования в качестве точки переключения между альтернативными отображениями), причем эта информация часто называется индексированием сегмента или картой сегмента. Время начала при декодировании или время представления могут выражаться непосредственно или могут выражаться как дельты относительно начального времени.In order to formulate partial GET requests for movie fragments, the client can be informed about the byte offset and the start time when decoding or the presentation time of all multimedia components contained in the fragments within the file or segment, as well as which fragments start or contain Random Access Points ( and therefore suitable for use as a switching point between alternative mappings), this information often referred to as segment indexing or segment map. The decoding start time or presentation time can be expressed directly or can be expressed as deltas relative to the start time.

Эта информация индексирования временного и байтового смещения может потребовать по меньшей мере 8 байт данных на фрагмент фильма. В качестве примера для двухчасового фильма, содержащегося в одиночном файле, с фрагментами фильма по 500 мс, это составило бы в итоге около 112 килобайт данных. Загрузка всех этих данных при запуске представления может привести к значительной дополнительной задержке запуска. Однако, данные о временном и байтовом смещении могут кодироваться иерархически, чтобы клиент мог быстро найти небольшую порцию данных о времени и смещении, соответствующую моменту в представлении, в котором он желает начать. Информация также может распространяться в сегменте, так что некоторое уточнение индекса сегмента может располагаться с чередованием с мультимедийными данными.This temporal and byte offset indexing information may require at least 8 bytes of data per movie fragment. As an example, for a two-hour movie contained in a single file with 500ms movie fragments, this would total about 112 kilobytes of data. Downloading all of this data when starting a view can lead to a significant additional delay in starting. However, the time and byte offset data can be hierarchically encoded so that the client can quickly find a small portion of the time and offset data corresponding to the moment in the view in which it wants to start. Information can also be distributed in the segment, so that some refinement of the segment index can be interleaved with multimedia data.

Отметим, что если отображение сегментируется по времени на несколько сегментов, использование этого иерархического кодирования может быть не нужным, так как полные данные о времени и смещении для каждого сегмента уже могут быть достаточно малыми. Например, если сегменты составляют одну минуту вместо двух часов в вышеприведенном примере, то информация индексирования временного-байтового смещения составляет около 1 килобайта данных, что обычно может поместиться в одиночный пакет TCP/IP.Note that if the display is time segmented into several segments, the use of this hierarchical coding may not be necessary, since the complete time and offset data for each segment may already be quite small. For example, if the segments are one minute instead of two hours in the above example, then the time-byte offset indexing information is about 1 kilobyte of data, which can usually fit in a single TCP / IP packet.

Разные варианты возможны для добавления данных о временном и байтовом смещении фрагмента в файл 3GPP:Different options are possible for adding data about the temporal and byte offset of a fragment to a 3GPP file:

Во-первых, для этой цели может использоваться блок произвольного доступа к фрагменту фильма («MFRA»). MFRA обеспечивает таблицу, которая может помогать программам считывания в отыскании точек произвольного доступа в файле, используя фрагменты фильма. В поддержку этой функции, MFRA, между прочим, содержит байтовые смещения блоков MFRA, содержащих точки произвольного доступа. MFRA можно поместить в конец файла или рядом с ним, но это не обязательно так. Путем сканирования с конца файла в поисках блока смещения произвольного доступа к фрагменту фильма и использования информации о размере в нем, можно определить местоположение начала блока произвольного доступа к фрагменту фильма. Однако помещение MFRA в конец для потоковой передачи HTTP обычно требует по меньшей мере 3-4 запросов HTTP для доступа к нужным данным: по меньшей мере один для запроса MFRA из конца файла, один для получения MFRA и, наконец, один для получения нужного фрагмента в файле. Поэтому помещение в начало может быть желательным, поскольку тогда MFRA может быть загружен вместе с первыми мультимедийными данными в одиночном запросе. Также, использование MFRA для потоковой передачи HTTP может быть неэффективным, поскольку не нужна никакая информация в «MFRA», кроме времени и moof_offset, и указание смещений вместо длин может потребовать больше битов.First, a random access block for a movie fragment (“MFRA”) can be used for this purpose. MFRA provides a table that can assist readers in finding random access points in a file using movie fragments. In support of this feature, MFRA, by the way, contains byte offsets of MFRA blocks containing random access points. MFRA can be placed at or near the end of a file, but this is not necessarily the case. By scanning from the end of the file in search of a random access bias block to a movie fragment and using the size information in it, you can determine the location of the beginning of a random access block to a movie fragment. However, putting MFRA at the end for HTTP streaming usually requires at least 3-4 HTTP requests to access the data you need: at least one for the MFRA request from the end of the file, one to get the MFRA and finally one to get the right fragment in file. Therefore, placing at the beginning may be desirable, since then the MFRA can be loaded along with the first multimedia data in a single request. Also, using MFRA for HTTP streaming can be inefficient, since no information is needed in MFRA except time and moof_offset, and specifying offsets instead of lengths may require more bits.

Во-вторых, может использоваться блок местоположения элементов («ILOC»). «ILOC» обеспечивает каталог ресурсов метаданных в этом или других файлах путем определения местоположения содержащего их файла, их смещения в том файле, и их длины. Например, система может объединить все ресурсы метаданных с внешней ссылкой в одном файле, соответственно повторно регулируя смещения файлов и ссылки на файлы. Однако, «ILOC» предназначен для задания местоположения метаданных, поэтому ему может быть трудно сосуществовать с реальными метаданными.Secondly, an element location block (“ILOC”) may be used. ILOC provides a directory of metadata resources in this or other files by determining the location of the file containing them, their offset in that file, and their length. For example, a system can combine all metadata resources with an external link in a single file, respectively re-adjusting file offsets and file links. However, “ILOC” is intended to set the location of metadata, so it may be difficult for it to coexist with real metadata.

Наконец, и возможно наиболее подходящим, является описание нового блока, называемого блоком индекса времени («TIDX»), специально назначенного для обеспечения точных моментов или длительностей фрагментов и байтового смещения эффективным способом. Более подробно это описано в следующем разделе. Альтернативным блоком с такими же функциональными возможностями может быть блок индекса сегмента («SIDX»). В этом документе, пока не указано иное, эти два блока могут быть взаимозаменяемыми, так как оба блока обеспечивают возможность обеспечить точные моменты или длительности фрагментов и байтовое смещение эффективным способом. Разница между TIDX и SIDX описана ниже. Должно быть очевидно то, каким образом менять блоки TIDX и блоки SIDX, так как оба блока реализуют индекс сегмента.Finally, and perhaps most appropriate, is a description of a new block called the time index block (“TIDX”), specifically designated to provide exact moments or durations of fragments and byte offset in an efficient way. This is described in more detail in the next section. An alternative block with the same functionality could be a segment index block (“SIDX”). In this document, unless otherwise indicated, these two blocks can be interchangeable, since both blocks provide the ability to provide exact moments or durations of fragments and byte offset in an effective way. The difference between TIDX and SIDX is described below. It should be obvious how to change TIDX blocks and SIDX blocks, since both blocks implement a segment index.

ИНДЕКСИРОВАНИЕ СЕГМЕНТАSEGMENT INDEXING

Сегмент имеет идентифицированное время начала и идентифицированное количество байт. Несколько фрагментов могут быть сцеплены в одиночный сегмент, и клиенты могут выдавать запросы, которые идентифицируют определенный байтовый диапазон в сегменте, который соответствует необходимому фрагменту или подмножеству фрагмента. Например, когда HTTP используется в качестве протокола запроса, то для этой цели может использоваться заголовок диапазона HTTP. Этот подход требует, чтобы у клиента был доступ к «индексу сегмента» сегмента, который указывает позицию разных фрагментов в сегменте. Этот «индекс сегмента» может обеспечиваться как часть метаданных. Этот подход имеет результатом то, что нужно формировать и администрировать гораздо меньшее количество файлов по сравнению с подходом, когда каждый блок хранится в отдельном файле. Управление формированием, пересылкой и хранением очень больших количеств файлов (которые могут вырасти до многих тысяч для 1 часового представления, скажем, в 1 час) может быть сложным и подверженным ошибкам, и поэтому сокращение количества файлов представляет преимущество.A segment has an identified start time and an identified number of bytes. Multiple fragments can be concatenated into a single segment, and clients can issue requests that identify a specific byte range in the segment that corresponds to the desired fragment or subset of the fragment. For example, when HTTP is used as the request protocol, an HTTP range header can be used for this purpose. This approach requires the client to have access to the “segment index” of the segment, which indicates the position of the different fragments in the segment. This “segment index" may be provided as part of the metadata. This approach results in the fact that you need to create and administer a much smaller number of files compared to the approach when each block is stored in a separate file. Managing the generation, transfer and storage of very large numbers of files (which can grow up to many thousands for a 1 hour presentation, say, 1 hour) can be difficult and error prone, and therefore reducing the number of files is an advantage.

Если клиент знает только нужное время начала меньшей части сегмента, то он может запросить весь файл, затем считать файл от начала до конца для определения подходящего места начала воспроизведения. Чтобы улучшить использование полосы пропускания, сегменты могут включать в себя индексный файл в качестве метаданных, причем индексный файл соотносит байтовых диапазонов отдельных блоков с временными диапазонами, которым соответствуют блоки, называемое индексированием сегмента или картой сегмента. Эти метаданные могут быть отформатированы в виде XML данных или могут быть двоичными, например, соответствуя структуре атома и блока в формате файла 3GPP. Индексирование может быть простым, в котором временные и байтовые диапазоны каждого блока являются абсолютными относительно начала файла, либо они могут быть иерархическими, когда некоторые блоки группируются в родительские блоки (а те в блоки предков и т.д.), и временной и байтовый диапазон для заданного блока выражается относительно временного и/или байтового диапазона родительского блока этого блока.If the client knows only the necessary start time of a smaller part of the segment, then he can request the entire file, then read the file from beginning to end to determine a suitable place to start playback. To improve bandwidth utilization, segments can include an index file as metadata, wherein the index file relates the byte ranges of the individual blocks to the time ranges to which the blocks correspond, called segment indexing or segment map. This metadata can be formatted as XML data or can be binary, for example, corresponding to the atom and block structure in the 3GPP file format. Indexing can be simple, in which the time and byte ranges of each block are absolute relative to the beginning of the file, or they can be hierarchical when some blocks are grouped into parent blocks (and those into ancestor blocks, etc.), and a time and byte range for a given block is expressed relative to the time and / or byte range of the parent block of this block.

ПРИМЕРНАЯ СТРУКТУРА КАРТЫ ИНДЕКСИРОВАНИЯEXAMPLE STRUCTURE OF THE INDEXING CARD

В одном варианте осуществления, первоначальные исходные данные для одного отображения мультимедийного потока могут содержаться в одном или более мультимедийных файлах, в этом документе называемых «мультимедийным сегментом», где каждый мультимедийный сегмент содержит мультимедийные данные, используемые для воспроизведения непрерывного временного сегмента мультимедиа, например, 5 минут воспроизведения мультимедиа.In one embodiment, the original source data for one display of a multimedia stream may be contained in one or more multimedia files, referred to herein as a “multimedia segment,” where each multimedia segment contains multimedia data used to play a continuous time media segment, for example, 5 minutes of multimedia playback.

Фиг. 6 показывает примерную общую структуру мультимедийного сегмента. В каждом сегменте, либо в начале, либо по всему исходному сегменту, также может присутствовать информация индексирования, которая содержит карту сегмента с временным/байтовым смещением. Карта сегмента с временным/байтовым смещением в одном варианте осуществления может быть списком пар временного/байтового смещения (T(0), B(0)), (T(1), B(1)), …, (T(i), B(i)), …, (T(n), B(n)), где T(i-1) представляет время начала в сегменте для воспроизведения i-ого фрагмента мультимедиа относительно исходного времени начала мультимедиа среди всех мультимедийных сегментов, T(i) представляет время окончания для i-ого фрагмента (и соответственно время начала для следующего фрагмента), а байтовое смещение B(i-1) является соответствующим индексом байта начала данных в этом исходном сегменте, где i-ый фрагмент мультимедиа начинается относительно начала исходного сегмента, и B(i) является соответствующим индексом конечного байта i-го фрагмента (и соответственно индексом первого байта следующего фрагмента). Если сегмент содержит несколько мультимедийных компонентов, то T(i) и B(i) могут обеспечиваться для каждого компонента в сегменте абсолютным способом, либо они могут выражаться относительно другого мультимедийного компонента, который служит опорным мультимедийным компонентом.FIG. 6 shows an exemplary overall structure of a multimedia segment. In each segment, either at the beginning or across the entire source segment, indexing information may also be present that contains a segment map with a time / byte offset. A segment map with a time / byte offset in one embodiment may be a list of time / byte offset pairs (T (0), B (0)), (T (1), B (1)), ..., (T (i) , B (i)), ..., (T (n), B (n)), where T (i-1) represents the start time in the segment for playing the i-th media fragment relative to the original multimedia start time among all multimedia segments, T (i) represents the end time for the i-th fragment (and, accordingly, the start time for the next fragment), and the byte offset B (i-1) is the corresponding index of the data start byte in this m initial segment where i-th multimedia fragment starts from the beginning of the initial segment, and B (i) is the appropriate index of the final byte of i-th fragment (and accordingly the index of the first byte of the next track). If a segment contains several multimedia components, then T (i) and B (i) can be provided for each component in the segment in an absolute way, or they can be expressed relative to another multimedia component that serves as a reference multimedia component.

В этом варианте осуществления количество фрагментов в исходном сегменте равно n, где n может меняться от сегмента к сегменту.In this embodiment, the number of fragments in the source segment is n, where n may vary from segment to segment.

В другом варианте осуществления, временное смещение в индексе сегмента для каждого фрагмента может определяться с помощью абсолютного времени начала первого фрагмента и длительностей каждого фрагмента. В этом случае, индекс сегмента может документировать время начала первого фрагмента и длительность всех фрагментов, которые включаются в сегмент. Индекс сегмента также может документировать только подмножество фрагментов. В этом случае, индекс сегмента документирует длительность субсегмента, который определяется в виде одного или более последовательных фрагментов, заканчивающихся либо в конце содержащего сегмента, либо в начале следующего субсегмента.In another embodiment, the time offset in the segment index for each fragment can be determined using the absolute start time of the first fragment and the durations of each fragment. In this case, the segment index can document the start time of the first fragment and the duration of all the fragments that are included in the segment. A segment index can also only document a subset of fragments. In this case, the segment index documents the duration of the sub-segment, which is defined as one or more consecutive fragments ending either at the end of the containing segment or at the beginning of the next sub-segment.

Для каждого фрагмента также может присутствовать значение, которое указывает, начинается ли фрагмент в точке поиска или содержит ли ее, т.е. в точке, в которой никакое мультимедиа после той точки не зависит ни от какого мультимедиа перед той точкой, и соответственно мультимедиа дальше с того фрагмента можно воспроизвести независимо от предыдущих фрагментов. Точки поиска обычно являются точками в мультимедиа, где воспроизведение может начинаться независимо от всех предыдущих мультимедиа. Фиг. 6 также показывает простой пример возможного индексирования сегмента для исходного сегмента. В том примере, значение временного смещения выражается в единицах миллисекунд, и соответственно первый фрагмент этого исходного сегмента начинается через 20 секунд от начала мультимедиа, и первый фрагмент имеет время воспроизведения в 485 миллисекунд. Байтовое смещение начала первого фрагмента равно 0, а байтовое смещение конца первого фрагмента/начала второго фрагмента равно 50,245, и соответственно первый фрагмент имеет размер 50,245 байт. Если фрагмент или субсегмент не начинается с точки произвольного доступа, но точка произвольного доступа содержится во фрагменте или субсегменте, то может задаваться разница времени декодирования или времени представления между временем начала и фактическим временем RAP. Это обеспечивает возможность клиенту в случае переключения на этот мультимедийный сегмент точно узнать время до того, как нужно будет представить переключение с отображения.For each fragment, a value can also be present that indicates whether the fragment begins at the search point or whether it contains it, i.e. at a point at which no multimedia after that point depends on any multimedia before that point, and accordingly, multimedia from that fragment can be reproduced independently of previous fragments. Search points are usually points in multimedia, where playback can begin independently of all previous multimedia. FIG. 6 also shows a simple example of a possible segment indexing for a source segment. In that example, the time offset value is expressed in units of milliseconds, and accordingly, the first fragment of this source segment starts 20 seconds after the multimedia starts, and the first fragment has a playback time of 485 milliseconds. The byte offset of the beginning of the first fragment is 0, and the byte offset of the end of the first fragment / beginning of the second fragment is 50.245, and accordingly, the first fragment is 50.245 bytes in size. If the fragment or subsegment does not start from the random access point, but the random access point is contained in the fragment or subsegment, then the decoding or presentation time difference between the start time and the actual RAP time can be set. This provides the client with the opportunity, in the case of switching to this multimedia segment, to know the exact time before the switching from the display will be necessary.

В дополнение или вместо простого или иерархического индексирования может использоваться гирляндное индексирование и/или гибридное индексирование.In addition to or instead of simple or hierarchical indexing, dummy indexing and / or hybrid indexing can be used.

Так как длительности выборок для разных дорожек могут быть не одинаковыми (например, видео выборки могут демонстрироваться в течение 33 мс, тогда как аудио выборка может длиться 80 мс), то разные дорожки во фрагменте фильма могут не начинаться и заканчиваться точно в одно и то же время, т.е. аудио может начинаться немного раньше или немного позже видео, причем обратное верно для предыдущего фрагмента, для компенсации. Чтобы избежать неопределенности, временные отметки, заданные в данных временного и байтового смещения, могут задаваться относительно конкретной дорожки, и это может быть одна и та же дорожка для каждого отображения. Обычно это будет видео дорожка. Это позволяет клиенту идентифицировать точно следующий видео кадр, когда он переключает отображения.Since the duration of the samples for different tracks may not be the same (for example, video samples can be displayed for 33 ms, while the audio sample can last for 80 ms), different tracks in the movie fragment may not start and end exactly the same time i.e. audio can start a little earlier or a little later than the video, and the opposite is true for the previous fragment, to compensate. To avoid ambiguity, the time stamps specified in the time and byte offset data can be set relative to a particular track, and this can be the same track for each display. This will usually be a video track. This allows the client to identify exactly the next video frame when he switches the display.

Можно принимать меры в течение представления, чтобы поддерживать строгое отношение между шкалами времени дорожки и временем представления, чтобы гарантировать плавное воспроизведение и сохранение синхронизации аудио/видео, несмотря на вышеупомянутую проблему.You can take steps during the presentation to maintain a strict relationship between track timelines and presentation time to ensure smooth playback and audio / video synchronization, despite the aforementioned problem.

Фиг. 7 иллюстрирует некоторые примеры, например, простой индекс 700 и иерархический индекс 702.FIG. 7 illustrates some examples, for example, a simple index 700 and a hierarchical index 702.

Ниже приведены два конкретных примера блока, который содержит карту сегмента, один называется блоком индекса времени (‘TIDX’), а другой называется (‘SIDX’). Определение соответствует структуре блока в соответствии с базовым форматом мультимедийного файла ISO. Другие исполнения для таких блоков, чтобы определить аналогичный синтаксис и такую же семантику и функциональные возможности, должны быть очевидны читателю.The following are two specific examples of a block that contains a segment map, one called a time index block (‘TIDX’) and the other called (‘SIDX’). The definition corresponds to the block structure in accordance with the basic format of the ISO multimedia file. Other executions for such blocks, in order to define a similar syntax and the same semantics and functionality, should be obvious to the reader.

Блок индекса времениTime index block

ОпределениеDefinition

Тип блока: ‘tidx’Block Type: ‘tidx’

Контейнер: ФайлContainer: File

Обязательный: НетMandatory: No

Количество: Любое число из нуля или единицыQuantity: Any number from zero or one

Блок индекса времени может обеспечить набор индексов временного и байтового смещения, которые ассоциируют некоторые области файла с некоторыми интервалами времени представления. Блок индекса времени может включать в себя поле targettype, которое указывает тип данных, на которые ссылаются. Например, блок индекса времени с targettype «moof» обеспечивает индекс мультимедийных фрагментов, содержащихся в файле, в показателях как временных, так и байтовых смещений. Блок индекса времени с targettype блока индекса времени может использоваться для построения иерархического индекса времени, позволяющего пользователям файла быстро перейти в необходимую часть индекса.The time index block may provide a set of time and byte offset indices that associate some areas of the file with some presentation time intervals. The time index block may include a targettype field that indicates the type of data referenced. For example, a time index block with targettype “moof” provides an index of the multimedia fragments contained in a file in terms of both time and byte offsets. The time index block with the targettype of the time index block can be used to build a hierarchical time index, allowing users of the file to quickly jump to the necessary part of the index.

Индекс сегмента может содержать, например, следующий синтаксис:A segment index may contain, for example, the following syntax:

aligned(8) class TimeIndexBoxaligned (8) class TimeIndexBox

extends FullBox(‘frai’) {extends FullBox (‘frai’) {

unsigned int(32) targettype;unsigned int (32) targettype;

unsigned int(32) time_reference_track_ID;unsigned int (32) time_reference_track_ID;

unsigned int(32) number_of_elements;unsigned int (32) number_of_elements;

unsigned int(64) first_element_offset;unsigned int (64) first_element_offset;

unsigned int(64) first_element_time;unsigned int (64) first_element_time;

for(i=1; i<=number_of_elements; i++)for (i = 1; i <= number_of_elements; i ++)

{{

bit (1) random_access_flag;bit (1) random_access_flag;

unsigned int(31) length;unsigned int (31) length;

unsigned int(32) deltaT;unsigned int (32) deltaT;

}}

}}

СемантикаSemantics

targettype: является типом данных блока, на которые ссылается этот блок индекса времени. Это может быть либо заголовок фрагмента фильма («moof»), либо блок индекса времени («tidx»).targettype: is the data type of the block referenced by this time index block. This can be either the title of a movie fragment (“moof”) or a time index block (“tidx”).

time-reference_track_id: указывает дорожку, по отношению к которой задаются временные смещения в этом индексе.time-reference_track_id: indicates the track with respect to which time offsets in this index are set.

number_of_elements: количество элементов, индексированных этим блоком индекса времени.number_of_elements: the number of elements indexed by this time index block.

first_element_offset: Байтовое смещение от начала файла первого индексированного элемента.first_element_offset: The byte offset from the beginning of the file of the first indexed element.

first_element_time: Время начала первого индексированного элемента, использующего шкалу времени, заданную в блоке заголовка мультимедиа дорожки, идентифицированной посредством time_reference_track_id.first_element_time: The start time of the first indexed item using the timeline specified in the title block of the media track identified by time_reference_track_id.

random_access_flag: Единица, если время начала элемента является точкой произвольного доступа. Ноль в противном случае.random_access_flag: Unit if the start time of the item is a random access point. Zero otherwise.

length: Длина индексированного элемента в байтахlength: The length of the indexed element in bytes

deltaT: разность в показателях шкалы времени, заданной в блоке заголовка мультимедиа дорожки, идентифицированной посредством time_reference_track_id, между временем начала этого элемента и временем начала следующего элемента.deltaT: difference in timeline metrics specified in the title block of the media track identified by time_reference_track_id between the start time of this item and the start time of the next item.

БЛОК ИНДЕКСА СЕГМЕНТАSEGMENT INDEX BLOCK

Блок индекса сегмента (‘sidx’) обеспечивает компактный индекс фрагментов фильма и других блоков индекса сегмента в сегменте. Существует две циклические конструкции в блоке индекса сегмента. Первый цикл документирует первую выборку субсегмента, т.е. выборку в первом фрагменте фильма, на который ссылается второй цикл. Второй цикл обеспечивает индекс субсегмента. Контейнером для блока ‘sidx’ является файл или непосредственно сегмент.A segment index block (’sidx’) provides a compact index of movie fragments and other segment index blocks in a segment. There are two cyclic constructs in a segment index block. The first cycle documents the first subsegment sample, i.e. a sample in the first fragment of the movie referenced by the second cycle. The second cycle provides a sub-segment index. The container for the ‘sidx’ block is a file or a segment itself.

СинтаксисSyntax

aligned(8) class SegmentIndexBox extends FullBox(‘sidx’, version, 0) {aligned (8) class SegmentIndexBox extends FullBox (‘sidx’, version, 0) {

unsigned int(32) reference_track_ID;unsigned int (32) reference_track_ID;

unsigned int(16) track_count;unsigned int (16) track_count;

unsigned int(16) reference_count;unsigned int (16) reference_count;

for (i=1; i<= track_count; i++)for (i = 1; i <= track_count; i ++)

{{

unsigned int(32) track_ID;unsigned int (32) track_ID;

if (version==0)if (version == 0)

{{

unsigned int(32) decoding_time;unsigned int (32) decoding_time;

} else} else

{{

unsigned int(64) decoding_time;unsigned int (64) decoding_time;

}}

}}

for(i=1; i<= reference_count; i++)for (i = 1; i <= reference_count; i ++)

{{

bit (1) reference_type;bit (1) reference_type;

unsigned int(31) reference_offset;unsigned int (31) reference_offset;

unsigned int(32) subsegment_duration;unsigned int (32) subsegment_duration;

bit(1) contains_RAP;bit (1) contains_RAP;

unsigned int(31) RAP_delta_time;unsigned int (31) RAP_delta_time;

}}

}}

Семантика:Semantics:

reference_track_ID обеспечивает track_ID для опорной дорожки.reference_track_ID provides the track_ID for the reference track.

track_count: количество дорожек, индексированных в следующем цикле (1 или больше);track_count: the number of tracks indexed in the next cycle (1 or more);

reference_count: количество элементов, индексированных вторым циклом (1 или больше);reference_count: the number of elements indexed by the second loop (1 or more);

track_ID: ID дорожки, для которой фрагмент дорожки включается в первый фрагмент фильма, идентифицированный этим индексом; точно один track_ID в этом цикле равен reference_track_ID;track_ID: track ID for which a track fragment is included in the first movie fragment identified by this index; exactly one track_ID in this loop is equal to reference_track_ID;

decoding_time: время декодирования для первой выборки на дорожке, идентифицированной по track_ID во фрагменте фильма, на который ссылается первый элемент во втором цикле, выраженное в шкале времени дорожки (как документировано в поле шкалы времени в блоке заголовка мультимедиа дорожки);decoding_time: decoding time for the first sample on the track identified by track_ID in the movie fragment referenced by the first element in the second cycle, expressed in the track's timeline (as documented in the timeline field in the title block of the multimedia track);

reference_type: когда установлен в 0, указывает, что ссылка идет на блок фрагмента фильма (‘moof’); когда установлен в 1, указывает, что ссылка идет на блок индекса сегмента (‘sidx’);reference_type: when set to 0, indicates that the link goes to the block of the movie fragment (‘moof’); when set to 1, indicates that the link goes to the segment index block (‘sidx’);

reference_offset: расстояние в байтах от первого байта, следующего за содержащим блок индекса сегмента, до первого байта блока, на который ссылаются;reference_offset: distance in bytes from the first byte following the containing block index block to the first byte of the referenced block;

subsegment_duration: когда ссылка идет на блок индекса сегмента, это поле несет сумму полей subsegment_duration во втором цикле того блока; когда ссылка идет на фрагмент фильма, это поле несет сумму длительностей выборок в опорной дорожке, в указанном фрагменте фильма и последующих фрагментах фильма вплоть до либо первого фрагмента фильма, документированного следующим входом в цикле, либо конца субсегмента, что наступит раньше; длительность выражается в шкале времени дорожки (как документировано в поле шкалы времени в блоке заголовка мультимедиа дорожки);subsegment_duration: when the link goes to the segment index block, this field carries the sum of the subsegment_duration fields in the second cycle of that block; when the link goes to a movie fragment, this field carries the sum of the durations of the samples in the reference track, in the specified movie fragment and subsequent movie fragments, up to either the first movie fragment, documented by the next input in the loop, or the end of the sub-segment, which will come earlier; duration is expressed in the timeline of the track (as documented in the timeline field in the title block of the multimedia track);

contains_RAP: когда ссылка идет на фрагмент фильма, этот бит может быть 1, если фрагмент дорожки в том фрагменте фильма для дорожки с track_ID, равном reference_track_ID, содержит по меньшей мере одну точку произвольного доступа, в противном случае этот бит устанавливается в 0; когда ссылка идет на индекс сегмента, тогда этот бит устанавливается в 1, только если любая из ссылок в том индексе сегмента имеет этот бит, установленный в 1, и 0 в противном случае;contains_RAP: when the link goes to the movie fragment, this bit can be 1 if the track fragment in that movie fragment for the track with track_ID equal to reference_track_ID contains at least one random access point, otherwise this bit is set to 0; when the link goes to the segment index, then this bit is set to 1 only if any of the links in that segment index has this bit set to 1, and 0 otherwise;

RAP_delta_time: если contains_RAP равно 1, обеспечивает время представления (композиции) точки произвольного доступа (RAP); зарезервировано со значением 0, если contains_RAP равно 0. Время выражается в виде разницы между временем декодирования первой выборки субсегмента, документированного этой записью, и временем представления (композиции) точки произвольного доступа, на дорожке с track_ID, равным reference_track_ID.RAP_delta_time: if contains_RAP is 1, provides the presentation (composition) time of a random access point (RAP); reserved with a value of 0 if contains_RAP is 0. The time is expressed as the difference between the decoding time of the first subsegment sample documented by this record and the time of presentation (composition) of the random access point, on a track with track_ID equal to reference_track_ID.

ОТЛИЧИЯ МЕЖДУ TIDX И SIDXDIFFERENCES BETWEEN TIDX AND SIDX

TIDX и SIDX обеспечивают одинаковые функциональные возможности по отношению к индексированию. Первый цикл SIDX к тому же обеспечивает глобальное распределение во времени для первого фрагмента фильма, но глобальное распределение по времени с тем же успехом может содержаться в самом фрагменте фильма, либо абсолютно, либо относительно опорной дорожки.TIDX and SIDX provide the same functionality with respect to indexing. The first SIDX cycle also provides global time distribution for the first fragment of the film, but the global time distribution with the same success can be contained in the fragment of the film, either absolutely or relative to the reference track.

Второй цикл SIDX реализует функциональные возможности TIDX. В частности, SIDX позволяет иметь смесь целевых объектов для ссылки для каждого индекса, называемую reference_type, тогда как TIDX ссылается либо только на TIDX, либо только на MOOF. Number_of_elements в TIDX соответствует reference_count в SIDX, time-reference_track_id в TIDX соответствует reference_track_ID в SIDX, first_element_offset в TIDX соответствует reference_offset в первом входе второго цикла, first_element_time в TIDX соответствует decoding_time у reference_track в первом цикле, random_access_flag в TIDX соответствует contains_RAP в SIDX с дополнительной свободой в том, что в SIDX RAP не обязательно может помещаться в начало фрагмента, требуя поэтому RAP_delta_time, length в TIDX соответствует reference_offset в SIDX, и в конечном счете deltaT в TIDX соответствует subsegment_duration в SIDX. Поэтому функциональные возможности двух блоков эквивалентны.The second SIDX cycle implements TIDX functionality. In particular, SIDX allows you to have a mixture of targets for a link for each index, called reference_type, while TIDX refers to either only TIDX or only MOOF. Number_of_elements in TIDX corresponds to reference_count in SIDX, time-reference_track_id in TIDX corresponds to reference_track_ID in SIDX, first_element_offset in TIDX corresponds to reference_offset in the first input of the second cycle, first_element_time in TIDX corresponds to decoding_time in reference_track in the first cycle, random_accessX in the first contains in that in SIDX, RAP may not necessarily be placed at the beginning of the fragment, therefore requiring RAP_delta_time, length in TIDX corresponds to reference_offset in SIDX, and ultimately deltaT in TIDX corresponds to subsegment_duration in SIDX. Therefore, the functionality of the two blocks is equivalent.

ЗАДАНИЕ ПЕРЕМЕННЫХ РАЗМЕРОВ БЛОКА И БЛОКИ СУБ-GOPSETTING UNIT VARIABLE SIZES AND SUB-GOP BLOCKS

Для видео мультимедиа, может быть важно отношение между структурой кодирования видео и структурой блока для запросов. Например, если каждый блок начинается с точки поиска, например Точки Произвольного Доступа («RAP»), и каждый блок представляет равный период времени видео, то позиционирование по меньшей мере некоторых точек поиска в видео мультимедиа фиксировано, и точки поиска будут возникать с равными интервалами в рамках кодирования видео. Как хорошо известно специалистам в области кодирования видео, эффективность сжатия можно улучшить, если точки поиска размещаются в соответствии с отношениями между видео кадрами, и в частности, если они размещаются в кадрах, которые имеют мало общего с предыдущими кадрами. Это требование, что блоки представляют равные промежутки времени, соответственно накладывает ограничение на кодирование видео, так что сжатие может быть субоптимальным.For multimedia video, the relationship between the video encoding structure and the block structure for queries may be important. For example, if each block starts with a search point, for example, Random Access Points (“RAPs”), and each block represents an equal time period of the video, then the positioning of at least some search points in the multimedia video is fixed, and the search points will occur at equal intervals as part of video encoding. As is well known to specialists in the field of video coding, the compression efficiency can be improved if the search points are placed in accordance with the relationship between the video frames, and in particular, if they are placed in frames that have little in common with previous frames. This requirement that the blocks represent equal time intervals, accordingly imposes a restriction on video encoding, so that compression can be suboptimal.

Желательно позволить системе кодирования видео выбирать позицию точек поиска в видео представлении вместо требования точек поиска в фиксированных позициях. Разрешение системе кодирования видео выбирать точки поиска приводит к улучшенному сжатию видео, и соответственно более высокое качество видео мультимедиа можно обеспечить с использованием заданной имеющейся в наличии полосы пропускания, получая в результате улучшенное восприятие пользователя. Современные системы потоковой передачи по запросу блоков могут требовать, чтобы все блоки были одинаковой длительности (по времени видео), и что каждый блок должен начинаться с точки поиска, и это соответственно является недостатком существующих систем.It is desirable to allow the video coding system to select the position of the search points in the video representation instead of requiring the search points in fixed positions. Allowing the video coding system to select search points results in improved video compression, and accordingly, higher quality multimedia video can be achieved using a given available bandwidth, resulting in an improved user experience. Modern streaming systems at the request of blocks may require that all blocks be of the same duration (video time), and that each block must start from a search point, and this is accordingly a drawback of existing systems.

Теперь будет описана новая система потоковой передачи по запросу блоков, которая обеспечивает преимущества по сравнению с вышеупомянутыми. В одном варианте осуществления, процесс кодирования видео первой версии компонента видео может конфигурироваться для выбора позиций точек поиска, чтобы оптимизировать эффективность сжатия, но с требованием, что существует максимум длительности между точками поиска. Это последнее требование действительно ограничивает выбор точек поиска с помощью процесса кодирования, и соответственно снижает эффективность сжатия. Однако, снижение эффективности сжатия является небольшим по сравнению с тем, которое получилось бы, если постоянные фиксированные позиции требовались для точек поиска, при условии, что максимум длительности между точками поиска не очень маленький (например, примерно больше секунды). Кроме того, если максимум длительности между точками поиска составляет несколько секунд, то снижение эффективности сжатия по сравнению с полностью свободным позиционированием точек поиска обычно очень небольшое.Now will be described a new system for streaming on demand blocks, which provides advantages over the above. In one embodiment, the video encoding process of the first version of the video component can be configured to select the positions of the search points in order to optimize the compression efficiency, but with the requirement that there is a maximum duration between the search points. This last requirement really limits the selection of search points using the coding process, and accordingly reduces the compression efficiency. However, the reduction in compression efficiency is small compared to what would have happened if constant fixed positions were required for the search points, provided that the maximum duration between the search points is not very small (for example, about more than a second). In addition, if the maximum duration between the search points is several seconds, then the reduction in compression efficiency compared to the completely free positioning of the search points is usually very small.

Во многих вариантах осуществления, включая этот вариант осуществления, может быть так, что некоторые RAP не являются точками поиска, т.е., может существовать кадр, который является RAP, которая находится между двумя последовательными точками поиска, которая не выбирается как точка поиска, например, потому что RAP находится слишком близко по времени к окружающим точкам поиска, или потому что объем мультимедийных данных между точкой поиска, предшествующей или следующей за RAP, и этой RAP очень небольшой.In many embodiments, including this embodiment, it may be that some RAPs are not search points, i.e., there may be a frame that is a RAP that is between two consecutive search points that is not selected as a search point, for example, because the RAP is too close in time to the surrounding search points, or because the amount of multimedia data between the search point preceding or following the RAP and this RAP is very small.

Позиция точек поиска во всех других версиях представления мультимедиа может ограничиваться такой же, как точки поиска в первой версии (например, с наивысшей скоростью мультимедийных данных). Это снижает эффективность сжатия для этой другой версии по сравнению с разрешением кодеру свободно выбирать точки поиска.The position of the search points in all other versions of the multimedia presentation may be limited to the same as the search points in the first version (for example, with the highest speed of multimedia data). This reduces the compression efficiency for this other version compared to allowing the encoder to freely select the search points.

Использование точек поиска обычно требует независимо декодируемого кадра, что обычно приводит к низкой эффективности сжатия для того кадра. Кадры, которые не должны быть декодируемыми независимо, могут кодироваться со ссылкой на данные в других кадрах, что обычно увеличивает эффективность сжатия для того кадра на величину, которая зависит от степени общности между кадром, который нужно кодировать, и опорными кадрами. Эффективный выбор позиционирования точки поиска предпочтительно выбирает в качестве точки поиска кадр, который обладает низкой общностью с предыдущими кадрами, и посредством этого минимизирует ухудшение эффективности сжатия, вызванное кодированием кадра способом, который является независимо декодируемым.The use of search points typically requires an independently decoded frame, which usually results in low compression efficiency for that frame. Frames that should not be decoded independently can be encoded with reference to data in other frames, which usually increases the compression efficiency for that frame by an amount that depends on the degree of generality between the frame to be encoded and the reference frames. An effective choice of search point positioning preferably selects a frame that has low similarity with previous frames as the search point, and thereby minimizes the degradation in compression efficiency caused by encoding the frame in a manner that is independently decoded.

Однако уровень общности между кадром и возможными опорными кадрами сильно коррелирует между разными отображениями контента, поскольку первоначальный контент один и тот же. В результате ограничение точек поиска в других вариантах такими же позициями, как у точек поиска в первом варианте, не обеспечивает значительного различия в эффективности сжатия.However, the level of generality between the frame and the possible reference frames strongly correlates between different displays of the content, since the original content is the same. As a result, limiting the search points in other embodiments to the same positions as the search points in the first embodiment does not provide a significant difference in compression efficiency.

Структура точки поиска предпочтительно используется для определения структуры блока. Предпочтительно, чтобы каждая точка поиска определяла начало блока, и может быть один или более блоков, которые включают в себя данные между двумя последовательными точками поиска. Поскольку длительность между точками поиска не фиксирована для кодирования с хорошим сжатием, не всем блокам нужно иметь одинаковую длительность воспроизведения. В некоторых вариантах осуществления блоки выравниваются между версиями контента - т.е. если имеется блок, охватывающий определенную группу кадров в одной версии контента, то имеется блок, охватывающий такую же группу кадров в другой версии контента. Блоки для заданной версии контента не перекрываются, и каждый кадр контента содержится точно в одном блоке каждой версии.The structure of the search point is preferably used to determine the structure of the block. Preferably, each search point determines the start of a block, and there may be one or more blocks that include data between two consecutive search points. Since the duration between the search points is not fixed for encoding with good compression, not all blocks need to have the same playback duration. In some embodiments, the blocks are aligned between versions of the content — i.e. if there is a block covering a certain group of frames in one version of the content, then there is a block covering the same group of frames in a different version of the content. Blocks for a given version of content do not overlap, and each frame of content is contained in exactly one block of each version.

Полезным свойством, которое позволяет эффективное использование переменных длительностей между точками поиска и соответственно GoP переменной длительности, является индексирование сегмента или карта сегмента, которая может включаться в сегмент или обеспечиваться клиенту другим способом, т.е. это метаданные, ассоциированные с этим сегментом в этом отображении, которые могут обеспечиваться содержащими время начала и длительность каждого блока представления. Клиент может использовать эти данные индексирования сегмента при определении блока, в котором начать представление, когда пользователь запросил начало представления в конкретной точке в сегменте. Если такие метаданные не обеспечены, то представление может начинаться только с начала контента или в случайной или приблизительной точке рядом с нужной точкой (например, при выборе начального блока путем разделения запрошенной начальной точки (во времени) на среднюю длительность блока, чтобы задать индекс начального блока).A useful property that allows the effective use of variable durations between search points and, correspondingly, GoP of variable duration is a segment indexing or segment map, which can be included in the segment or provided to the client in another way, i.e. this is the metadata associated with this segment in this display, which may be provided containing the start time and duration of each presentation block. The client can use this segment indexing data to determine the block in which to start the presentation when the user has requested the start of the presentation at a specific point in the segment. If such metadata is not provided, then the presentation can begin only from the beginning of the content or at a random or approximate point next to the desired point (for example, when choosing a starting block by dividing the requested starting point (in time) by the average length of the block to set the index of the starting block )

В одном варианте осуществления каждый блок может обеспечиваться в виде отдельного файла. В другом варианте осуществления несколько последовательных блоков могут быть агрегированы в одиночный файл, чтобы образовать сегмент. В этом втором варианте осуществления, могут обеспечиваться метаданные для каждой версии, содержащие время начала и длительность каждого блока и байтовое смещение в файле, с которого начинается блок. Эти метаданные могут обеспечиваться в ответ на исходный запрос по протоколу, т.е. иметься в наличии отдельно от сегмента или файла, или могут содержаться в таком же файле или сегменте, как и сами блоки, например, в начале файла. Как будет ясно специалистам в данной области техники, эти метаданные могут кодироваться в сжатом виде, например кодирование gzip или дельта-кодирование, либо в двоичном виде, чтобы уменьшить сетевые ресурсы, необходимые для транспортировки метаданных к клиенту.In one embodiment, each block may be provided as a separate file. In another embodiment, several consecutive blocks may be aggregated into a single file to form a segment. In this second embodiment, metadata for each version may be provided containing the start time and duration of each block and the byte offset in the file from which the block begins. This metadata may be provided in response to the original request over the protocol, i.e. available separately from a segment or file, or may be contained in the same file or segment as the blocks themselves, for example, at the beginning of the file. As will be clear to those skilled in the art, this metadata can be encoded in compressed form, such as gzip encoding or delta encoding, or in binary form to reduce the network resources needed to transport metadata to the client.

Фиг. 6 показывает пример индексирования сегмента, где блоки имеют переменный размер, и где границами блоков является частичная GoP, т.е. частичный объем мультимедийных данных между одной RAP и следующей RAP. В этом примере, точки поиска указываются индикатором RAP, причем значение индикатора RAP, равное 1, указывает на то, что блок начинается с или содержит RAP, или точку поиска, и где индикатор RAP, равный 0, указывает на то, что блок не содержит RAP или точки поиска. В этом примере первые три блока, т.е. байты с 0 по 157,033, содержат первую GoP, которая имеет длительность представления в 1,623 секунды, со временем представления от 20 секунд до 21,623 секунды в контенте. В этом примере первый из трех первых блоков содержит 0,485 секунды времени представления и содержит первые 50,245 байт мультимедийных данных в сегменте. В этом примере блоки 4, 5, и 6 содержат вторую GoP, блоки 7 и 8 содержат третью GoP, а блоки 9, 10, и 11 содержат четвертую GoP. Отметим, что могут быть другие RAP в мультимедийных данных, которые не предназначены в качестве точек поиска, и они соответственно не сигнализируются как RAP в карте сегмента.FIG. 6 shows an example of indexing a segment where the blocks are of variable size and where the boundaries of the blocks are partial GoP, i.e. A partial amount of multimedia data between one RAP and the next RAP. In this example, the search points are indicated by the RAP indicator, wherein a RAP indicator value of 1 indicates that the block begins with or contains RAP, or a search point, and where a RAP indicator of 0 indicates that the block does not contain RAP or search points. In this example, the first three blocks, i.e. bytes 0 through 157.033 contain the first GoP, which has a presentation duration of 1.623 seconds, with a presentation time of 20 seconds to 21.623 seconds in content. In this example, the first of the first three blocks contains 0.485 seconds of presentation time and contains the first 50.245 bytes of multimedia data in the segment. In this example, blocks 4, 5, and 6 contain a second GoP, blocks 7 and 8 contain a third GoP, and blocks 9, 10, and 11 contain a fourth GoP. Note that there may be other RAPs in the multimedia data that are not intended as search points, and they accordingly are not signaled as RAPs in the segment map.

Вновь обращаясь к Фиг. 6, если клиент или приемник хочет получить доступ к контенту, начиная с временного смещения приблизительно в 22 секунды в представлении мультимедиа, то клиент может сначала использовать другую информацию, например MPD, более подробно описанное ниже, чтобы сначала определить, что соответствующие мультимедийные данные находятся в этом сегменте. Клиент может загрузить первую часть сегмента, чтобы получить индексирование сегмента, которое в этом случае составляет всего несколько байт, например, используя запрос байтового диапазона HTTP. Используя индексирование сегмента, клиент может определить, что первый блок, который ему следует загрузить, является первым блоком с временным смещением, которое составляет не более 22 секунд и начинается с RAP, т.е. с точки поиска. В этом примере, хотя блок 5 имеет временное смещение, которое меньше 22 секунд, т.е. его временное смещение составляет 21,965 секунды, индексирование сегмента указывает, что блок 5 не начинается с RAP, и соответственно вместо него на основе индексирования сегмента клиент выбирает для загрузки блок 4, поскольку его время начала составляет не более 22 секунд, т.е. его временное смещение равно 21,623 секунды, и он начинается с RAP. Таким образом, на основе индексирования сегмента клиент сделает запрос диапазона HTTP, начиная с байтового смещения 157,034.Referring again to FIG. 6, if the client or receiver wants to access the content starting at a time offset of approximately 22 seconds in the multimedia view, then the client can first use other information, such as MPD, described in more detail below, to first determine that the corresponding multimedia data is in this segment. The client can download the first part of the segment to obtain indexing of the segment, which in this case is only a few bytes, for example, using an HTTP byte range request. Using segment indexing, the client can determine that the first block that it should load is the first block with a time offset of no more than 22 seconds and starts with RAP, i.e. from the search point. In this example, although block 5 has a temporal offset that is less than 22 seconds, i.e. its time offset is 21.965 seconds, segment indexing indicates that block 5 does not start with RAP, and accordingly, based on segment indexing, the client selects block 4 for loading, since its start time is no more than 22 seconds, i.e. its time offset is 21.623 seconds, and it starts with RAP. Thus, based on segment indexing, the client will make an HTTP range request, starting at byte offset 157.034.

Если бы индексирование сегмента не обеспечивалось, то клиенту пришлось бы загружать все предыдущие 157,034 байта данных перед загрузкой этих данных, приводя к гораздо большему времени запуска, или времени переключения каналов, и к неэкономной загрузке данных, которые не нужны. В качестве альтернативы, если бы индексирование сегмента не обеспечивалось, то клиент мог бы приблизительно определить, где нужные данные начинаются в сегменте, но приближение могло быть плохим, и он может пропустить подходящее время, и тогда потребуется вернуться назад, что снова увеличивает задержку запуска.If segment indexing were not provided, then the client would have to download all the previous 157,034 bytes of data before loading this data, resulting in much longer startup time, or channel switching time, and uneconomical loading of data that is not needed. Alternatively, if segment indexing were not provided, then the client could roughly determine where the desired data begins in the segment, but the approximation could be poor, and it may miss the appropriate time, and then it will be necessary to go back, which again increases the start delay.

Как правило, каждый блок включает в себя часть мультимедийных данных, которые вместе с предыдущими блоками могут воспроизводиться проигрывателем мультимедиа. Таким образом, блочная структура и сигнализация клиенту блочной структуры индексирования сегмента, содержащейся в сегменте или обеспечиваемой клиенту другим способом, может значительно улучшить возможность клиента в обеспечении быстрого переключения канала и плавном воспроизведении, несмотря на колебания и сбои в сети. Поддержка блоков переменной длительности и блоков, которые включают в себя только части GoP, что разрешено индексированием сегмента, может значительно улучшить восприятие потоковой передачи. Например, снова обращаясь к Фиг. 6 и примеру, описанному выше, когда клиент хочет начать воспроизведение приблизительно с 22 секунд в представлении, клиент может запросить с помощью одного или более запросов данные в блоке 4, а затем подать их в проигрыватель мультимедиа, как только он имеется в наличие для начала воспроизведения. Таким образом, в этом примере воспроизведение начинается, как только 42,011 байт блока 4 принимаются на клиенте, соответственно обеспечивая быстрое время переключения каналов. Если вместо этого клиенту нужно запросить всю GoP перед тем, как должно было начаться воспроизведение, то время переключения каналов было бы больше, так как это составляет 144,211 байт данных.As a rule, each block includes a part of multimedia data, which together with the previous blocks can be played by a multimedia player. Thus, the block structure and signaling to the client the block structure of the segment indexing contained in the segment or provided to the client in another way can significantly improve the client's ability to provide fast channel switching and smooth playback, despite fluctuations and network failures. Support for variable-duration blocks and blocks that include only parts of GoP, which is allowed by indexing a segment, can greatly improve the perception of streaming. For example, referring again to FIG. 6 and the example described above, when the client wants to start playback from approximately 22 seconds in the view, the client can request data in block 4 using one or more requests and then submit it to the media player as soon as it is available to start playback . Thus, in this example, playback starts as soon as 42.011 bytes of block 4 are received on the client, respectively, providing fast channel switching times. If instead the client needed to request the entire GoP before playback was supposed to begin, then the channel switching time would be longer, since this amounts to 144.211 bytes of data.

В других вариантах осуществления, RAP или точки поиска также могут возникать в середине блока, и могут присутствовать данные в индексировании сегмента, которые указывают на то, где находится та RAP или точка поиска в блоке или фрагменте. В других вариантах осуществления временное смещение может быть временем декодирования первого кадра в блоке вместо времени представления первого кадра в блоке.In other embodiments, RAPs or search points may also occur in the middle of the block, and segment indexing data may be present that indicates where that RAP or search point is in the block or fragment. In other embodiments, the time offset may be the decoding time of the first frame in the block instead of the time the first frame was presented in the block.

Фиг. 8(а) и (b) иллюстрируют пример задания переменных размеров блока в выровненной структуре точки поиска по множеству версий или отображений; Фиг. 8(а) иллюстрирует задание переменных размеров блока с выровненными точками поиска на множестве версий мультимедийного потока, тогда как Фиг. 8(b) иллюстрирует задание переменных размеров блока с не выровненными точками поиска на множестве версий мультимедийного потока.FIG. 8 (a) and (b) illustrate an example of setting variable block sizes in the aligned structure of a search point over multiple versions or mappings; FIG. 8 (a) illustrates setting variable block sizes with aligned search points on a plurality of media stream versions, while FIG. 8 (b) illustrates the definition of variable block sizes with non-aligned search points on multiple versions of a multimedia stream.

Время показано сверху в секундах, а блоки и точки поиска двух сегментов для двух отображений показаны слева направо в показателях их распределения во времени относительно этой временной шкалы, и соответственно длина каждого показанного блока пропорциональна времени воспроизведения и не пропорциональна количеству байтов в блоке. В этом примере индексирование сегмента для обоих сегментов двух отображений имело бы одинаковые временные смещения для точек поиска, но потенциально отличающиеся количества блоков или фрагментов между точками поиска, и разные байтовые смещения для блоков из-за разных объемов мультимедийных данных в каждом блоке. В этом примере, если клиент хочет переключиться с отображения 1 на отображение 2 во время представления приблизительно в 23 секунды, то клиент может запросить вплоть до блока 1.2 в сегменте для отображения 1, и начать запрашивание сегмента для отображения 2, начинающегося с блока 2.2, и соответственно переключение может произойти в представлении, совпадающем с точкой поиска 1.2 в отображении 1, которая находится в том же времени, что и точка поиска 2.2 в отображении 2.The time is shown in seconds, and the blocks and search points of two segments for two displays are shown from left to right in terms of their distribution in time relative to this timeline, and accordingly, the length of each shown block is proportional to the playback time and not proportional to the number of bytes in the block. In this example, indexing a segment for both segments of two mappings would have the same time offsets for the search points, but potentially different numbers of blocks or fragments between the search points, and different byte offsets for the blocks due to different amounts of multimedia data in each block. In this example, if the client wants to switch from display 1 to display 2 during the presentation in approximately 23 seconds, then the client can query up to block 1.2 in the segment for display 1, and start querying the segment for display 2 starting with block 2.2, and accordingly, switching can occur in a view that matches the search point 1.2 in display 1, which is at the same time as the search point 2.2 in display 2.

Как должно быть ясно из вышеупомянутого, описанная система потоковой передачи по запросу блоков не ограничивает кодирование видео помещением точек поиска в определенные позиции в контенте, и это смягчает одну из проблем существующих систем.As should be clear from the above, the described block-based streaming system does not restrict video encoding by placing search points at specific positions in the content, and this mitigates one of the problems of existing systems.

В вариантах осуществления, описанных выше, она организуется так, что выравниваются точки поиска для различных отображений одного представления контента. Однако во многих случаях предпочтительно ослабить это требование к выравниванию. Например, иногда имеет место, что для формирования отображений используются инструменты кодирования, которые не обладают возможностями сформировать отображения с выровненными точками поиска. В качестве другого примера, представление контента может кодироваться в разные отображения независимо, без выравнивания точек поиска между разными отображениями. В качестве другого примера отображение может содержать больше точек поиска, так как оно имеет меньшие скорости и в большинстве случаев его нужно переключать, либо оно содержит точки поиска для поддержки сложных режимов, например, быстрой перемотки вперед или перемотки назад или быстрого поиска. Таким образом, желательно обеспечить способы, которые делают систему потоковой передачи по запросу блоков допускающей эффективное и плавное обращение с не выровненными точками поиска по различным отображениям для представления контента.In the embodiments described above, it is organized such that search points are aligned for different displays of the same content representation. However, in many cases, it is preferable to relax this alignment requirement. For example, sometimes it happens that for the formation of mappings, coding tools are used that do not have the ability to form mappings with aligned search points. As another example, a content representation may be encoded into different displays independently, without aligning the search points between different displays. As another example, a display may contain more search points since it has lower speeds and in most cases needs to be switched, or it contains search points to support complex modes, such as fast forward or rewind or fast search. Thus, it is desirable to provide methods that make a block-based streaming system capable of efficiently and smoothly handling non-aligned search points across various displays to represent content.

В этом варианте осуществления позиции точек поиска по отображениям могут быть не выровнены. Блоки формируются так, что новый блок начинается в каждой точке поиска, и соответственно может отсутствовать выравнивание между блоками разных версий представления. Пример такой структуры с не выровненными точками поиска между разными отображениями показан на Фиг. 8(b). Время показано сверху в секундах, а блоки и точки поиска двух сегментов для двух отображений показаны слева направо в показателях их распределения во времени относительно этой временной шкалы, и соответственно длина каждого показанного блока пропорциональна его времени воспроизведения и не пропорциональна количеству байтов в блоке. В этом примере, индексирование сегмента для обоих сегментов двух отображений имело бы потенциально разные временные смещения для точек поиска, а также потенциально отличающиеся количества блоков или фрагментов между точками поиска, и разные байтовые смещения для блоков из-за разных объемов мультимедийных данных в каждом блоке. В этом примере, если клиент хочет переключиться с отображения 1 на отображение 2 во время представления приблизительно в 25 секунд, то клиент может запросить вплоть до блока 1.3 в сегменте для отображения 1, и начать запрашивание сегмента для отображения 2, начинающегося с блока 2.3, и соответственно переключение может произойти в представлении, совпадающем с точкой поиска 2.3 в отображении 2, которая находится в середине воспроизведения блока 1.3 в отображении 1, и соответственно часть мультимедиа для блока 1.2 не будет воспроизведена (хотя может потребоваться загрузить мультимедийные данные для кадров блока 1.3, которые не воспроизводятся, в буфер приемника для декодирования других кадров блока 1.3, которые воспроизводятся).In this embodiment, the positions of the search points in the mappings may not be aligned. Blocks are formed so that a new block starts at each search point, and accordingly there may be no alignment between blocks of different versions of the view. An example of such a structure with not aligned search points between different mappings is shown in FIG. 8 (b). The time is shown in seconds, and the blocks and search points of two segments for two displays are shown from left to right in terms of their distribution in time relative to this timeline, and accordingly, the length of each shown block is proportional to its playback time and not proportional to the number of bytes in the block. In this example, indexing a segment for both segments of two mappings would have potentially different time offsets for the search points, as well as potentially different numbers of blocks or fragments between the search points, and different byte offsets for the blocks due to different amounts of multimedia data in each block. In this example, if the client wants to switch from display 1 to display 2 during the presentation in approximately 25 seconds, then the client can query up to block 1.3 in the segment for display 1, and start requesting a segment for display 2 starting with block 2.3, and accordingly, switching can occur in a view that matches the search point 2.3 in display 2, which is in the middle of playback of block 1.3 in display 1, and accordingly, part of the media for block 1.2 will not be played (although it may rebovatsya download multimedia data for 1.3 block frames which are not reproduced in the receiver buffer for decoding of other frames block 1.3, reproduced).

В этом варианте осуществления работу селектора 123 блоков можно изменить так им образом, что всякий раз, когда необходимо выбрать блок из отображения, которое отличается от ранее выбранной версии, выбирается последний блок, чей первый кадр находится не позже кадра, следующего за последним кадром последнего выбранного блока.In this embodiment, the operation of the block selector 123 can be changed in such a way that whenever it is necessary to select a block from a display that differs from the previously selected version, the last block is selected whose first frame is no later than the frame following the last frame of the last selected block.

Этот последний описанный вариант осуществления может устранить требование ограничить позиции точек поиска в версиях, отличных от первой версии, и соответственно увеличивает эффективность сжатия для этих версий, приводя к представлению более высокого качества для заданной имеющейся в наличии полосы пропускания, и соответственно к улучшенному восприятию пользователя. Дополнительное соображение состоит в том, что инструменты кодирования видео, которые выполняют функцию выравнивания точек поиска по нескольким кодированиям (версиям) контента, могут не быть широкодоступными, и поэтому преимуществом этого последнего описанного варианта осуществления является то, что могут использоваться имеющиеся в настоящее время инструменты кодирования видео. Другое преимущество состоит в том, что кодирование разных версий контента может происходить параллельно без какой-либо необходимости в координации между процессами кодирования для разных версий. Другим преимуществом является то, что дополнительные версии контента могут кодироваться и добавляться к представлению позже, без необходимости обеспечивать инструментам кодирования списки конкретных позиций точек поиска.This last described embodiment may eliminate the requirement to limit the position of search points in versions other than the first version, and accordingly increase the compression efficiency for these versions, leading to a higher quality presentation for a given available bandwidth, and accordingly to an improved user experience. An additional consideration is that video encoding tools that perform the function of aligning search points across multiple encodings (versions) of content may not be widely available, and therefore the advantage of this last described embodiment is that the currently existing encoding tools can be used video. Another advantage is that coding of different versions of content can occur in parallel without any need for coordination between coding processes for different versions. Another advantage is that additional versions of the content can be encoded and added to the presentation later, without having to provide encoding tools with lists of specific positions of search points.

Как правило, там, где картинки кодируются в виде групп картинок (GoP), первая картинка в последовательности может быть точкой поиска, но это не всегда должно быть так.As a rule, where pictures are encoded as groups of pictures (GoP), the first picture in the sequence may be a search point, but this should not always be so.

ОПТИМАЛЬНОЕ РАЗДЕЛЕНИЕ БЛОКОВOPTIMUM BLOCK SEPARATION

Одним проблемным вопросом в системе потоковой передачи по запросу блоков является взаимодействие между структурой кодированного мультимедиа, например видео мультимедиа, и структурой блока, используемой для запросов блоков. Как известно специалистам в области кодирования видео, часто имеет место, что меняется количество битов, необходимое для кодированного отображения каждого видео кадра, иногда существенно, от кадра к кадру. В результате отношение между объемом принятых данных и длительностью мультимедиа, кодированного этими данными, может быть не прямым. Кроме того, разделение мультимедийных данных на блоки в системе потоковой передачи по запросу блоков добавляет дополнительное измерение сложности. В частности, в некоторых системах мультимедийные данные блока могут не воспроизводиться, пока не принят весь блок, например, конфигурирование мультимедийных данных в блоке или зависимости между выборками мультимедиа в блоке использования кодов стирания могут привести к этому свойству. В результате этих сложных взаимодействий между размером блока и длительностью блока и возможной необходимости принимать весь блок до начала воспроизведения для клиентских систем общепринято выбирать консервативный подход, при котором мультимедийные данные буферизуются до того, как начинается воспроизведение. Такая буферизация приводит к длительному времени переключения каналов и соответственно плохому восприятию пользователя.One problematic issue in a block-request streaming system is the interaction between a coded multimedia structure, such as video multimedia, and a block structure used for block requests. As is well known to specialists in the field of video coding, it often happens that the number of bits required for the encoded display of each video frame changes, sometimes significantly, from frame to frame. As a result, the relationship between the amount of received data and the duration of the media encoded by this data may not be direct. In addition, dividing multimedia data into blocks in a streaming system at the request of blocks adds an additional dimension of complexity. In particular, in some systems, multimedia data of a block may not be reproduced until the entire block is received, for example, the configuration of multimedia data in a block or the relationship between multimedia samples in a block using erase codes can lead to this property. As a result of these complex interactions between the block size and the block length and the possible need to accept the entire block before playback starts, it is customary for client systems to choose a conservative approach in which multimedia data is buffered before playback starts. Such buffering leads to a long channel switching time and, accordingly, a poor user experience.

Pakzad описывает «способы разделения блоков», которые являются новыми и эффективными способами определения того, как разделить поток данных на смежные блоки на основе, лежащей в основе структуры потока данных, и дополнительно описывает несколько преимуществ этих способов применительно к системе потоковой передачи. Теперь будет описан дополнительный вариант осуществления изобретения для применения способов разделения блоков по Pakzad к системе потоковой передачи по запросу блоков. Этот способ может содержать конфигурирование мультимедийных данных, которые нужно представить в приблизительном порядке времени представления, так что время воспроизведения любого заданного элемента мультимедийных данных (например, видео кадра или аудио выборки) отличается от такового у любого соседнего элемента мультимедийных данных меньше чем на предусмотренную пороговую величину. Мультимедийные данные, упорядоченные таким образом, можно считать потоком данных на языке Pakzad, и любые из способов Pakzad, примененные к этому потоку данных, идентифицируют границы блока с потоком данных. Данные между любой парой соседних границ блока считаются «блоком» в терминологии настоящего описания, и способы настоящего описания применяются для обеспечения представления мультимедийных данных в системе потоковой передачи по запросу блоков. Как будет ясно специалистам в данной области техники при прочтении этого раскрытия изобретения, несколько преимуществ способов, раскрытых в Pakzad, можно затем реализовать в контексте системы потоковой передачи по запросу блоков.Pakzad describes “block separation methods,” which are new and effective ways to determine how to divide a data stream into adjacent blocks based on the structure of the data stream, and further describes several of the advantages of these methods with respect to the streaming system. An additional embodiment of the invention will now be described for applying Pakzad block separation methods to a block request streaming system. This method may include configuring the multimedia data to be presented in an approximate presentation time, so that the playback time of any given multimedia data element (for example, a video frame or audio sample) differs from that of any neighboring multimedia data element by less than the provided threshold . The multimedia data arranged in this way can be considered a Pakzad data stream, and any of the Pakzad methods applied to this data stream identifies the block boundaries with the data stream. Data between any pair of neighboring block boundaries is considered a “block” in the terminology of the present description, and the methods of the present description are used to provide presentation of multimedia data in a streaming system upon request of the blocks. As will be clear to those skilled in the art upon reading this disclosure, several advantages of the methods disclosed in Pakzad can then be realized in the context of a block-based streaming system.

Как описано в Pakzad, определение блочной структуры сегмента, включающего блоки, которые включают в себя частичные GoP или части больше GoP, может влиять на возможность клиента обеспечить быстрое время переключения канала. В Pakzad обеспечены способы, которые с учетом целевого времени запуска обеспечивают блочную структуру и целевую скорость загрузки, которые гарантировали бы, что если клиент начал загрузку отображения в любой точке поиска и начал воспроизведение после того, как истекло целевое время запуска, то воспроизведение продолжится плавно при условии, что в каждый момент времени объем данных, который загрузил клиент по меньшей мере равен целевой скорости загрузки, умноженной на прошедшее время от начала загрузки. Для клиента выгодно иметь доступ к целевому времени запуска и целевой скорости загрузки, так как это обеспечивает клиенту средство для определения, когда начать воспроизведение отображения в самый ранний момент времени, и позволяет клиенту продолжить воспроизводить отображение при условии, что загрузка удовлетворяет условию, описанному выше. Таким образом, описанный ниже способ обеспечивает средство для включения целевого времени запуска и целевой скорости загрузки в описание представления мультимедиа, чтобы оно могло использоваться для описанных выше целей.As described in Pakzad, determining the block structure of a segment including blocks that include partial GoPs or portions larger than GoPs can affect the ability of a client to provide fast channel switching times. Pakzad provides methods that, taking into account the target launch time, provide a block structure and target download speed, which would ensure that if the client started loading the display at any search point and started playback after the target launch time has expired, then playback will continue smoothly when provided that at each moment of time the amount of data that the client has downloaded is at least equal to the target download speed multiplied by the elapsed time from the start of the download. It is advantageous for the client to have access to the target launch time and the target download speed, as this provides the client with a means to determine when to start playing the display at the earliest point in time, and allows the client to continue playing the display, provided that the download satisfies the condition described above. Thus, the method described below provides a means for including the target launch time and the target download speed in the description of the multimedia presentation so that it can be used for the purposes described above.

МОДЕЛЬ ДАННЫХ ПРЕДСТАВЛЕНИЯ МУЛЬТИМЕДИАMULTIMEDIA REPRESENTATION DATA MODEL

Фиг. 5 иллюстрирует возможные структуры хранилища контента, показанного на Фиг. 1, включая сегменты и файлы описания представления мультимедиа («MPD»), и расшифровку сегментов, распределение во времени, и другую структуру в файле MPD. Сейчас будут описаны подробности возможных реализаций структур MPD или файлов. Во многих примерах MPD описан в виде файла, но с тем, же успехом могут использоваться нефайловые структуры.FIG. 5 illustrates possible structures of the content store shown in FIG. 1, including segments and multimedia presentation description (“MPD”) files, and segment decoding, time distribution, and other structure in the MPD file. Details of possible implementations of MPD structures or files will now be described. In many examples, MPD is described as a file, but with the same success non-file structures can be used.

Как проиллюстрировано, хранилище 110 контента хранит множество исходных сегментов 510, MPD 500 и сегменты 512 восстановления. MPD может содержать записи 501 периода, которые в свою очередь могут содержать записи 502 отображения, которые содержат информацию 503 о сегменте, например ссылки на сегменты 504 инициализации и мультимедийные сегменты 505.As illustrated, the content store 110 stores a plurality of source segments 510, MPD 500, and recovery segments 512. The MPD may comprise period records 501, which in turn may include display records 502 that contain segment information 503, for example, references to initialization segments 504 and multimedia segments 505.

Фиг. 9(а) иллюстрирует примерную таблицу 900 метаданных, тогда как Фиг. 9(b) иллюстрирует пример того, как клиент 902 потоковой передачи HTTP получает таблицу 900 метаданных и мультимедийные блоки 904 по соединению с сервером 906 потоковой передачи HTTP.FIG. 9 (a) illustrates an example metadata table 900, while FIG. 9 (b) illustrates an example of how an HTTP streaming client 902 obtains a metadata table 900 and multimedia blocks 904 through a connection to an HTTP streaming server 906.

В способах, описанных в этом документе, предусмотрено «описание представления мультимедиа», которое содержит информацию, касающуюся отображений представлении мультимедиа, которые имеются в наличие для клиента. Отображения могут быть альтернативами в том смысле, что клиент выбирает одну из разных альтернатив, либо они могут быть комплементарными в том смысле, что клиент выбирает несколько отображений, каждое по возможности также из набора альтернатив, и представляет их одновременно. Отображения преимущественно могут присваиваться группам, причем клиент запрограммирован или выполнен с возможностью понимать, что для отображений в одной группе они являются альтернативами друг другу, тогда как отображения из разных групп таковы, что более одного отображения нужно представлять одновременно. Другими словами, если имеется более одного отображения в группе, то клиент выбирает одно отображение из той группы, одно отображение из следующей группы и т.д., чтобы сформировать представление.In the methods described in this document, a “multimedia presentation description” is provided that contains information regarding the displays of the multimedia presentation that are available to the client. Mappings can be alternatives in the sense that the client selects one of different alternatives, or they can be complementary in the sense that the client selects several mappings, each possibly also from a set of alternatives, and present them simultaneously. Mappings can advantageously be assigned to groups, the client being programmed or configured to understand that for mappings in the same group they are alternatives to each other, while mappings from different groups are such that more than one mapping needs to be presented at the same time. In other words, if there is more than one mapping in a group, then the client selects one mapping from that group, one mapping from the next group, etc., to form a presentation.

Информация, описывающая отображения, преимущественно может включать в себя подробности примененных кодеков мультимедиа, включая профили и уровни кодеков, которые необходимы для декодирования отображения, частоты видео кадров, разрешение видео и скорости данных. Клиент, принимающий описание представления мультимедиа, может использовать эту информацию для определения заранее, подходит ли отображение для декодирования или представления. Это представляет преимущество, поскольку если дифференцирующая информация содержалась бы только в двоичных данных отображения, то было бы необходимо запрашивать двоичные данные из всех отображений и анализировать и извлекать соответствующую информацию, чтобы обнаружить информацию о пригодности. Эти несколько запросов и анализ в дополнение к извлечению данных могут занимать некоторое время, которое привело бы к длительному времени запуска, и поэтому плохому восприятию пользователя.Information describing the display, mainly may include details of the applied multimedia codecs, including profiles and codec levels that are required to decode the display, video frame rate, video resolution and data rate. A client receiving a description of a multimedia presentation can use this information to determine in advance whether the display is suitable for decoding or presentation. This is advantageous because if differentiating information were only contained in the binary display data, it would be necessary to query the binary data from all the mappings and analyze and retrieve the relevant information in order to find suitability information. These few queries and analysis, in addition to extracting the data, may take some time, which would lead to a long startup time, and therefore poor user experience.

Более того, описание представления мультимедиа может содержать информацию, ограничивающую запросы клиента на основе времени дня. Например, для услуги прямой трансляции клиент может быть ограничен запросом частей представления, которые близки к «текущему времени трансляции». Это представляет преимущество, поскольку для прямой трансляции может быть желательно, удалить данные из обслуживающей инфраструктуры для контента, который транслировался раньше текущего времени трансляции более чем на предусмотренную пороговую величину. Это может быть желательно для повторного использования ресурсов хранения в обслуживающей инфраструктуре. Это также может быть желательно в зависимости от типа предлагаемой услуги, например, в некоторых случаях представление может обеспечиваться только в виде прямой трансляции из-за определенной модели подписки у принимающих клиентских устройств, тогда как другие представления мультимедиа могут обеспечиваться в виде прямой трансляции и по требованию, а другие представления могут обеспечиваться только в виде прямой трансляции для первого класса клиентских устройств, только по требованию для второго класса клиентских устройств и в сочетании либо в виде прямой трансляции, либо по требованию для третьего класса клиентских устройств. Способы, описанные в модели данных представления мультимедиа (ниже), позволяют информировать клиента о таких политиках, чтобы клиент мог избежать формирования запросов и настраивания предложений пользователю для данных, которые могут отсутствовать в обслуживающей инфраструктуре. В качестве альтернативы, например, клиент, может представить уведомление пользователю, что эти данные не имеются в наличие.Moreover, the description of the multimedia presentation may contain information restricting client requests based on time of day. For example, for a live broadcast service, a client may be limited to requesting parts of the presentation that are close to the “current broadcast time”. This is an advantage, since it may be desirable for live broadcasting to remove data from the serving infrastructure for content that was broadcast ahead of the current broadcast time by more than the provided threshold. It may be desirable to reuse storage resources in the serving infrastructure. This may also be desirable depending on the type of service offered, for example, in some cases, the presentation can only be provided in the form of a live broadcast due to the specific subscription model of the receiving client devices, while other multimedia presentations can be provided in the form of a live broadcast and on demand , and other representations can be provided only in the form of a live broadcast for the first class of client devices, only on demand for the second class of client devices and in combination either in the form of a live broadcast, or on demand for a third class of client devices. The methods described in the multimedia presentation data model (below) allow you to inform the client about such policies so that the client can avoid generating queries and setting up offers to the user for data that may not be available in the serving infrastructure. Alternatively, for example, the client may provide a notification to the user that this data is not available.

В дополнительном варианте осуществления изобретения мультимедийные сегменты могут быть совместимы с базовым форматом мультимедийного файла ISO, описанным в ISO/IEC 14496-12 или производных спецификациях (например, форматом файла 3GP, описанным в Техническом описании 3GPP 26.244). Раздел «Использование формата файла 3GPP» (выше) описывает новые улучшения в базовом Формате мультимедийного файла ISO, допускающие эффективное использование структур данных этого формата файла в системе потоковой передачи по запросу блоков. Как описано в этой отсылке, информация может обеспечиваться в файле, допуская быстрое и эффективное соотнесение между временными сегментами представления мультимедиа и байтовыми диапазонами в файле. Сами мультимедийные данные могут быть структурированы в соответствии с конструкцией фрагмента фильма, заданной в ISO/IEC 14496-12. Эта информация, обеспечивающая временные и байтовые смещения, может быть структурирована иерархически или в виде одиночного блока информации. Эта информация может быть предусмотрена в начале файла. Обеспечение этой информации с использованием эффективного кодирования, как описано в разделе «Использование формата файла 3GPP», приводит к способности клиента быстро извлекать эту информацию, например с использованием частичных запросов GET HTTP, если протоколом загрузки файла, используемым системой потоковой передачи по запросу блоков, является HTTP, что приводит к короткому времени запуска, поиска или переключения потока, а поэтому к улучшенному восприятию пользователя.In a further embodiment of the invention, the multimedia segments may be compatible with the basic ISO multimedia file format described in ISO / IEC 14496-12 or derived specifications (for example, the 3GP file format described in 3GPP Technical Description 26.244). The “Using the 3GPP File Format” section (above) describes the new improvements in the basic ISO multimedia file format that allow the efficient use of data structures of this file format in a streaming system upon request of blocks. As described in this reference, information can be provided in the file, allowing a quick and efficient correlation between the time segments of the multimedia presentation and the byte ranges in the file. The multimedia data itself can be structured according to the construction of a movie fragment specified in ISO / IEC 14496-12. This information, providing time and byte offsets, can be structured hierarchically or as a single block of information. This information may be provided at the beginning of the file. Providing this information using efficient encoding, as described in the “Using the 3GPP File Format” section, leads to the client’s ability to quickly retrieve this information, for example using partial HTTP GET requests, if the file download protocol used by the block-based streaming system is HTTP, which leads to a short time to start, search or switch the stream, and therefore to an improved user experience.

Отображения в мультимедийном представлении синхронизируются на глобальной временной шкале, чтобы гарантировать плавное переключение между отображениями, обычно являющимися альтернативами, и гарантировать синхронное представление двух или более отображений. Поэтому распределение по времени выборки содержащейся мультимедиа в отображениях в рамках представления мультимедиа с адаптивной потоковой передачей HTTP может относиться к непрерывной глобальной временной шкале по нескольким сегментам.The displays in the multimedia presentation are synchronized on the global timeline to ensure smooth switching between displays, which are usually alternatives, and to guarantee the synchronous presentation of two or more displays. Therefore, the time distribution of samples of the contained multimedia in the mappings within the framework of multimedia presentation with adaptive HTTP streaming can refer to a continuous global timeline across several segments.

Блок кодированного мультимедиа, содержащий мультимедиа нескольких типов, например аудио и видео, может иметь разные моменты окончания представления для разных типов мультимедиа. В системе потоковой передачи по запросу блоков, такие блоки мультимедиа могут воспроизводиться последовательно таким образом, что каждый тип мультимедиа воспроизводится непрерывно, и соответственно выборки мультимедиа одного типа из одного блока могут воспроизводиться перед выборками мультимедиа другого типа в предыдущем блоке, что называется в этом документе «непрерывной стыковкой блоков». В качестве альтернативы такие мультимедийные блоки могут воспроизводиться таким образом, что самая ранняя выборка любого типа одного блока воспроизводится после последней выборки любого типа предыдущего блока, что в этом документе называется «прерывающейся стыковкой блоков». Непрерывная стыковка блоков может быть подходящей, когда оба блока содержат мультимедиа из одинакового элемента контента и одинакового отображения, кодированные в последовательности, либо в иных случаях. Как правило, в одном отображении непрерывная стыковка блоков может применяться при стыковке двух блоков. Это выгодно, так как может применяться существующее кодирование, и сегментация может выполняться без необходимости выравнивать дорожки мультимедиа на границах блоков. Это иллюстрируется на Фиг. 10, где видео поток 1000 содержит блок 1202 и другие блоки с RAP, например RAP 1204.An encoded multimedia block containing several types of multimedia, such as audio and video, may have different presentation ending times for different types of multimedia. In a streaming system at the request of blocks, such multimedia blocks can be played sequentially so that each type of multimedia is played back continuously, and accordingly, multimedia samples of one type from one block can be played before multimedia samples of another type in the previous block, which is called in this document “ continuous docking of blocks. " Alternatively, such multimedia blocks may be reproduced in such a way that the earliest sample of any type of one block is reproduced after the last sample of any type of the previous block, which is referred to herein as “interrupted block joining”. Continuous docking of blocks may be appropriate when both blocks contain multimedia from the same content element and the same display, encoded in sequence, or in other cases. As a rule, in one display, continuous docking of blocks can be used when docking two blocks. This is beneficial since existing coding can be applied, and segmentation can be performed without the need to align media tracks at block boundaries. This is illustrated in FIG. 10, where the video stream 1000 comprises a block 1202 and other blocks with a RAP, for example, RAP 1204.

ОПИСАНИЕ ПРЕДСТАВЛЕНИЯ МУЛЬТИМЕДИАDESCRIPTION OF THE PRESENTATION OF MULTIMEDIA

Представление мультимедиа можно рассматривать как структурированную совокупность файлов на сервере потоковой передачи HTTP. Клиент потоковой передачи HTTP может загрузить достаточно информации для представления пользователю услуги потоковой передачи. Альтернативные отображения могут содержать один или более файлы 3GP или части файлов 3GP, соответствующие формату файла 3GPP или по меньшей мере четко определенному набору структур данных, который можно легко преобразовать из или в файл 3GP.A media view can be thought of as a structured collection of files on an HTTP streaming server. An HTTP streaming client can download enough information to present a streaming service to a user. Alternative mappings may comprise one or more 3GP files or portions of 3GP files corresponding to a 3GPP file format or at least a well-defined set of data structures that can be easily converted from or to a 3GP file.

Представление мультимедиа может быть охарактеризовано посредством описания представления мультимедиа. Описание представления мультимедиа (MPD) может содержать метаданные, которые клиент может использовать для формирования подходящих запросов файлов, например запросов GET HTTP, для доступа к данным в подходящее время и обеспечения пользователю услуги потоковой передачи. Описание представления мультимедиа может обеспечивать достаточно информации, чтобы клиент потоковой передачи HTTP выбрал подходящие файлы 3GPP и порции файлов. Единицы, которые сигнализируются клиенту как доступные, называются сегментами.The presentation of multimedia can be characterized by describing the presentation of multimedia. A media presentation description (MPD) may contain metadata that a client can use to generate suitable file requests, for example, HTTP GET requests, to access data at an appropriate time and provide the user with streaming services. The media presentation description can provide enough information for the HTTP streaming client to select the appropriate 3GPP files and file portions. The units that are signaled to the client as available are called segments.

Среди прочего описание представления мультимедиа может содержать элементы и атрибуты следующим образом.Among other things, the description of the multimedia presentation may contain elements and attributes as follows.

Элемент MediaPresentationDescriptionMediaPresentationDescription Element

Элемент, инкапсулирующий метаданные, используемые Клиентом Потоковой Передачи HTTP для предоставления услуги потоковой передачи конечному пользователю. Элемент MediaPresentationDescription может содержать один или более из следующих атрибутов и элементов.An element encapsulating the metadata used by the HTTP Streaming Client to provide the streaming service to the end user. A MediaPresentationDescription element may contain one or more of the following attributes and elements.

Version: Номер версии для протокола, чтобы гарантировать расширяемость.Version: The version number for the protocol to ensure extensibility.

PresentationIdentifier: Такая информация, по которой представление может быть однозначно идентифицировано среди других представлений. Также может содержать личные поля или названия.PresentationIdentifier: Such information by which a presentation can be uniquely identified among other representations. It may also contain personal fields or names.

UpdateFrequency: Частота обновления описания представления мультимедиа, т.е. то, как часто клиент может повторно загружать фактическое описание представления мультимедиа. Если отсутствует, то представление мультимедиа может быть статическим. Обновление представления мультимедиа может означать, что представление мультимедиа нельзя кэшировать.UpdateFrequency: The refresh rate of the media presentation description, i.e. how often the client can reload the actual media presentation description. If absent, then the multimedia presentation may be static. Updating the media view may mean that the media view cannot be cached.

MediaPresentationDescriptionURI: URI для датирования описания представления мультимедиа.MediaPresentationDescriptionURI: URI for dating media presentation descriptions.

Stream: Описывает тип потока или представления мультимедиа: видео, аудио или текст. Тип видео потока может содержать аудио и может содержать текст.Stream: Describes the type of stream or media presentation: video, audio or text. The type of video stream may contain audio and may contain text.

Service: Описывает тип услуги с дополнительными атрибутами. Типы услуг могут быть в виде прямой трансляции и по требованию. Это может использоваться для информирования клиента о том, что поиск и доступ после некоторого текущего времени не разрешен.Service: Describes the type of service with additional attributes. Types of services can be in the form of live broadcast and on demand. This can be used to inform the client that search and access after some current time is not allowed.

MaximumClientPreBufferTime: Максимальное количество времени, которое клиент может предварительно буферизовать мультимедийный поток. Это распределение во времени может отличать потоковую передачу от прогрессивной загрузки, если клиент ограничивается загрузкой после этого максимального времени предварительной буферизации. Значение может отсутствовать, указывая, что могут не применяться никакие ограничения в плане предварительной буферизации.MaximumClientPreBufferTime: The maximum amount of time that the client can pre-buffer the media stream. This time distribution may distinguish streaming from progressive download if the client is limited to downloading after this maximum pre-buffering time. A value may not be present, indicating that no pre-buffering restrictions may apply.

SafetyGuardIntervalLiveService: Информация о максимальном оборотном времени услуги прямой трансляции на сервере. Обеспечивает указание клиенту на то, какая из информации уже доступна в текущее время. Эта информация может быть необходима, если клиент и сервер предполагаются работающими по времени UTC, и не предусмотрена никакая синхронизация времени.SafetyGuardIntervalLiveService: Information about the maximum turnaround time of the live broadcast service on the server. Provides an indication to the client which of the information is currently available. This information may be necessary if the client and server are assumed to be UTC and no time synchronization is provided.

TimeShiftBufferDepth: Информация о том, насколько далеко назад может переместиться клиент в услуге прямой трансляции относительно текущего времени. С помощью увеличения этой глубины могут быть разрешены услуги отложенного просмотра и захвата без определенных изменений в предоставлении услуги.TimeShiftBufferDepth: Information on how far back a client can travel in a live broadcast service relative to the current time. By increasing this depth, deferred viewing and capturing services can be enabled without any changes to the provision of the service.

LocalCachingPermitted: Этот флаг указывает на то, может ли клиент HTTP кэшировать загруженные данные локально после их воспроизведения.LocalCachingPermitted: This flag indicates whether the HTTP client can cache downloaded data locally after it is played.

LivePresentationInterval: Содержит интервалы времени, в течение которых представление может иметься в наличие, путем задания StartTime и EndTime. StartTime указывает время начала услуг, а EndTime указывает время окончания услуги. Если EndTime не задано, то время окончания неизвестно в данное время, и UpdateFrequency может гарантировать, что клиенты получают доступ к времени окончания до фактического времени окончания услуги.LivePresentationInterval: Contains the time intervals during which the presentation may be available by specifying StartTime and EndTime. StartTime indicates the start time of the services, and EndTime indicates the end time of the service. If EndTime is not set, then the end time is not known at this time, and UpdateFrequency can ensure that clients get access to the end time before the actual end time of the service.

OnDemandAvailabilityInterval: Интервал представления указывает наличие услуги в сети. Может быть предусмотрено несколько интервалов представления. Клиент HTTP может не иметь возможности доступа к услуге вне любого заданного окна времени. Путем обеспечения OnDemand Interval может задаваться дополнительный отложенный просмотр. Этот атрибут также может присутствовать для услуги прямой трансляции. Если он присутствует для услуги прямой трансляции, то сервер может гарантировать, что клиент может получать доступ к услуге как к услуге OnDemand (по требованию) в течение всех предусмотренных интервалов доступности. Поэтому LivePresentationInterval не может пересекаться ни с каким OnDemandAvailabilityInterval.OnDemandAvailabilityInterval: The presentation interval indicates the availability of the service on the network. Several presentation intervals may be provided. An HTTP client may not be able to access the service outside of any given time window. By providing OnDemand Interval, additional deferred viewing can be specified. This attribute may also be present for the live broadcast service. If it is present for the live broadcast service, the server can guarantee that the client can access the service as the OnDemand service (on demand) during all the provided availability intervals. Therefore, the LivePresentationInterval cannot overlap with any OnDemandAvailabilityInterval.

MPDFileInfoDynamic: Описывает динамическое формирование файлов по умолчанию в представлении мультимедиа. Другие подробности приведены ниже. Указание по умолчанию уровня MPD может сэкономить ненужное повторение, если используются одни и те же правила для нескольких или всех альтернативных отображений.MPDFileInfoDynamic: Describes the dynamic generation of files by default in a multimedia view. Other details are given below. Specifying a default MPD level can save unnecessary repetition if the same rules are used for several or all alternative mappings.

MPDCodecDescription: Описывает основные кодеки по умолчанию в представлении мультимедиа. Другие подробности приведены ниже. Указание по умолчанию уровня MPD может сэкономить ненужное повторение, если используются одни и те же кодеки для нескольких или всех отображений.MPDCodecDescription: Describes the main default codecs in the media view. Other details are given below. Specifying a default MPD level can save unnecessary repetition if you use the same codecs for several or all displays.

MPDMoveBoxHeaderSizeDoesNotChange: Флаг для указания, меняется ли заголовок MoveBox по размеру среди отдельных файлов во всем представлении мультимедиа. Этот флаг может использоваться для оптимизации загрузки и может присутствовать только в случае определенных форматов сегмента, в особенности тех, для которых сегменты содержат заголовок moov.MPDMoveBoxHeaderSizeDoesNotChange: A flag to indicate whether the MoveBox title is resized among individual files in the entire media view. This flag can be used to optimize loading and may only be present in the case of certain segment formats, especially those for which segments contain the moov header.

FileURIPattern: Шаблон, используемый Клиентом для формирования сообщений Запросов в отношении файлов в представлении мультимедиа. Разные атрибуты позволяют формирование уникальных URI для каждого из файлов в представлении мультимедиа. Базовым URI может быть URI HTTP.FileURIPattern: A template used by the Client to generate Request Messages for files in a multimedia view. Different attributes allow the formation of unique URIs for each of the files in the media view. The base URI may be an HTTP URI.

Alternative Representation: Описывает список отображений.Alternative Representation: Describes a list of mappings.

Элемент AlternativeRepresentation:AlternativeRepresentation element:

Элемент XML, который инкапсулирует все метаданные для одного отображения. Элемент AlternativeRepresentation может содержать следующие атрибуты и элементы.An XML element that encapsulates all metadata for a single display. An AlternativeRepresentation element may contain the following attributes and elements.

RepresentationID: Уникальный ID для этого конкретного альтернативного отображения в представлении мультимедиа.RepresentationID: The unique ID for this particular alternate display in the media view.

FilesInfoStatic: Обеспечивает явный список начальных времен и URI всех файлов одного альтернативного представления. Статическое обеспечение списка файлов может обеспечить преимущество точного описания распределения во времени представления мультимедиа, но оно может быть не таким компактным, особенно если альтернативное отображение содержит много файлов. Также имена файлов могут иметь произвольные имена.FilesInfoStatic: Provides an explicit list of start times and URIs of all files in one alternative view. Static provision of the file list may provide the advantage of accurately describing the distribution over time of the presentation of multimedia, but it may not be so compact, especially if the alternative display contains many files. Also, file names can have arbitrary names.

FilesInfoDynamic: Обеспечивает неявный способ построения списка начальных времен и URI одного альтернативного представления. Динамическое обеспечение списка файлов может обеспечить преимущество более компактного представления. Если предусмотрена только последовательность начальных времен, то здесь также сохраняются преимущества распределения во времени, но имена файлов должны формироваться динамически в FilePatternURI. Если предусмотрена только длительность каждого сегмента, то отображение является компактным и может подходить для использования в услугах прямой трансляции, но формирование файлов может определяться глобальным распределением во времени.FilesInfoDynamic: Provides an implicit way to build a list of start times and URIs of one alternate view. Dynamically providing a list of files can provide the advantage of a more compact view. If only a sequence of initial times is provided, then the advantages of time distribution are also preserved here, but file names should be generated dynamically in FilePatternURI. If only the duration of each segment is provided, then the display is compact and may be suitable for use in live broadcasting services, but file generation may be determined by global time distribution.

APMoveBoxHeaderSizeDoesNotChange: Флаг, который указывает на то, меняется ли заголовок MoveBox по размеру среди отдельных файлов в альтернативном представлении. Этот флаг может использоваться для оптимизации загрузки и может присутствовать только в случае определенных форматов сегмента, в особенности тех, для которых сегменты содержат заголовок moov.APMoveBoxHeaderSizeDoesNotChange: A flag that indicates whether the MoveBox title is resized among individual files in an alternate view. This flag can be used to optimize loading and may only be present in the case of certain segment formats, especially those for which segments contain the moov header.

APCodecDescription: Описывает основные кодеки файлов в альтернативном представлении.APCodecDescription: Describes the main file codecs in an alternative view.

Элемент Media DescriptionMedia Description Element

MediaDescription: Элемент, который может инкапсулировать все метаданные для мультимедиа, которое содержится в этом отображении. В частности, он может содержать информацию о дорожках в этом альтернативном представлении, а также рекомендованную группировку дорожек, если применима. Атрибут MediaDescription содержит следующие атрибуты:MediaDescription: An element that can encapsulate all of the media metadata contained in this display. In particular, it may contain track information in this alternative representation, as well as the recommended grouping of the tracks, if applicable. The MediaDescription attribute contains the following attributes:

TrackDescription: Атрибут XML, который инкапсулирует все метаданные для мультимедиа, которое содержится в этом отображении. Атрибут TrackDescription содержит следующие атрибуты:TrackDescription: An XML attribute that encapsulates all of the media metadata contained in this display. The TrackDescription attribute contains the following attributes:

TrackID: Уникальный ID для дорожки в альтернативном отображении. Может использоваться, если дорожка является частью описания группировки.TrackID: Unique ID for the track in an alternative display. Can be used if the track is part of a grouping description.

Bitrate: Скорость передачи данных дорожки.Bitrate: Track data rate.

TrackCodecDescription: Атрибут XML, который содержит все атрибуты кодека, используемого на этой дорожке. Атрибут TrackCodecDescription содержит следующие атрибуты:TrackCodecDescription: An XML attribute that contains all the attributes of the codec used on this track. The TrackCodecDescription attribute contains the following attributes:

MediaName: Атрибут, определяющий тип мультимедиа. Типы мультимедиа включают в себя «аудио», «видео», «текст», «приложение» и «сообщение».MediaName: An attribute that identifies the type of media. Types of multimedia include “audio,” “video,” “text,” “application,” and “message.”

Codec: CodecType, включающий в себя профиль и уровень.Codec: CodecType, which includes the profile and level.

LanguageTag: LanguageTag, если применимо.LanguageTag: LanguageTag, if applicable.

MaxWidth, MaxHeight: Для видео Высота и Ширина содержащегося видео в пикселях.MaxWidth, MaxHeight: For video The height and width of the contained video in pixels.

SamplingRate: Для аудио, частота дискретизацииSamplingRate: For audio, sample rate

GroupDescription: Атрибут, который обеспечивает рекомендацию клиенту для подходящей группировки на основании разных параметров.GroupDescription: An attribute that provides a recommendation to the client for a suitable grouping based on various parameters.

GroupType: Тип, на основе которого клиент может решить, как группировать дорожки.GroupType: The type based on which the client can decide how to group the tracks.

Информация в описании представления мультимедиа преимущественно используется клиентом потоковой передачи HTTP для выполнения запросов файлов/сегментов или их частей в подходящие моменты, выбирая сегменты из соразмерных отображений, которые совпадают с их возможностями, например, в показателях полосы пропускания для доступа, возможностей дисплея, возможностей кодеков и так далее, а также предпочтений пользователя, например языка и так далее. Кроме того, так как описание представления мультимедиа описывает отображения, которые выровнены по времени и соотнесены с глобальной временной шкалой, клиент также может использовать информацию в MPD во время текущего представления мультимедиа для инициирования подходящих действий, чтобы переключаться между отображениями, чтобы представлять отображения совместно или искать в представлении мультимедиа.The information in the description of the multimedia presentation is mainly used by the HTTP streaming client to execute requests for files / segments or parts thereof at appropriate times, choosing segments from proportional displays that match their capabilities, for example, in terms of access bandwidth, display capabilities, codec capabilities and so on, as well as user preferences, such as language and so on. In addition, since the description of the multimedia presentation describes displays that are time-aligned and correlated with the global timeline, the client can also use the information in the MPD during the current multimedia presentation to initiate appropriate actions to switch between displays to share displays or search in multimedia view.

СИГНАЛИЗАЦИЯ ВРЕМЕН НАЧАЛА СЕГМЕНТАSEGMENT START TIME ALARM

Отображение может быть разделено по времени на несколько сегментов. Проблема синхронизации между дорожками существует между последним фрагментом одного сегмента и следующим фрагментом следующего сегмента. К тому же другая проблема распределения во времени существует в случае, когда используются сегменты постоянной длительности.The display can be divided in time into several segments. A synchronization problem between tracks exists between the last fragment of one segment and the next fragment of the next segment. In addition, another time distribution problem exists when segments of constant duration are used.

Использование одинаковой длительности для каждого сегмента может обладать преимуществом в том, что MPD как компактное, так и статическое. Однако каждый сегмент по-прежнему может начинаться в Точке Произвольного Доступа. Таким образом, либо кодирование видео может быть ограничено обеспечением точек произвольного доступа в этих конкретных точках, либо фактические длительности сегмента могут быть не такими точными, как задано в MPD. Может быть желательно, чтобы система потоковой передачи не накладывала ненужных ограничений на процесс кодирования видео, и поэтому второй вариант может быть предпочтительным.Using the same duration for each segment may have the advantage that MPD is both compact and static. However, each segment can still start at a Random Access Point. Thus, either video encoding can be limited to providing random access points at these specific points, or the actual segment durations may not be as accurate as specified in the MPD. It may be desirable that the streaming system does not impose unnecessary restrictions on the video encoding process, and therefore the second option may be preferred.

В частности, если длительность файла задается в MPD в виде d секунд, то n-ый файл может начинаться с точки произвольного доступа в момент (n-1)d или непосредственно следующий.In particular, if the file duration is set in the MPD in the form of d seconds, then the nth file can start from a random access point at the moment (n-1) d or immediately following.

В этом подходе каждый файл может включать в себя информацию в отношении точного времени начала сегмента в показателях глобального времени представления. Три возможных способа сигнализации этого включают в себя:In this approach, each file may include information regarding the exact start time of the segment in terms of global presentation time. Three possible ways to signal this include:

(1) Во-первых, ограничить время начала каждого сегмента точной синхронизацией, которая задана в MPD. Но тогда кодер мультимедиа может не обладать гибкостью в размещении кадров IDR и может требовать специального кодирования для потоковой передачи файлов.(1) First, limit the start time of each segment to the exact synchronization specified in the MPD. But then the multimedia encoder may not have the flexibility to place IDR frames and may require special encoding for streaming files.

(2) Во-вторых, добавить точное время начала в MPD для каждого сегмента. Для случая типа по требованию компактность MPD может быть уменьшена. Для случаев типа прямой трансляции это может потребовать регулярного обновления MPD, что может уменьшить масштабируемость.(2) Secondly, add the exact start time in the MPD for each segment. For the on-demand case, the compactness of the MPD can be reduced. For cases such as live broadcasts, this may require regular updates to the MPD, which may reduce scalability.

(3) В-третьих, добавить глобальное время или точное время начала относительно объявленного времени начала отображения или объявленного времени начала сегмента в MPD к сегменту в том смысле, что сегмент содержит эту информацию. Это можно добавить к новому блоку, выделенному для адаптивной потоковой передачи. Этот блок также может включать в себя информацию, которая обеспечена блоком «TIDX» или «SIDX». Результат этого третьего подхода состоит в том, что при поиске до конкретной позиции около начала одного из сегментов клиент, на основе MPD, может выбрать следующий сегмент после содержащего необходимую точку поиска. Простым ответом в этом случае может быть перемещение точки поиска вперед к началу извлеченного сегмента (т.е. в следующую точку произвольного доступа после точки поиска). Обычно точки произвольного доступа обеспечены по меньшей мере каждые несколько секунд (и часто существует небольшой выигрыш кодирования, если делать их менее частыми), и поэтому в наихудшем случае точку поиска можно переместить на несколько секунд позже заданного. В качестве альтернативы клиент может определять при извлечении информации заголовка для сегмента, что запрошенная точка поиска фактически находится в предыдущем сегменте, и вместо этого запросить тот сегмент. Это может привести к случайному увеличению времени, необходимого для выполнения операции поиска.(3) Third, add the global time or the exact start time relative to the announced start time of the display or the announced start time of the segment in the MPD to the segment in the sense that the segment contains this information. This can be added to the new block dedicated to adaptive streaming. This block may also include information that is provided by the TIDX or SIDX block. The result of this third approach is that when searching to a specific position near the beginning of one of the segments, the client, based on MPD, can select the next segment after containing the desired search point. A simple answer in this case could be to move the search point forward to the beginning of the extracted segment (i.e., to the next random access point after the search point). Typically, random access points are provided at least every few seconds (and often there is a small coding gain if they are made less frequent), and therefore, in the worst case, the search point can be moved a few seconds later than specified. Alternatively, the client can determine when retrieving the header information for the segment that the requested search point is actually in the previous segment and request that segment instead. This can lead to an accidental increase in the time required to complete the search operation.

СПИСОК ДОСТУПНЫХ СЕГМЕНТОВLIST OF AVAILABLE SEGMENTS

Представление мультимедиа содержит набор отображений, каждое из которых обеспечивает некоторую другую версию кодирования для первоначального мультимедийного контента. Сами отображения преимущественно содержат информацию об отличающихся параметрах отображения по сравнению с другими параметрами. Они также содержат в явном либо неявном виде список доступных сегментов.A multimedia view contains a set of mappings, each of which provides some other coding version for the original multimedia content. Mappings themselves primarily contain information about different display options compared to other options. They also contain an explicit or implicit list of available segments.

Сегменты можно дифференцировать на вневременные сегменты, содержащие только метаданные, и мультимедийные сегменты, которые в основном содержат мультимедийные данные. Описание представления мультимедиа («MPD») преимущественно идентифицирует и присваивает разные атрибуты каждому из сегментов, либо в неявном виде, либо в явном виде. Атрибуты, преимущественно присвоенные каждому сегменту, содержат период, в течение которого доступен сегмент, ресурсы и протоколы, по которым доступны сегменты. К тому же мультимедийным сегментам преимущественно присваиваются такие атрибуты, как время начала сегмента в представлении мультимедиа и длительность сегмента в представлении мультимедиа.Segments can be differentiated into timeless segments containing only metadata and multimedia segments, which mainly contain multimedia data. A multimedia presentation description (“MPD”) primarily identifies and assigns different attributes to each of the segments, either implicitly or explicitly. Attributes predominantly assigned to each segment contain a period during which a segment is available, resources and protocols over which segments are available. In addition, multimedia segments are predominantly assigned attributes such as the start time of the segment in the multimedia view and the duration of the segment in the multimedia view.

Там, где представление мультимедиа имеет тип «по требованию», что преимущественно указывается атрибутом в описании представления мультимедиа, например OnDemandAvailabilityInterval, описание представления мультимедиа обычно описывает все сегменты и также обеспечивает указание, когда сегменты доступны, а когда сегменты не доступны. Времена начала сегментов преимущественно выражаются относительно начала представления мультимедиа, так что два клиента, начинающие воспроизведение одинаковых представлений мультимедиа, но в разные моменты, могут использовать одно и, то, же описание представления мультимедиа, а также одинаковые мультимедийные сегменты. Это преимущественно увеличивает возможность кэшировать сегменты.Where the multimedia presentation is of type “on demand”, which is mainly indicated by the attribute in the description of the multimedia presentation, for example, OnDemandAvailabilityInterval, the multimedia presentation description usually describes all segments and also provides an indication of when segments are available and when segments are not available. The start times of the segments are mainly expressed relative to the start of the multimedia presentation, so that two clients starting to play the same multimedia presentations, but at different times, can use the same, same multimedia presentation description, and the same multimedia segments. This advantageously increases the ability to cache segments.

Там, где представление мультимедиа имеет тип «прямой трансляции», что преимущественно указывается атрибутом в описании представления мультимедиа, например атрибутом Service, сегменты, содержащие представление мультимедиа после фактического времени дня, обычно не формируются или по меньшей мере не доступны, несмотря на то, что сегменты полностью описаны в MPD. Однако с помощью указания, что услуга представления мультимедиа имеет тип «прямой трансляции», клиент может формировать список доступных сегментов вместе с атрибутами распределения во времени для внутреннего времени клиента NOW по времени настенных часов на основе информации, содержащейся в MPD, и времени загрузки MPD. Сервер преимущественно работает в том смысле, что он делает ресурс доступным так, что опорный клиент, работающий с экземпляром MPD по времени настенных часов NOW, может получать доступ к ресурсам.Where the multimedia presentation is of the “live broadcast” type, which is mainly indicated by the attribute in the description of the multimedia presentation, for example, the Service attribute, segments containing the multimedia presentation after the actual time of the day are usually not formed or at least not accessible, despite the fact that segments are fully described in MPD. However, by indicating that the multimedia presentation service is of the “live broadcast” type, the client can create a list of available segments along with time distribution attributes for the NOW client’s internal time by the wall clock based on the information contained in the MPD and the download time of the MPD. The server mainly works in the sense that it makes the resource available so that the reference client working with the MPD instance by the NOW wall clock can access the resources.

В частности, опорный клиент формирует список доступных сегментов вместе с атрибутами распределения во времени для внутреннего времени клиента NOW по времени настенных часов на основе информации, содержащейся в MPD, и времени загрузки MPD. При опережении времени клиент будет использовать такое же MPD и сформирует новый список доступных сегментов, который может использоваться для непрерывного воспроизведения представления мультимедиа. Поэтому сервер может объявлять сегменты в MPD до того, как эти сегменты фактически доступны. Это выгодно, поскольку уменьшает частое обновление и загрузку MPD.In particular, the reference client generates a list of available segments along with time distribution attributes for the NOW client’s internal time according to the wall clock time based on the information contained in the MPD and the MPD download time. When ahead of time, the client will use the same MPD and form a new list of available segments, which can be used for continuous playback of multimedia presentations. Therefore, the server can declare segments in MPD before these segments are actually available. This is beneficial because it reduces the frequent updating and loading of MPD.

Предположим, что список сегментов, каждый с временем начала tS, описан либо в явном виде списком воспроизведения в элементах, например FileInfoStatic, либо в неявном виде с использованием такого элемента, как FileInfoDynamic. Выгодный способ формирования списка сегментов с использованием FileInfoDynamic описан ниже. На основе этого правила составления клиент имеет доступ к списку URI для каждого отображения r, в этом документе называемого FileURI(r,i), и времени начала tS(r,i) для каждого сегмента с индексом i.Suppose that a list of segments, each with a start time of tS, is described either explicitly by a playlist in elements, such as FileInfoStatic, or implicitly using an element such as FileInfoDynamic. An advantageous way to create a list of segments using FileInfoDynamic is described below. Based on this compilation rule, the client has access to a list of URIs for each mapping r, in this document called FileURI (r, i), and the start time tS (r, i) for each segment with index i.

Использование информации в MPD для формирования доступного окна времени сегментов может выполняться с использованием следующих правил.The use of information in MPD to form an available window of time segments can be performed using the following rules.

Для услуги типа «по требованию», что преимущественно указывается атрибутом, например Service, если текущее время настенных часов на клиенте NOW находится в любом диапазоне наличия, преимущественно выраженном элементом MPD, например OnDemandAvailabilityInterval, то доступны все описанные сегменты этого представления По Требованию. Если текущее время настенных часов на клиенте NOW находится вне любого диапазона наличия, то никакие из описанных сегментов в этом представлении по требованию не доступны.For a “on demand” type of service, which is mainly indicated by an attribute, for example, Service, if the current wall clock time on the NOW client is in any availability range, mainly expressed by an MPD element, for example, OnDemandAvailabilityInterval, then all the described segments of this view are available on Demand. If the current wall clock time on the NOW client is outside of any availability range, then none of the described segments in this view are available on demand.

Для услуги типа «прямой трансляции», что преимущественно указывается атрибутом, например Service, время начала tS(r,i) преимущественно выражает время наличия по времени настенных часов. Время начала наличия может выводиться как сочетание времени услуги прямой трансляции у события и некоторого оборотного времени на сервере для захвата, кодирования и публикации. Время для этого процесса может задаваться, например, в MPD, используя защитный интервал tG, заданный, например, как SafetyGuardIntervalLiveService в MPD. Это обеспечило бы минимальную разность между временем UTC и наличием данных на сервере потоковой передачи HTTP. В другом варианте осуществления MPD в явном виде задает время наличия сегмента в MPD без обеспечения оборотного времени в виде разности между временем прямой трансляции события и оборотным временем. В нижеследующем описании предполагается, что любые глобальные времена задаются как времена наличия. Специалист в области прямой трансляции мультимедиа может вывести эту информацию из подходящей информации в описании представления мультимедиа после прочтения этого описания.For a service of the “live broadcast” type, which is mainly indicated by an attribute, for example, Service, the start time tS (r, i) mainly expresses the time of availability of wall clocks. The availability start time can be displayed as a combination of the time of the live broadcast service of the event and some turnaround time on the server for capturing, encoding and publishing. The time for this process can be set, for example, in the MPD, using the guard interval tG, set, for example, as SafetyGuardIntervalLiveService in the MPD. This would ensure a minimal difference between UTC and the availability of data on the HTTP streaming server. In another embodiment, the MPD explicitly sets the time that a segment exists in the MPD without providing turnaround time as the difference between the live event broadcast time and turnaround time. In the following description, it is assumed that any global times are defined as availability times. A person skilled in the field of live multimedia broadcasting can derive this information from the appropriate information in the description of the multimedia presentation after reading this description.

Если текущее время настенных часов на клиенте NOW находится вне любого диапазона интервала прямого представления, преимущественно выраженного элементом MPD, например LivePresentationInterval, то никакие из описанных сегментов этого представления прямой трансляции не доступны. Если текущее время настенных часов на клиенте NOW находится в интервале представления прямой трансляции, то могут быть доступны по меньшей мере некоторые сегменты в описанных сегментах этого представления прямой трансляции.If the current wall clock time on the NOW client is outside any range of the live presentation interval predominantly expressed by the MPD element, such as the LivePresentationInterval, then none of the described segments of this live view are available. If the current wall clock time on the NOW client is in the interval of the live view, then at least some segments in the described segments of this live view can be available.

Ограничение доступных сегментов регулируется следующими значениями:The limit of available segments is controlled by the following values:

Время NOW настенных часов (как имеющееся в наличие для клиента).Wall clock NOW time (as available for customer).

Разрешенная глубина буфера отложенного просмотра tTSB, например, заданная как TimeShiftBufferDepth в описании представления мультимедиа.The allowed tTSB lazy buffer depth, for example, specified as TimeShiftBufferDepth in the media view description.

Клиенту в относительном времени события tl можно разрешить только запрашивать сегменты с временами начала tS(r, i) в интервале (NOW-tTSB) и NOW или в таком интервале, что время окончания сегмента с длительностью d также включается, приводя к интервалу (NOW-tTSB -d) и NOW.The client in the relative event time tl can only be allowed to request segments with start times tS (r, i) in the interval (NOW-tTSB) and NOW or in such an interval that the end time of the segment with duration d is also turned on, leading to the interval (NOW- tTSB -d) and NOW.

ОБНОВЛЕНИЕ MPDMPD UPDATE

В некоторых вариантах осуществления, сервер заранее не знает указатель на файл или сегмент и времена начала сегментов, так как, например, местоположение сервера будет меняться, или представление мультимедиа включает в себя некоторую рекламу от другого сервера, или длительность представления мультимедиа неизвестна, или сервер хочет скрыть указатель для следующих сегментов.In some embodiments, the server does not know the pointer to the file or segment and the start times of the segments in advance, since, for example, the server’s location will change, or the media presentation includes some advertising from another server, or the duration of the media presentation is unknown, or the server wants hide pointer for next segments.

В таких вариантах осуществления сервер может только описать сегменты, которые уже доступны или становятся доступными вскоре после того, как опубликован этот экземпляр MPD. Кроме того, в некоторых вариантах осуществления, клиент преимущественно потребляет мультимедиа вблизи мультимедиа, описанного в MPD, так что пользователь воспринимает содержащуюся мультимедийную программу как максимально близкую к формированию мультимедийного контента. Как только клиент ожидает, что он достигает окончания описанных мультимедийных сегментов в MPD, он преимущественно запрашивает новый экземпляр MPD, чтобы продолжить непрерывно воспроизводить в ожидании, что сервер опубликовал новое MPD, описывающее новые мультимедийные сегменты. Сервер преимущественно формирует новые экземпляры MPD и обновляет MPD так, что клиенты могут опираться на процедуры для непрерывных обновлений. Сервер может адаптировать свои процедуры обновления MPD вместе с формированием и публикацией сегментов к процедурам опорного клиента, который действует так, как может действовать общий клиент.In such embodiments, the server can only describe segments that are already available or become available shortly after this MPD instance is published. In addition, in some embodiments, the client predominantly consumes multimedia in the vicinity of the multimedia described in the MPD, so that the user perceives the contained multimedia program as close to generating multimedia content as possible. As soon as the client expects it to reach the end of the described media segments in the MPD, it predominantly requests a new instance of MPD to continue to continuously play, waiting for the server to publish a new MPD describing the new media segments. The server primarily generates new MPD instances and updates the MPD so that clients can rely on procedures for continuous updates. The server can adapt its MPD update procedures along with the formation and publication of segments to the procedures of the reference client, which acts in the way that the general client can act.

Если новый экземпляр MPD описывает только короткое упреждение, то клиентам нужно часто запрашивать новые экземпляры MPD. Это может привести к проблемам масштабируемости и ненужному трафику восходящей и нисходящей линий связи из-за ненужных частых запросов.If a new instance of MPD describes only a short lead, then clients often need to request new instances of MPD. This can lead to scalability issues and unnecessary uplink and downlink traffic due to unnecessary frequent requests.

Поэтому с одной стороны уместно описывать сегменты как можно дальше в будущем, не обязательно делая их доступными, а с другой стороны - разрешить непредвиденные обновления в MPD для выражения новых местоположений сервера, позволить вставку нового контента, например рекламы, или обеспечить изменения в параметрах кодеков.Therefore, on the one hand, it is appropriate to describe segments as far as possible in the future, without necessarily making them available, and on the other hand, to allow unexpected updates in MPD to express new server locations, allow the insertion of new content, such as advertising, or provide changes to the codec settings.

Кроме того, в некоторых вариантах осуществления длительность мультимедийных сегментов может быть небольшой, например в диапазоне нескольких секунд. Длительность мультимедийных сегментов преимущественно является гибкой, чтобы подстраиваться к подходящим размерам сегментов, которые можно оптимизировать к свойствам передачи или кэширования, чтобы компенсировать сквозную задержку в услугах прямой трансляции или другие аспекты, которые касаются хранения или передачи сегментов, или по другим причинам. Особенно в случаях, когда сегменты небольшие по сравнению с длительностью представления мультимедиа, значительный объем ресурсов мультимедийного сегмента и времен начала нужно описать в описании представления мультимедиа. В результате размер описания представления мультимедиа может быть большим, что может неблагоприятно повлиять на время загрузки описания представления мультимедиа, и поэтому повлиять на задержку запуска представления мультимедиа, а также на использование полосы пропускания на линии связи доступа. Поэтому полезно не только разрешить описание списка мультимедийных сегментов с использованием списков воспроизведения, но также разрешить описание с использованием шаблонов или правил составления URL. Шаблоны и правила составления URL используются синонимично в этом описании.In addition, in some embodiments, the duration of the multimedia segments may be short, for example in the range of several seconds. The duration of the multimedia segments is advantageously flexible in order to adapt to suitable segment sizes that can be optimized for transmission or caching properties to compensate for end-to-end delay in live broadcast services or other aspects that relate to the storage or transmission of segments, or for other reasons. Especially in cases where the segments are small compared to the duration of the multimedia presentation, a significant amount of multimedia segment resources and start times must be described in the description of the multimedia presentation. As a result, the size of the description of the multimedia presentation can be large, which can adversely affect the loading time of the description of the multimedia presentation, and therefore affect the delay in launching the multimedia presentation, as well as the use of bandwidth on the access communication line. Therefore, it is useful not only to allow the description of the list of multimedia segments using playlists, but also to allow the description using patterns or rules for creating URLs. URL patterns and rules are used synonymously in this description.

К тому же шаблоны могут использоваться преимущественно для описания указателей сегментов в случаях прямой трансляции после текущего времени. В таких случаях обновления MPD, по сути, не нужны, так как указатели, а также список сегментов описаны шаблонами. Однако по-прежнему могут произойти непредвиденные события, которые требуют изменений в описании отображений или сегментов. Изменения в описании представления мультимедиа при адаптивной потоковой передаче HTTP могут быть нужны, когда контент из нескольких разных источников стыкуется вместе, например, когда вставлена реклама. Контент из разных источников может отличаться различными способами. Другая причина во время представлений прямой трансляции состоит в том, что может быть необходимо, изменить URL, используемые для файлов контента, чтобы предусмотреть перехват управления при отказе с одного первоначального сервера прямой трансляции на другой.In addition, templates can be used primarily to describe segment pointers in cases of live broadcast after the current time. In such cases, MPD updates, in fact, are not needed, since the pointers, as well as the list of segments are described by templates. However, unanticipated events may still occur that require changes to the description of the mappings or segments. Changes to the description of the multimedia presentation in adaptive HTTP streaming may be needed when content from several different sources merges together, for example, when an ad is inserted. Content from different sources may differ in various ways. Another reason during live streaming presentations is that it may be necessary to change the URLs used for content files to allow for control interception in the event of a failure from one original live broadcast server to another.

В некоторых вариантах осуществления полезно, что если MPD обновляется, то обновления в MPD осуществляются так, что обновленное MPD совместимо с предыдущим MPD в том смысле, что опорный клиент, а поэтому и любой реализованный клиент формирует одинаково функциональный список доступных сегментов из обновленного MPD для любого времени вплоть до времени действительности предыдущего MPD, как он сделал бы из предыдущего экземпляра MPD. Это требование гарантирует, что (a) клиенты могут немедленно начать использование нового MPD без синхронизации со старым MPD, поскольку оно совместимо со старым MPD до времени обновления; и (b) время обновления не нужно синхронизировать с временем, в которое происходит фактическое изменение в MPD. Другими словами, обновления MPD могут объявляться заранее, и сервер может заменить старый экземпляр MPD, как только имеется в наличие новая информация, без необходимости хранить разные версии MPD.In some embodiments, it is useful that if the MPD is updated, then the updates in the MPD are made so that the updated MPD is compatible with the previous MPD in the sense that the reference client, and therefore any implemented client, forms an equally functional list of available segments from the updated MPD for any time up to the validity time of the previous MPD, as he would have made from a previous MPD instance. This requirement ensures that (a) customers can immediately start using the new MPD without synchronization with the old MPD, as it is compatible with the old MPD until the update time; and (b) the update time does not need to be synchronized with the time at which the actual change in the MPD occurs. In other words, MPD updates can be announced in advance, and the server can replace the old instance of MPD as soon as new information is available, without having to store different versions of MPD.

Две возможности могут существовать для распределения во времени мультимедиа по обновлению MPD для набора отображений или всех отображений. Либо (а) существующая глобальная временная шкала продолжается по всему обновлению MPD (называемому в этом документе «непрерывным обновлением MPD»), либо (b),текущая временная шкала заканчивается, и начинается новая временная шкала с сегмента, следующего за изменением (в этом документе называется «прерывающееся обновление MPD»).Two possibilities may exist for the time distribution of media for updating the MPD for a set of mappings or all mappings. Either (a) the existing global timeline continues throughout the MPD update (referred to in this document as “continuous MPD update”), or (b) the current timeline ends and a new timeline begins with the segment following the change (in this document called "intermittent MPD update").

Разница между этими вариантами может быть очевидной, принимая во внимание, что дорожки мультимедийного фрагмента, а поэтому и сегмента, обычно не начинаются и не заканчиваются одновременно из-за отличающейся степени разбиения выборки по дорожкам. Во время обычного представления выборки одной дорожки во фрагменте могут воспроизводиться перед некоторыми выборками другой дорожки предыдущего фрагмента, т.е. имеется некоторый вид перекрытия между фрагментами, хотя перекрытие в одиночной дорожке может отсутствовать.The difference between these options may be obvious, taking into account that the tracks of the multimedia fragment, and therefore the segment, usually do not start and end at the same time due to the different degree of sampling into tracks. During the normal presentation, samples of one track in a fragment can be played before some samples of another track of the previous fragment, i.e. there is some kind of overlap between fragments, although overlap in a single track may not be present.

Разница между (a) и (b) состоит в том, может ли такое перекрытие быть задействовано по всему обновлению MPD. Когда обновление MPD происходит из-за стыковки полностью раздельного контента, такого перекрытия обычно сложно достичь, так как новый контент нуждается в новом кодировании для стыковки с предыдущим контентом. Поэтому полезно обеспечить возможность прерывающегося обновления представления мультимедиа путем возобновления временной шкалы для некоторых сегментов, и по возможности также задать новый набор отображений после обновления. Также, если контент независимо кодирован и сегментирован, то также избегают регулировки временных отметок для подгонки к глобальной временной шкале предыдущей порции контента.The difference between (a) and (b) is whether this overlap can be applied across the entire MPD update. When the MPD update occurs due to the docking of completely separate content, such overlap is usually difficult to achieve, since the new content needs new coding to dock with the previous content. Therefore, it is useful to enable intermittent updates to the multimedia presentation by resuming the timeline for some segments, and if possible also to specify a new set of displays after the update. Also, if the content is independently encoded and segmented, adjusting the timestamps to fit the global timeline of the previous portion of the content is also avoided.

Когда обновление происходит по менее значимым причинам, например, только добавление новых мультимедийных сегментов в список описанных мультимедийных сегментов, или если изменяется местоположение URL, то перекрытие и непрерывные обновления можно разрешить.When an update occurs for less significant reasons, for example, only adding new multimedia segments to the list of described multimedia segments, or if the location of the URL changes, then overlap and continuous updates can be enabled.

В случае прерывающегося обновления MPD временная шкала последнего сегмента в предыдущем отображении завершается в последнем времени окончания представления любой выборки в сегменте. Временная шкала следующего отображения (или, точнее, первое время представления первого мультимедийного сегмента новой части представления мультимедиа, также называемой новым периодом) обычно и преимущественно начинается в тот же самый момент, что и окончание представления последнего периода, так чтобы гарантировать плавное и непрерывное воспроизведение.In the case of intermittent MPD updates, the timeline of the last segment in the previous display ends at the last time the presentation of any sample in the segment ended. The timeline of the next display (or, more precisely, the first time the first multimedia segment is presented, the new part of the multimedia presentation, also called the new period) usually and mainly starts at the same moment as the end of the last period presentation, so as to guarantee smooth and continuous playback.

Два случая иллюстрируются на Фиг. 11.Two cases are illustrated in FIG. eleven.

Предпочтительно и выгодно ограничить обновления MPD границами сегментов. Логическое обоснование ограничения таких изменений или обновлений границами сегментов выглядит следующим образом. Во-первых, изменения в двоичных метаданных для каждого отображения, обычно в заголовке фильма, могут происходить по меньшей мере на границах сегментов. Во-вторых, описание представления мультимедиа может содержать указатели (URL) на сегменты. В определенном смысле MPD является «зонтичной» структурой данных, группирующей вместе все файлы сегментов, ассоциированные с представлением мультимедиа. Чтобы сохранить это отношение включения, на каждый сегмент может ссылаться одиночное MPD, и когда MPD обновляется, оно преимущественно обновляется только на границе сегмента.It is preferable and advantageous to limit MPD updates to segment boundaries. The rationale for restricting such changes or updates to segment boundaries is as follows. First, changes in binary metadata for each display, typically in the movie title, can occur at least at the boundaries of segments. Secondly, the description of the multimedia presentation may contain pointers (URLs) to segments. In a sense, MPD is an umbrella data structure that groups together all the segment files associated with a multimedia presentation. To preserve this inclusion relation, a single MPD can refer to each segment, and when the MPD is updated, it is mainly updated only at the segment boundary.

Границы сегментов обычно не требуется выравнивать, однако для случая контента, стыкованного из разных источников, и для прерывающихся обновлений MPD в целом имеет смысл выравнивать границы сегментов (в частности, чтобы последний сегмент каждого отображения мог заканчиваться в том же видео кадре и не мог содержать аудио выборки с временем начала представления позже времени представления того кадра). Прерывающееся обновление тогда может начать новый набор отображений в общий момент времени, называемый периодом. Обеспечивается время начала действительности этого нового набора отображений, например, с помощью времени начала периода. Относительное время начала каждого отображения сбрасывается в ноль, и время начала периода помещает набор отображений в этом новом периоде на глобальную временную шкалу представления мультимедиа.The boundaries of the segments usually do not need to be aligned, however, for the case of content docked from different sources, and for interrupted MPD updates in general, it makes sense to align the boundaries of the segments (in particular, so that the last segment of each display can end in the same video frame and not contain audio samples with the start time of the presentation later than the presentation time of that frame). An intermittent update can then start a new set of mappings at a common point in time, called a period. The start time of the validity of this new set of mappings is provided, for example, using the start time of the period. The relative start time of each display is reset to zero, and the start time of the period puts the set of displays in this new period on the global media presentation timeline.

Для непрерывных обновлений MPD не требуется выравнивать границы сегментов. Каждый сегмент каждого альтернативного отображения может управляться одиночным описанием представления мультимедиа, и соответственно запросы обновления для новых экземпляров описания представления мультимедиа, обычно инициируемые ожиданием, что никакие дополнительные мультимедийные сегменты не описаны в действующем MPD, могут происходить в разные моменты в зависимости от потребленного набора отображений, включая набор отображений, которые ожидаются для потребления.Continuous MPD updates do not need to align segment boundaries. Each segment of each alternative display can be controlled by a single description of the multimedia presentation, and accordingly update requests for new instances of the description of the multimedia presentation, usually triggered by the expectation that no additional multimedia segments are described in the current MPD, may occur at different times depending on the consumed set of displays, including a set of displays that are expected to be consumed.

Чтобы поддерживать обновления в элементах MPD и атрибуты в более общем случае, любые элементы, а не только отображения или набор отображений, могут ассоциироваться с временем действительности. Поэтому, если некоторые элементы MPD нужно обновить, например, когда изменяется количество отображений или изменяются правила составления URL, то эти элементы можно обновить по отдельности в заданные моменты путем обеспечения нескольких копий элемента с непересекающимися временами действительности.In order to support updates to MPD elements and attributes in a more general case, any elements, not just mappings or a set of mappings, can be associated with a validity time. Therefore, if some MPD elements need to be updated, for example, when the number of mappings changes or the rules for creating URLs are changed, then these elements can be updated individually at specified times by providing multiple copies of the element with non-overlapping validity times.

Действительность преимущественно ассоциируется с глобальным временем мультимедиа, так что описанный элемент, ассоциированный с временем действительности, является действительным в периоде глобальной временной шкалы представления мультимедиа.Reality is mainly associated with global multimedia time, so the described element associated with the reality time is valid in the period of the global multimedia presentation timeline.

Как обсуждалось выше, в одном варианте осуществления времена действительности добавляются только к полному набору отображений. Каждый полный набор затем образует период. Время действительности тогда образует время начала периода. Другими словами, в конкретном случае использования элемента действительности полный набор отображений может быть действительным в течение периода времени, указанного глобальным временем действительности для набора отображений. Время действительности набора отображений называется периодом. В начале нового периода действительность предыдущего набора отображений истекает, и действительным является новый набор отображений. Снова отметим, что времена действительности периодов предпочтительно не пересекаются.As discussed above, in one embodiment, the validity times are only added to the full set of mappings. Each complete set then forms a period. The time of reality then forms the time of the beginning of the period. In other words, in the particular case of using the reality element, the complete set of mappings can be valid for a period of time indicated by the global reality time for the set of mappings. The validity time of a set of mappings is called a period. At the beginning of a new period, the validity of the previous set of mappings expires, and the new set of mappings is valid. Again, note that times of validity of periods are preferably not intersected.

Как отмечалось выше, изменения в описании представления мультимедиа происходят на границах сегментов, и поэтому для каждого отображения изменение элемента фактически происходит на следующей границе сегмента. Клиент может тогда сформировать действительное MPD, включающее в себя список сегментов для каждого момента времени в рамках времени представления мультимедиа.As noted above, changes to the description of the multimedia presentation occur at the boundaries of the segments, and therefore, for each display, the change of the element actually occurs at the next boundary of the segment. The client can then generate a valid MPD including a list of segments for each point in time within the media presentation time.

Прерывающаяся стыковка блоков может быть подходящей в случаях, когда блоки содержат мультимедийные данные из разных отображений, или из разного контента, например, из сегмента контента и рекламы, либо в иных случаях. В системе потоковой передачи по запросу блоков может быть необходимо, чтобы изменения в метаданных представления происходили только на границах блоков. Это может быть выгодным по причинам реализации, потому что обновление параметров декодера мультимедиа в блоке может быть сложнее их обновления только между блоками. В этом случае преимущественно может задаваться, что интервалы действительности, которые описаны выше, можно интерпретировать как приблизительные, так что элемент считается действительным от первой границы блока не ранее начала заданного интервала действительности до первой границы блока не ранее окончания заданного интервала действительности.Interrupted docking of blocks may be suitable in cases where the blocks contain multimedia data from different displays, or from different content, for example, from a segment of content and advertising, or in other cases. In a streaming system at the request of blocks, it may be necessary that changes in the presentation metadata occur only at the boundaries of the blocks. This can be beneficial for implementation reasons, because updating the parameters of a multimedia decoder in a block may be more difficult than updating them only between blocks. In this case, it can be predominantly specified that the intervals of reality described above can be interpreted as approximate, so that the element is considered valid from the first border of the block not earlier than the beginning of the specified interval of reality to the first border of the block not earlier than the end of the specified interval of reality.

Примерный вариант осуществления вышеизложенного, который описывает новые улучшения в системе потоковой передачи по запросу блоков, описан в представленном ниже разделе, озаглавленном «Изменения в представлениях мультимедиа».An exemplary embodiment of the foregoing, which describes new improvements to the block-based streaming system, is described in the section below entitled, “Changes in Multimedia Views”.

СИГНАЛИЗАЦИЯ ДЛИТЕЛЬНОСТИ СЕГМЕНТАSEGMENT DURATION ALARM

Прерывающиеся обновления эффективно делят представление на ряд непересекающихся интервалов, называемых периодом. Каждый период обладает своей временной шкалой для распределения во времени выборки мультимедиа. Распределение во времени мультимедиа в отображении в рамках периода может указываться преимущественно путем задания отдельного компактного списка длительностей сегментов для каждого периода или для каждого отображения в периоде.Intermittent updates effectively divide the view into a series of disjoint intervals, called a period. Each period has its own timeline for distributing multimedia samples over time. The time distribution of multimedia in a display within a period can be indicated mainly by specifying a separate compact list of segment durations for each period or for each display in a period.

Атрибут, например называемый временем начала периода, ассоциированный с элементами в MPD, может задавать время действительности некоторых элементов в рамках времени представления мультимедиа. Этот атрибут может добавляться к любым элементам MPD (атрибуты, которым может присваиваться действительность, могут меняться на элементы).An attribute, for example called a period start time, associated with items in the MPD, can set the validity time of some items within the media presentation time. This attribute can be added to any MPD elements (attributes to which reality can be assigned can change to elements).

Для прерывающихся обновлений MPD сегменты всех отображений могут заканчиваться в точке разрыва. Это обычно по меньшей мере подразумевает, что последний сегмент перед точкой разрыва имеет отличную длительность от предыдущих сегментов. Сигнализация длительности сегмента может включать в себя указание того, что либо все сегменты имеют одинаковую длительность, либо указание отдельной длительности для каждого сегмента. Может быть, желательно иметь компактное отображение для списка длительностей сегментов, которое эффективно в случае, когда многие из них имеют одинаковую длительность.For interrupted MPD updates, segments of all mappings may end at the break point. This usually at least implies that the last segment before the break point has a different duration from previous segments. A segment duration alarm may include an indication that either all segments have the same duration, or an indication of a separate duration for each segment. It may be desirable to have a compact display for the list of segment durations, which is effective when many of them have the same duration.

Длительности каждого сегмента в одном отображении или наборе отображений преимущественно могут передаваться одиночной строкой, которая задает все длительности сегментов для одиночного интервала от начала прерывающегося обновления, т.е. начала периода, до последнего мультимедийного сегмента, описанного в MPD. В одном варианте осуществления формат этого элемента является текстовой строкой, соответствующей произведению, которая содержит список с записями длительностей сегментов, причем каждая запись содержит атрибут длительности dur и факультативный множитель mult атрибута, указываящий, что это отображение содержит <mult> сегментов первой записи с длительностью <dur> первой записи, затем <mult> сегментов второй записи с длительностью <dur> второй записи, и т.д.The durations of each segment in one display or set of displays can advantageously be transmitted in a single line, which sets all segment durations for a single interval from the beginning of an interrupted update, i.e. the beginning of the period, until the last multimedia segment described in the MPD. In one embodiment, the format of this element is a text string corresponding to a product that contains a list with records of segment durations, each record containing a duration attribute dur and an optional multiplier mult attribute indicating that this mapping contains <mult> segments of the first record with duration < dur> of the first record, then <mult> of segments of the second record with a duration of <dur> of the second record, etc.

Каждая запись длительности задает длительность одного или более сегментов. Если значение <dur> сопровождается символом «*» и числом, то это число задает количество последовательных сегментов с этой длительностью, в секундах. Если знак множителя «*» отсутствует, то количество сегментов равно одному. Если «*» присутствует без последующего числа, то все последующие сегменты имеют заданную длительность, и в списке не может быть никаких дополнительных записей. Например, строка «30*» означает, что все сегменты имеют длительность 30 секунд. Строка «30*12 10,5» указывает 12 сегментов с длительностью 30 секунд с последующим сегментом длительности 10,5 секунд.Each duration entry specifies the duration of one or more segments. If the value <dur> is accompanied by the symbol "*" and a number, then this number sets the number of consecutive segments with this duration, in seconds. If the multiplier sign “*” is absent, then the number of segments is equal to one. If “*” is present without a subsequent number, then all subsequent segments have a specified duration, and there can be no additional entries in the list. For example, the string “30 *” means that all segments are 30 seconds long. The line "30 * 12 10.5" indicates 12 segments with a duration of 30 seconds, followed by a segment of 10.5 seconds.

Если длительности сегментов задаются отдельно для каждого альтернативного отображения, то сумма длительностей сегментов в каждом интервале может быть одинаковой для каждого отображения. В случае видео дорожек, интервал может заканчиваться на одном и том же кадре в каждом альтернативном отображении.If the segment durations are set separately for each alternative display, then the sum of the segment durations in each interval may be the same for each display. In the case of video tracks, the interval may end on the same frame in each alternate display.

Специалисты в данной области техники при прочтении этого раскрытия изобретения могут обнаружить аналогичные и эквивалентные способы выражения длительностей сегментов компактным образом.Those skilled in the art, upon reading this disclosure of the invention, may find similar and equivalent methods for expressing segment durations in a compact manner.

В другом варианте осуществления длительность сегмента сигнализируется постоянной для всех сегментов в отображении за исключением последнего с помощью атрибута сигнализации длительности <duration>. Длительность последнего сегмента перед прерывающимся обновлением может быть короче при условии, что обеспечивается начальная точка следующего прерывающегося обновления или начало нового периода, которая тогда подразумевает длительность последнего сегмента достигающей начала следующего периода.In another embodiment, the segment duration is signaled constant for all segments in the display except the last using the <duration> duration signaling attribute. The duration of the last segment before the interrupted update may be shorter, provided that the starting point of the next interrupted update or the beginning of a new period is provided, which then implies the duration of the last segment reaching the beginning of the next period.

ИЗМЕНЕНИЯ И ОБНОВЛЕНИЯ МЕТАДАННЫХ ОТОБРАЖЕНИЯCHANGES AND UPDATES TO DISPLAY METADATA

Указание изменений двоично-кодированных метаданных отображения, например изменений заголовка фильма «moov», может выполняться разными способами: (а) может быть один блок moov для всего отображения в отдельном файле, упоминаемом в MPD, (b) может быть один блок moov для каждого альтернативного отображения в отдельном файле, упоминаемом в каждом альтернативном отображении, (с) каждый сегмент может содержать блок moov и поэтому является независимым, (d) Блок moov может присутствовать для всего отображения в одном файле 3GP вместе с MPD.Indication of changes to binary encoded display metadata, such as changes to the title of the movie “moov”, can be done in different ways: (a) there can be one moov block for the entire display in a separate file mentioned in the MPD, (b) there can be one moov block for each alternative display in a separate file referred to in each alternative display, (c) each segment may contain a moov block and therefore is independent, (d) a moov block may be present for the entire display in one 3GP file along with the MPD.

Отметим, что в случае (a) и (b) одиночный ‘moov’ преимущественно может объединяться с понятием действительности из вышеизложенного в том смысле, что больше блоков ‘moov’ может упоминаться в MPD при условии, что их действительность является непересекающейся. Например, с помощью определения границы периода действительности ‘moov’ в старом периоде может истекать с началом нового периода.Note that in case (a) and (b), a single ‘moov’ can mainly be combined with the concept of reality from the above in the sense that more блоков moov ’blocks can be mentioned in the MPD, provided that their reality is disjoint. For example, by defining the boundary of a validity period, ‘moov’ in the old period may expire at the beginning of a new period.

В случае варианта (а) ссылка на одиночный блок moov может присваиваться элементу действительности. Может быть разрешено несколько заголовков Представления, но только один может быть действительным единовременно. В другом варианте осуществления время действительности всего набора отображений в периоде или весь период, как задано выше, может использоваться в качестве времени действительности для этих метаданных отображения, обычно предусмотренных как заголовок moov.In the case of option (a), a reference to a single moov block may be assigned to a reality element. Multiple View headers may be allowed, but only one may be valid at a time. In another embodiment, the validity time of the entire set of mappings in a period or the entire period, as defined above, can be used as the validity time for these display metadata, typically provided as a moov header.

В случае варианта (b) ссылка на блок moov каждого отображения может присваиваться элементу действительности. Может быть разрешено несколько заголовков отображения, но только один может быть действительным единовременно. В другом варианте осуществления время действительности всего отображения или весь период, как задано выше, может использоваться в качестве времени действительности для этих метаданных отображения, обычно предусмотренных как заголовок moov.In the case of option (b), a reference to the moov block of each display may be assigned to a reality element. Multiple display headers may be allowed, but only one may be valid at a time. In another embodiment, the validity time of the entire display or the entire period, as defined above, can be used as the validity time for these display metadata, typically provided as a moov header.

В случае варианта (с) никакую сигнализацию можно не добавлять в MPD, но дополнительная сигнализация в мультимедийном потоке может добавляться для указания, изменится ли блок moov для любого из предстоящих сегментов. Это дополнительно объясняется ниже применительно к разделу «Сигнализация обновлений в метаданных сегмента».In the case of option (c), no signaling can be added to the MPD, but additional signaling in the multimedia stream can be added to indicate whether the moov block will change for any of the upcoming segments. This is further explained below in relation to the section “Signaling updates in segment metadata”.

СИГНАЛИЗАЦИЯ ОБНОВЛЕНИЙ В МЕТАДАННЫХ СЕГМЕНТАSIGNAL UPDATES IN SEGMENT METADATA

Чтобы избежать частых обновлений описания представления мультимедиа для получения сведений о потенциальных обновлениях, полезно сигнализировать любые такие обновления вместе с мультимедийными сегментами. Может быть предусмотрен дополнительный элемент или элементы в самих мультимедийных сегментах, которые могут указывать, что обновленные метаданные, например описание представления мультимедиа, имеются в наличие и к ним нужно получить доступ в пределах некоторого количества времени, чтобы успешно продолжить составления списков доступных сегментов. К тому же такие элементы могут обеспечивать идентификатор файла, например URL, или информацию, которая может использоваться для формирования идентификатора файла для обновленного файла метаданных. Обновленный файл метаданных может включать в себя метаданные, идентичные предусмотренным в первоначальном файле метаданных для измененного представления, чтобы указать интервалы действительности вместе с дополнительными метаданными, также сопровождаемыми интервалами действительности. Такое указание может обеспечиваться в мультимедийных сегментах всех имеющихся в наличии отображений для представления мультимедиа. Клиент, получающий доступ к системе потоковой передачи по запросу блоков, при обнаружении такого указания в мультимедийном блоке может использовать протокол загрузки файла или другое средство для извлечения обновленного файла метаданных. Клиент посредством этого обеспечивается информацией об изменениях в описании представления мультимедиа и временем, в которое они возникнут или уже возникли. Преимущественно, чтобы каждый клиент запрашивал обновленное описание представления мультимедиа только один раз, когда такие изменения возникают, вместо «опроса» и приема файла много раз ради возможных обновлений или изменений.To avoid frequent updates to the media presentation description to obtain information about potential updates, it is useful to signal any such updates along with the multimedia segments. An additional element or elements may be provided in the multimedia segments themselves, which may indicate that updated metadata, such as a description of the multimedia presentation, is available and must be accessed within a certain amount of time in order to successfully continue compiling lists of available segments. Moreover, such elements may provide a file identifier, such as a URL, or information that can be used to generate a file identifier for the updated metadata file. The updated metadata file may include metadata identical to those provided in the original metadata file for the modified view to indicate validity intervals along with additional metadata also followed by validity intervals. Such an indication may be provided in the multimedia segments of all available displays for presenting multimedia. A client accessing the streaming system upon request of the blocks, upon detection of such an indication in the multimedia block, can use the file upload protocol or other means to retrieve the updated metadata file. The client through this is provided with information about changes in the description of the multimedia presentation and the time at which they occur or have already occurred. It is preferable that each client requests an updated description of the multimedia presentation only once when such changes occur, instead of “polling” and receiving the file many times for possible updates or changes.

Примеры изменений включают в себя добавление или удаление отображений, изменения в одном или более отображениях, например изменение в скорости передачи данных, разрешении, соотношении сторон, включенных дорожках или параметрах кодека, и изменения в правилах составления URL, например, другой первоначальный сервер для рекламы. Некоторые изменения могут влиять только на сегмент инициализации, например атом заголовка фильма («moov»), ассоциированный с отображением, тогда как другие изменения могут влиять на описание представления мультимедиа (MPD).Examples of changes include adding or removing displays, changes in one or more displays, for example, a change in data rate, resolution, aspect ratio, included tracks or codec parameters, and changes in URL design rules, for example, another original advertising server. Some changes can only affect the initialization segment, for example the movie title atom (“moov”) associated with the display, while other changes can affect the description of the multimedia presentation (MPD).

В случае контента по требованию эти изменения и их распределения во времени могут быть известны заранее и могут сигнализироваться в описании представления мультимедиа.In the case of on-demand content, these changes and their timing may be known in advance and may be signaled in the description of the multimedia presentation.

Для контента прямой трансляции изменения могут быть неизвестны до момента, в который они возникают. Одним решением является позволить динамически обновлять описание представления мультимедиа, имеющееся в наличие по определенному URL, и требовать от клиентов регулярно запрашивать это MPD, чтобы обнаружить изменения. Это решение имеет недостаток в плане масштабируемости (нагрузка на первоначальный сервер и эффективность кэша). В сценарии с большим количеством зрителей кэши могут принимать много запросов MPD после того, как в кэше истекла предыдущая версия, и перед тем, как принята новая версия, и все эти запросы могут переадресовываться первоначальному серверу. Первоначальному серверу может потребоваться постоянно обрабатывать запросы из кэшей для каждой обновленной версии MPD. Также обновления может быть не просто выровнять по времени с изменениями в представлении мультимедиа.For live content, changes may not be known until the moment they occur. One solution is to let you dynamically update the description of the multimedia presentation that is available at a specific URL, and require customers to regularly request this MPD to detect changes. This solution has a disadvantage in terms of scalability (load on the original server and cache efficiency). In a scenario with a large number of viewers, caches can accept many MPD requests after the previous version has expired in the cache and before the new version is accepted, and all these requests can be redirected to the original server. The original server may need to constantly process cache requests for each updated version of MPD. Also, updates may not just be time-aligned with changes to the presentation of multimedia.

Поскольку одним из преимуществ Потоковой Передачи HTTP является возможность использовать стандартную web-инфраструктуру и услуги для масштабируемости, предпочтительное решение может включать в себя только «статические» (т.е. кэшируемые) файлы и не полагаться на клиентов, «опрашивающих» файлы, чтобы увидеть, изменились ли они.Since one of the benefits of HTTP Streaming is the ability to use standard web infrastructure and services for scalability, the preferred solution may include only “static” (ie, cached) files and not rely on clients “polling” files to see whether they have changed.

Обсуждаются и предлагаются решения по изменению обновления метаданных, включающих описание представления мультимедиа, и двоичных метаданных отображения, например атомов «moov», в представлении мультимедиа при Адаптивной Потоковой Передаче HTTP.Discussed and proposed solutions for changing metadata updates, including a description of the multimedia presentation, and binary display metadata, such as moov atoms, in the multimedia view in Adaptive Streaming HTTP.

Для случая контента прямой трансляции, моменты, в которые MPD или «moov» могут меняться, могут быть неизвестны, когда формируется MPD. Так как обычно следует избегать частого «опроса» MPD для проверки обновлений по причинам полосы пропускания и масштабируемости, обновления MPD могут указываться «в полосе» в самих файлах сегментов, т.е. каждый мультимедийный сегмент может иметь возможность указывать обновления. В зависимости от форматов сегментов с (а) по (с) выше может сигнализироваться разное обновление.For the case of live content, the points at which the MPD or “moov” may change may not be known when the MPD is being formed. Since you should usually avoid frequent “polling” of MPD to check for updates for bandwidth and scalability reasons, MPD updates can be indicated “in the band” in the segment files themselves, i.e. each media segment may be able to indicate updates. Depending on the format of the segments (a) through (c) above, a different update may be signaled.

Как правило, следующее указание преимущественно может обеспечиваться в сигнале в сегменте: индикатор того, что MPD может быть обновлено перед запросом следующего сегмента в этом отображении или любого следующего сегмента, который имеет время начала больше времени начала текущего сегмента. Обновление может объявляться заранее, указывая, что обновление должно происходить только в любом сегменте позже следующего. Это обновление MPD также может использоваться для обновления двоичных метаданных отображения, например заголовков фильма, если изменяется указатель мультимедийного сегмента. Другой сигнал может указывать, что при завершении этого сегмента не следует запрашивать никакие сегменты, которые опережают время.Typically, the following indication can advantageously be provided in a signal in a segment: an indicator that the MPD can be updated before requesting the next segment in this display or any next segment that has a start time greater than the start time of the current segment. An update may be announced in advance, indicating that the update should only occur in any segment later than the next. This MPD update can also be used to update binary display metadata, such as movie titles, if the pointer of a multimedia segment changes. Another signal may indicate that at the end of this segment no segments should be requested that are ahead of time.

Если сегменты форматируются в соответствии с форматом сегмента (с), т.е. каждый мультимедийный сегмент может содержать метаданные самоинициализации, например заголовок фильма, то может добавляться еще один сигнал, указывающий на то, что последующий сегмент содержит обновленный заголовок фильма (moov). Это преимущественно позволяет включать заголовок фильма в сегмент, но клиенту нужно запрашивать заголовок фильма, только если предыдущий сегмент указывает обновление заголовка фильма или в случае поиска, либо произвольного доступа при переключении отображений. В других случаях клиент может выдать запрос байтового диапазона к сегменту, который исключает заголовок фильма из загрузки, поэтому преимущественно экономя полосу пропускания.If the segments are formatted according to the format of the segment (s), i.e. each multimedia segment may contain self-initialization metadata, for example a movie title, another signal may be added indicating that the subsequent segment contains an updated movie title (moov). This mainly allows you to include the movie title in the segment, but the client needs to request the movie title only if the previous segment indicates the update of the movie title or in the case of search or random access when switching displays. In other cases, the client may issue a request for a byte range to a segment that excludes the movie title from the download, thereby saving bandwidth predominantly.

В еще одном варианте осуществления, если сигнализируется указание Обновления MPD, то сигнал также может содержать указатель, например URL, для обновленного описания представления мультимедиа. Обновленное MPD может описывать представление до и после обновления, используя атрибуты действительности, например новый и старый период в случае прерывающихся обновлений. Это может использоваться преимущественно для разрешения отложенного просмотра, который дополнительно описан ниже, но также преимущественно позволяет сигнализировать обновление MPD в любое время перед тем, как вступят в силу изменения, которые оно содержит. Клиент может немедленно загрузить новое MPD и применить его к текущему представлению.In yet another embodiment, if an indication of MPD Update is signaled, the signal may also comprise a pointer, such as a URL, for an updated description of the multimedia presentation. The updated MPD can describe the presentation before and after the update using attributes of reality, for example, the new and old period in the case of interrupted updates. This can be used primarily to enable delayed viewing, which is further described below, but also mainly allows you to signal MPD update at any time before the changes that it contains take effect. The client can immediately download the new MPD and apply it to the current view.

В конкретной реализации, сигнализация любых изменений в описании представления мультимедиа, заголовках moov или окончании представления может содержаться в блоке информации потоковой передачи, который форматируется по правилам формата сегмента, используя структуру блока в базовом формате мультимедийного файла ISO. Этот блок может обеспечить отдельный сигнал для любого из различных обновлений.In a specific implementation, the signaling of any changes to the description of the multimedia presentation, the moov headers, or the end of the presentation may be contained in a block of streaming information that is formatted according to the rules of the segment format using the block structure in the basic format of the ISO multimedia file. This block can provide a separate signal for any of the various updates.

Блок информации потоковой передачиStreaming Information Block

ОпределениеDefinition

Тип блока: ‘sinf’Block Type: ‘sinf’

Контейнер: НетContainer: No

Обязательный: НетMandatory: No

Количество: Ноль или один.Quantity: Zero or One.

Блок информации потоковой передачи содержит информацию о потоковом представлении, частью которого является файл.The streaming information block contains information about the streaming presentation of which the file is a part.

СинтаксисSyntax

aligned(8) class StreamingInformationBoxaligned (8) class StreamingInformationBox

extends FullBox(‘sinf’) {extends FullBox (‘sinf’) {

unsigned int(32) streaming_information_flags;unsigned int (32) streaming_information_flags;

/// Следующее является факультативными полями/// The following are optional fields

string mpd_locationstring mpd_location

}}

СемантикаSemantics

streaming_information_flags содержит логическое ИЛИ нуля или более из следующего:streaming_information_flags contains a logical OR of zero or more of the following:

0x00000001 последует обновление заголовка фильма0x00000001 movie title update will follow

0x00000002 обновление описания представления0x00000002 update of the description of the view

0x00000004 окончание представления0x00000004 ending presentation

mpd_location присутствует тогда и только тогда, когда флаги обновления описания представления устанавливаются и обеспечивают унифицированный указатель ресурса для нового описания представления мультимедиа.mpd_location is present if and only if the presentation description update flags are set and provide a unified resource locator for the new multimedia presentation description.

Примерный вариант использования для Обновлений MPD для Услуг Прямой ТрансляцииExample use case for MPD Updates for Live Broadcast Services

Предположим, что поставщик услуг хочет обеспечить прямую трансляцию футбольного события с использованием улучшенной потоковой передачи по запросу блоков, описанной в этом документе. Возможно, миллионы пользователей могут захотеть получить доступ к представлению этого события. Событие прямой трансляции время от времени прерывается паузами, когда происходит перерыв или другое временное затишье в действии, во время которого может добавляться реклама. Как правило, отсутствует, или имеется небольшое предварительное предупреждение о точном распределении во времени пауз.Suppose a service provider wants to provide live coverage of a football event using the enhanced block-stream streaming described in this document. Millions of users may want to access the presentation of this event. A live event is interrupted from time to time by pauses when there is a break or other lull in action during which an ad may be added. As a rule, it is absent, or there is a small preliminary warning about the exact distribution of pauses in time.

Поставщику услуг может потребоваться обеспечить избыточную инфраструктуру (например, кодеры и серверы), чтобы обеспечить плавное переключение, если какие-нибудь компоненты выйдут из строя во время события прямой трансляции.The service provider may need to provide redundant infrastructure (for example, encoders and servers) to ensure smooth switching if any components fail during a live event.

Предположим, что пользователь Анна получает доступ к услуге в автобусе с помощью своего мобильного устройства, и услуга предоставляется немедленно. Рядом с ней сидит другой пользователь, Пол, который смотрит событие на компьютере класса лэптоп. Забивают гол, и оба празднуют это событие одновременно. Пол говорит Анне, что первый гол в игре был еще более захватывающим, и Анна использует услугу, так, что она может посмотреть событие на 30 минут раньше во времени. Увидев гол, она возвращается к событию прямой трансляции.Suppose that user Anna accesses the service on the bus using her mobile device, and the service is immediately available. Next to her is another user, Paul, who is watching the event on a laptop computer. They score a goal, and both celebrate this event at the same time. Paul tells Anna that the first goal in the game was even more exciting, and Anna uses the service so that she can watch the event 30 minutes earlier in time. Upon seeing the goal, she returns to the live event.

Чтобы отреагировать на этот вариант использования, поставщик услуг должен иметь возможность обновить MPD, просигнализировать клиентам, что обновленное MPD имеется в наличие, и разрешить клиентам получить доступ к услуге потоковой передачи, таким образом, что он может представить данные близко к реальному масштабу времени.To respond to this use case, the service provider must be able to update the MPD, signal to the customers that an updated MPD is available, and allow customers to access the streaming service so that it can present data close to real time.

Обновление MPD осуществимо асинхронно к передаче сегментов, как объясняется где-то в другом месте в этом документе. Сервер может обеспечить гарантии приемнику, что MPD не обновляется в течение некоторого времени. Сервер может опираться на текущее MPD. Однако, никакой явной сигнализации не нужно, когда MPD обновляется раньше некоторого минимального периода обновления.Updating the MPD is feasible asynchronously to segment transfer, as explained elsewhere in this document. The server can provide guarantees to the receiver that the MPD has not been updated for some time. The server can rely on the current MPD. However, no explicit signaling is needed when the MPD is updated before a certain minimum update period.

Полностью синхронное воспроизведение едва ли достижимо, так как клиент может работать с разными экземплярами обновления MPD, и поэтому клиенты могут иметь сдвиг. Используя обновления MPD, сервер может сообщить изменения, и клиенты могут быть предупреждены об изменениях, даже во время представления. Внутриполосная сигнализация на посегментной основе может использоваться для указания обновления MPD, поэтому обновления могут ограничиваться границами сегментов, но это должно быть приемлемо в большинстве применений.Fully synchronized playback is hardly achievable, since the client can work with different instances of the MPD update, and therefore clients can have a shift. Using MPD updates, the server can report changes, and clients can be notified of changes, even during submission. Segment-based in-band signaling can be used to indicate MPD updates, so updates can be limited to segment boundaries, but this should be acceptable in most applications.

Может добавляться элемент MPD, который обеспечивает время публикации MPD по времени настенных часов, а также опциональный блок обновления MPD, который добавляется в начало сегментов, чтобы сигнализировать, что необходимо обновление MPD. Обновления могут выполняться иерархически, как и в случае с MPD.An MPD element can be added that provides MPD publication time by wall clock time, as well as an optional MPD update unit, which is added at the beginning of segments to signal that an MPD update is required. Updates can be performed hierarchically, as is the case with MPD.

«Время публикации» MPD обеспечивает уникальный идентификатор для MPD и то, когда MPD было выпущено. Оно также обеспечивает привязку для процедур обновления.The “Publish Time” of the MPD provides a unique identifier for the MPD and when the MPD was released. It also provides binding for update procedures.

Блок обновления MPD можно обнаружить в MPD после блока «styp», с заданным типом блока = «mupe», не требующим контейнера, не обязательным и имеющим количество, равное нулю или единице. Блок обновления MPD содержит информацию о представлении мультимедиа, частью которого является сегмент.The MPD update block can be found in MPD after the “styp” block, with the specified block type = “mupe”, which does not require a container, is optional and has a quantity of zero or one. The MPD updater contains information about the media presentation of which the segment is a part.

Примерный синтаксис выглядит следующим образом:An example syntax is as follows:

aligned(8) class MPDUpdateBoxaligned (8) class MPDUpdateBox

extends FullBox(‘mupe’) {extends FullBox (‘mupe’) {

unsigned int(3) mpd information flags;unsigned int (3) mpd information flags;

unsigned int(l) new-location flag;unsigned int (l) new-location flag;

unsigned int(28) latest_mpd_update time;unsigned int (28) latest_mpd_update time;

/// Следующее является факультативными полями/// The following are optional fields

string mpd_locationstring mpd_location

}}

Семантика различных объектов класса MPDUpdateBox может выглядеть следующим образом:The semantics of various objects of the MPDUpdateBox class may look like this:

mpd_information_flags: логическое ИЛИ нуля или более из следующего:mpd_information_flags: boolean OR zero or more of the following:

0x00 обновление описания представления мультимедиа сейчас0x00 update multimedia presentation description now

0x01 обновление описания представления мультимедиа впереди0x01 update of media presentation description in front

0x02 окончание представления0x02 ending presentation

0x03-0x07 зарезервировано0x03-0x07 reserved

new_location_flag: если установлен в 1, то новое описание представления мультимедиа имеется в наличие в новом местоположении, заданном mpd_location.new_location_flag: if set to 1, then a new description of the media view is available in the new location specified by mpd_location.

latest_mpd_update time: задает время (в мс), к которому необходимо обновление MPD, относительно времени выпуска MPD у последнего MPD. Клиент может выбирать обновление MPD в любое время между настоящим моментом.latest_mpd_update time: sets the time (in ms) by which the MPD needs to be updated, relative to the MPD release time of the last MPD. The client can choose to upgrade MPD at any time between the present.

mpd_location: присутствует тогда и только тогда, когда устанавливается new_location_flag, и если это так, то mpd_location обеспечивает унифицированный указатель ресурса для нового описания представления мультимедиа.mpd_location: is present if and only if new_location_flag is set, and if so, mpd_location provides a unified resource locator for the new media presentation description.

Если полоса пропускания, используемая обновлениями, является проблемой, то сервер может предложить MPD для некоторых возможностей устройства, так что обновляются только эти части.If the bandwidth used by the updates is a problem, then the server may offer MPD for some features of the device, so only those parts are updated.

Отложенный просмотр и сетевой PVRDelayed viewing and network PVR

Когда поддерживается отложенный просмотр, может случиться так, что в течение времени существования сеанса действительны два или более MPD или заголовка фильма. В этом случае путем обновления MPD при необходимости, но с добавлением концепции механизма или периода действительности, действительное MPD может существовать в течение всего окна времени. Это означает, что сервер может гарантировать, что любое MPD и заголовок Фильма объявляются в течение любого периода времени, который входит в пределах действительного окна времени для отложенного просмотра. Клиент должен гарантировать, что имеющиеся в наличии MPD и метаданные для его текущего времени представления являются действительными. Также может поддерживаться переход сеанса прямой трансляции на сеанс сетевого PVR, используя только второстепенные обновления MPD.When deferred viewing is supported, it may happen that two or more MPDs or movie titles are valid for the duration of the session. In this case, by updating the MPD if necessary, but with the addition of the concept of a mechanism or a validity period, a valid MPD can exist for the entire time window. This means that the server can ensure that any MPD and Movie title are declared over any period of time that falls within the valid time window for deferred viewing. The client must ensure that the available MPD and metadata for its current submission time is valid. It can also support the transition of a live broadcast session to a network PVR session using only minor MPD updates.

СПЕЦИАЛЬНЫЕ МУЛЬТИМЕДИЙНЫЕ СЕГМЕНТЫSPECIAL MULTIMEDIA SEGMENTS

Когда формат файла ISO/IEC 14496-12 используется в системе потоковой передачи по запросу блоков, проблема состоит в том, как описано выше, что может быть выгодно, хранить мультимедийные данные для одиночной версии представления в нескольких файлах, конфигурированных в последовательных временных сегментах. Кроме того, может быть полезно выполнить конфигурирование таким образом, что каждый файл начинается с точки произвольного доступа. Дополнительно может быть выгодно, выбирать позиции точек поиска во время процесса кодирования видео и сегментировать представление на несколько файлов, каждый начинающийся с точки поиска, на основе выбора точек поиска, который был сделан во время процесса кодирования, при этом каждая точка произвольного доступа может помещаться или не помещаться в начало файла, но при этом каждый файл начинается с точки произвольного доступа. В одном варианте осуществления с описанными выше свойствами метаданные представления, или описание представления мультимедиа, могут содержать точную длительность каждого файла, причем длительность воспринимается означающей, например, разницу между временем начала видео мультимедиа файла и временем начала видео мультимедиа следующего файла. На основе этой информации в метаданных представления клиент способен построить соотнесение между глобальной временной шкалой для представления мультимедиа и локальной временной шкалой для мультимедиа в каждом файле.When the ISO / IEC 14496-12 file format is used in a block-demand streaming system, the problem is, as described above, which may be advantageous, to store multimedia data for a single version of the presentation in several files configured in sequential time segments. In addition, it may be useful to configure so that each file starts at a random access point. Additionally, it can be advantageous to select the positions of the search points during the video encoding process and segment the presentation into several files, each starting with a search point, based on the choice of search points that was made during the encoding process, with each random access point being placed or Do not fit at the beginning of the file, but each file starts at a random access point. In one embodiment with the properties described above, presentation metadata, or a description of a multimedia presentation, may contain the exact duration of each file, the duration being perceived to mean, for example, the difference between the start time of the video multimedia file and the start time of the multimedia video of the next file. Based on this information in the presentation metadata, the client is able to build a correlation between the global timeline for representing multimedia and the local timeline for multimedia in each file.

В другом варианте осуществления размер метаданных представления преимущественно можно уменьшить путем задания вместо него, что каждый файл или сегмент имеет одинаковую длительность. Однако в этом случае и там, где мультимедийные файлы формируются в соответствии со способом, описанным выше, длительность каждого файла может быть не в точности равна длительности, заданной в описании представления мультимедиа, потому что точка произвольного доступа может не существовать в точке, которая находится в точно заданной длительности от начала файла.In another embodiment, the size of the presentation metadata can advantageously be reduced by specifying instead that each file or segment has the same duration. However, in this case, and where multimedia files are generated in accordance with the method described above, the duration of each file may not be exactly the duration specified in the description of the multimedia presentation, because the random access point may not exist at the point located at exactly the specified duration from the beginning of the file.

Теперь будет описан дополнительный вариант осуществления изобретения для обеспечения правильной работы системы потоковой передачи по запросу блоков, несмотря на упомянутое выше расхождение. В этом способе может быть предусмотрен элемент в каждом файле, который задает соотнесение локальной временной шкалы мультимедиа в файле (под которой понимается временная шкала, начинающаяся от временной отметки нуля, по отношению к которой временные отметки декодирования и композиции выборок мультимедиа в файле задаются в соответствии с ISO/IEC 14496-12) с глобальной временной шкалой представления. Эта информация соотнесения может содержать одиночную временную отметку в глобальном времени представления, которая соответствует нулевой временной отметке на локальной временной шкале файла. Информация соотнесения в качестве альтернативы может содержать значение смещения, которое задает разницу между глобальным временем представления, соответствующим нулевой временной отметке на локальной временной шкале файла, и глобальным временем представления, соответствующим началу файла в соответствии с информацией, обеспечиваемой в метаданных представления.Now will be described an additional embodiment of the invention to ensure the correct operation of the streaming system upon request of the blocks, despite the aforementioned discrepancy. In this method, an element can be provided in each file that defines the correlation of the local multimedia timeline in the file (by which we mean the timeline starting from the zero time stamp, with respect to which the time stamps of decoding and composition of multimedia samples in the file are set in accordance with ISO / IEC 14496-12) with a global presentation timeline. This mapping information may contain a single global timestamp of the presentation that corresponds to a zero timestamp on the local timeline of the file. Alternatively, the correlation information may include an offset value that specifies the difference between the global presentation time corresponding to a zero time stamp on the local timeline of the file and the global presentation time corresponding to the beginning of the file in accordance with the information provided in the presentation metadata.

Примером таких блоков может быть, например, блок времени декодирования фрагмента дорожки (‘tfdt’) или блок регулировки фрагмента дорожки (‘tfad’) вместе с блоком регулировки мультимедийного фрагмента дорожки (‘tfma’).An example of such blocks may be, for example, a track fragment decoding time block (‘tfdt’) or a track fragment adjustment block (‘tfad’) together with a multimedia track fragment control block (‘tfma’).

Примерный клиент, включающий в себя формирование списка сегментовAn example client, including the formation of a list of segments

Сейчас будет описан примерный клиент. Он может использоваться в качестве опорного клиента для сервера, чтобы обеспечивать надлежащее формирование и обновления MPD.An example client will now be described. It can be used as a reference client for the server to ensure proper formation and updating of MPD.

Клиент потоковой передачи HTTP управляется информацией, предусмотренной в MPD. Предполагается, что у клиента есть доступ к MPD, которое он принял в момент T, т.е. момент, когда он мог успешно принять MPD. Определение успешного приема может включать в себя клиента, получающего обновленное MPD, или клиента, проверяющего, что MPD не обновлено с предыдущего успешного приема.The HTTP streaming client is controlled by the information provided in the MPD. It is assumed that the client has access to the MPD, which he accepted at time T, i.e. the moment when he could successfully accept MPD. The successful reception determination may include a client receiving an updated MPD, or a client verifying that the MPD has not been updated since a previous successful reception.

Представляется поведение примерного клиента. Для обеспечения пользователю непрерывной услуги потоковой передачи клиент сначала анализирует MPD и формирует список доступных сегментов для каждого отображения для локального времени клиента в текущее системное время, учитывая процедуры формирования списка сегментов, которые подробно изложены ниже, по возможности используя списки воспроизведения или правила составления URL. Затем клиент выбирает одно или несколько отображений на основе информации в атрибутах отображения и другой информации, например, имеющейся в наличии полосы пропускания и возможностей клиента. В зависимости от группировки отображения могут быть показаны автономно или совместно с другими отображениями.The behavior of the sample client appears. To provide the user with a continuous streaming service, the client first analyzes the MPD and generates a list of available segments for each display for the local time of the client at the current system time, taking into account the list of segments that are described in detail below, using playlists or URL creation rules, if possible. The client then selects one or more mappings based on the information in the display attributes and other information, for example, the available bandwidth and capabilities of the client. Depending on the grouping, the mappings may be shown autonomously or in conjunction with other mappings.

Для каждого отображения, клиент получает двоичные метаданные, например заголовок «moov» для отображения, если присутствует, и мультимедийные сегменты выбранных отображений. Клиент получает доступ к мультимедийному контенту, запрашивая сегменты или байтовые диапазоны сегментов, по возможности с использованием списка сегментов. Клиент может сначала буферизовать мультимедиа перед началом представления, и как только представление началось, клиент продолжает потребление мультимедийного контента, постоянно запрашивая сегменты или части сегментов, принимая во внимание процедуры обновления MPD.For each display, the client receives binary metadata, for example, a “moov” header to display, if present, and multimedia segments of the selected displays. The client accesses the multimedia content by requesting segments or byte ranges of segments, possibly using a list of segments. The client may first buffer the media before starting the presentation, and as soon as the presentation has begun, the client continues to consume the multimedia content, constantly requesting segments or parts of segments, taking into account the MPD update procedures.

Клиент может переключать отображения, учитывая информацию обновленного MPD и/или обновленную информацию из своего окружения, например, изменение имеющейся в наличии полосы пропускания. С помощью любого запроса мультимедийного сегмента, содержащего точку произвольного доступа, клиент может переключаться на другое отображение. При перемещении вперед, т.е. опережая текущее системное время (называемое «временем NOW» для представления времени относительно представления), клиент потребляет доступные сегменты. При каждом опережении во времени NOW клиент по возможности расширяет список доступных сегментов для каждого отображения в соответствии с процедурами, заданными в этом документе.The client can switch displays, taking into account the information of the updated MPD and / or the updated information from its environment, for example, changing the available bandwidth. With any multimedia segment request containing a random access point, the client can switch to another display. When moving forward, i.e. ahead of the current system time (called “NOW time” to represent the time relative to the view), the client consumes the available segments. Each time ahead of NOW time, the client whenever possible expands the list of available segments for each display in accordance with the procedures specified in this document.

Если окончание представления мультимедиа еще не достигнуто, и если текущее время воспроизведения попадает в пороговую величину, для которой клиент ожидает окончания мультимедиа в мультимедиа, описанном в MPD для любого потребляемого отображения или отображения, которое будет потребляться, то клиент может запросить обновление MPD с новым временем считывания времени приема T. Как только оно принято, клиент по возможности принимает во внимание, обновленное MPD и новое время T при формировании списков доступных сегментов. Фиг. 29 иллюстрирует процедуру для услуг прямой трансляции в разные моменты на клиенте.If the end of the multimedia presentation has not yet been reached, and if the current playback time falls within the threshold for which the client expects the end of the multimedia in the multimedia described in the MPD for any consumed display or display that will be consumed, then the client may request an MPD update with a new time reading the reception time T. Once it is accepted, the client whenever possible takes into account the updated MPD and the new time T when forming lists of available segments. FIG. 29 illustrates a procedure for live streaming services at various times on a client.

ФОРМИРОВАНИЕ СПИСКА ДОСТУПНЫХ СЕГМЕНТОВFORMING A LIST OF AVAILABLE SEGMENTS

Допустим, что клиент потоковой передачи HTTP имеет доступ к MPD и может захотеть сформировать список доступных сегментов для времени настенных часов NOW. Клиент синхронизируется со ссылкой на глобальное время с некоторой точностью, но преимущественно не требуется непосредственной синхронизации с сервером потоковой передачи HTTP.Assume that the HTTP streaming client has access to MPD and might want to list the available segments for the NOW wall clock. The client synchronizes with reference to global time with some accuracy, but mainly does not require direct synchronization with the HTTP streaming server.

Список доступных сегментов для каждого отображения предпочтительно задается в виде списка пар из времени начала сегмента и указателя сегмента, причем время начала сегмента может задаваться относительно начала отображения без потери общности. Начало отображения может быть выровнено с началом периода, если эта концепция применяется. В противном случае начало отображения может находиться в начале представления мультимедиа.The list of available segments for each display is preferably set in the form of a list of pairs from the start time of the segment and the segment pointer, wherein the start time of the segment can be set relative to the start of the display without loss of generality. The beginning of the display can be aligned with the beginning of the period, if this concept is applied. Otherwise, the start of the display may be at the beginning of the multimedia view.

Клиент использует правила составления URL и распределение во времени, которые, например, дополнительно определяются в этом документе. Как только получается список описанных сегментов, этот список дополнительно ограничивается доступными сегментами, которые могут быть подмножеством сегментов полного представления мультимедиа. Создание управляется текущим значением времени настенных часов NOW на клиенте. Как правило, сегменты имеются в наличии только в течение любого времени NOW в наборе моментов наличия. Для моментов NOW вне этого окна не имеются в наличие никакие сегменты. К тому же для услуг прямой трансляции предположим, что некоторое время checktime обеспечивает информацию о том, насколько далеко в будущем описано мультимедиа. Checktime задается на документированной в MPD оси времени мультимедиа; когда время воспроизведения клиента достигает checktime, он преимущественно запрашивает новое MPD.The client uses the rules for creating URLs and time distribution, which, for example, are further defined in this document. Once a list of the described segments is obtained, this list is further limited to the available segments, which may be a subset of the segments of the full multimedia presentation. The creation is controlled by the current NOW wall clock time on the client. As a rule, segments are only available for any NOW time in the set of moments of availability. For NOW moments, no segments are available outside this window. In addition, for live streaming services, suppose that checktime provides information about how far multimedia is described in the future. Checktime is set on the media time axis documented in MPD; when the client’s playing time reaches checktime, it predominantly requests a new MPD.

Затем, список сегментов дополнительно ограничивается checktime вместе с атрибутом MPD TimeShiftBufferDepth, так что имеющимися в наличии мультимедийными сегментами являются только те, для которых сумма времени начала мультимедийного сегмента и времени начала отображения попадает в интервал между NOW минус timeShiftBufferDepth минус длительность последнего описанного сегмента, и меньшим значением из либо checktime, либо NOW.Then, the list of segments is further limited to checktime along with the MPD attribute TimeShiftBufferDepth, so that the available multimedia segments are only those for which the sum of the start time of the multimedia segment and the start time of the display falls in the interval between NOW minus timeShiftBufferDepth minus the duration of the last segment described, and shorter value from either checktime or NOW.

МАСШТАБИРУЕМЫЕ БЛОКИSCALABLE BLOCKS

Иногда имеющаяся в наличии полоса пропускания снижается так низко, что блок или блоки, принимаемые в настоящее время на приемнике, вряд ли будут полностью приняты вовремя для воспроизведения без временной остановки представления. Приемник может заранее обнаруживать такие ситуации. Например, приемник может определять, что он принимает блоки, кодируя 5 единиц мультимедиа в каждые 6 единиц времени, и содержит буфер на 4 единицы мультимедиа, так что приемник может предположить необходимость остановки представления, или паузы, примерно через 24 единицы времени. При достаточном уведомлении, приемник может среагировать на такую ситуацию, например, путем отказа от текущего потока блоков и начала запроса блока или блоков из другого отображения контента, например того, которое использует меньше полосы пропускания на единицу времени воспроизведения. Например, если приемник переключается на отображение, где блоки кодированы для по меньшей мере на 20% большего времени видео для такого же размера блоков, то приемник может устранить необходимость останавливаться до тех пор, пока не улучшится ситуация с полосой пропускания.Sometimes the available bandwidth is reduced so low that the block or blocks currently being received at the receiver are unlikely to be fully received on time for playback without temporarily stopping the presentation. The receiver can detect such situations in advance. For example, a receiver may determine that it receives blocks by encoding 5 units of media for every 6 units of time, and contains a buffer of 4 units of media, so that the receiver may assume that it needs to stop the presentation, or pause, after about 24 units of time. With sufficient notification, the receiver can respond to this situation, for example, by rejecting the current flow of blocks and starting to request a block or blocks from another content display, for example, one that uses less bandwidth per unit playback time. For example, if the receiver switches to display where blocks are encoded for at least 20% longer video time for the same block size, then the receiver may eliminate the need to stop until the bandwidth situation improves.

Однако, может быть неэкономно заставлять приемник полностью отбрасывать данные, уже принятые из оставленного отображения. В варианте осуществления системы потоковой передачи блоков, описанном в этом документе, данные в каждом блоке могут кодироваться и конфигурироваться таким образом, что некоторые префиксы данных в блоке могут использоваться для продолжения представления без принятой оставшейся части блока. Например, могут использоваться общеизвестные методики масштабируемого кодирования видео. Примеры таких способов кодирования видео включают в себя Масштабируемое Кодирование Видео (SVC) H.264 или временную масштабируемость в Улучшенном Кодировании Видеосигнала (AVC) H.264. Преимущественно, этот способ позволяет продолжать представление на основе части блока, которая принята, даже когда прием блока или блоков мог быть оставлен, например, из-за изменений в имеющейся в наличии полосе пропускания. Другое преимущество состоит в том, что одиночный файл данных может использоваться в качестве источника для нескольких разных отображений контента. Это возможно, например, путем использования частичных запросов GET HTTP, которые выбирают подмножество блока, соответствующее необходимому отображению.However, it may not be economical to force the receiver to completely discard data already received from the abandoned display. In the embodiment of the block streaming system described in this document, the data in each block can be encoded and configured so that some data prefixes in the block can be used to continue the presentation without the received remainder of the block. For example, well-known scalable video coding techniques may be used. Examples of such video encoding methods include H.264 Scalable Video Encoding (SVC) or H.264 Advanced Video Signal Encoding (AVC) time scalability. Advantageously, this method allows the presentation to continue based on the portion of the block that is received even when the reception of the block or blocks could be left, for example, due to changes in the available bandwidth. Another advantage is that a single data file can be used as a source for several different content displays. This is possible, for example, by using partial HTTP GET requests that select a subset of the block that matches the desired mapping.

Одним улучшением, подробно изложенным в этом документе, является улучшенный сегмент, масштабируемая карта сегмента. Масштабируемая карта сегмента содержит местоположения разных уровней в сегменте, так что клиент может получить доступ соответственно к частям сегментов и извлечь уровень. В другом варианте осуществления, мультимедийные данные в сегменте упорядочиваются так, что качество сегмента увеличивается по мере загрузки данных постепенно от начала сегмента. В другом варианте осуществления, постепенное увеличение качества применяется для каждого блока или фрагмента, заключенных в сегменте, так что запросы фрагментов могут выполняться с целью осуществления масштабируемого подхода.One improvement detailed in this document is an improved segment, a scalable segment map. A scalable segment map contains locations of different levels in a segment, so that the client can access parts of the segments accordingly and retrieve the level. In another embodiment, the multimedia data in the segment is ordered so that the quality of the segment increases as the data downloads gradually from the beginning of the segment. In another embodiment, a gradual increase in quality is applied to each block or fragment enclosed in the segment, so fragment requests can be performed to implement a scalable approach.

Фиг. 12 является чертежом, показывающим аспект масштабируемых блоков. На этом чертеже передатчик 1200 выводит метаданные 1202, масштабируемый уровень 1 (1204), масштабируемый уровень 2 (1206) и масштабируемый уровень 3 (1208), причем последний задерживается. Тогда приемник 1210 может использовать метаданные 1202, масштабируемый уровень 1 (1204) и масштабируемый уровень 2 (1206) для показа представления 1212 мультимедиа.FIG. 12 is a drawing showing an aspect of scalable blocks. In this figure, transmitter 1200 outputs metadata 1202, scalable layer 1 (1204), scalable layer 2 (1206), and scalable layer 3 (1208), the latter being delayed. Then, receiver 1210 may use metadata 1202, scalable layer 1 (1204), and scalable layer 2 (1206) to display multimedia presentation 1212.

НЕЗАВИСИМЫЕ УРОВНИ МАСШТАБИРУЕМОСТИINDEPENDENT LEVELS OF SCALABILITY

Как объяснялось выше, системе потоковой передачи по запросу блоков нежелательно останавливаться, когда приемник не способен принимать запрошенные блоки определенного отображения мультимедийных данных вовремя для их воспроизведения, так как это часто приводит к плохому восприятию пользователя. Остановок можно избежать, уменьшить или смягчить путем ограничения скорости передачи данных отображений выбранных гораздо ниже имеющейся в наличии полосы пропускания, чтобы стало маловероятно, что какая-нибудь заданная часть представления не принялась вовремя, но эта стратегия имеет недостаток в том, что качество мультимедиа обязательно гораздо ниже, чем в принципе может обеспечиваться имеющейся в наличии полосой пропускания. Представление более низкого качества, нежели возможно, также можно интерпретировать как плохое восприятие пользователя. Таким образом, разработчик системы потоковой передачи по запросу блоков сталкивается с выбором при исполнении клиентских процедур, программировании клиента или конфигурировании аппаратных средств, либо запросить версию контента, которая имеет гораздо меньшую скорость передачи данных, чем имеющаяся в наличии полоса пропускания, и в этом случае пользователь может страдать от плохого качества мультимедиа, либо запросить версию контента, которая имеет скорость передачи данных, близкую к имеющейся в наличии полосе пропускания, и в этом случае пользователь может страдать от высокой вероятности пауз во время представления, когда меняется имеющаяся в наличии полоса пропускания.As explained above, it is undesirable for the streaming system upon request of the blocks to stop when the receiver is not able to receive the requested blocks of a certain display of multimedia data in time for playback, as this often leads to poor user experience. Stops can be avoided, reduced, or mitigated by limiting the data rate of the mappings selected much lower than the available bandwidth, so that it is unlikely that any given part of the presentation did not arrive on time, but this strategy has the disadvantage that the quality of multimedia is necessarily much lower than in principle can be provided by the available bandwidth. A presentation of lower quality than possible can also be interpreted as a poor user experience. Thus, the developer of a streaming system at the request of blocks is faced with a choice when executing client procedures, programming a client or configuring hardware, or requesting a version of the content that has a much lower data rate than the available bandwidth, in which case the user may suffer from poor quality multimedia, or request a version of the content that has a data transfer rate close to the available bandwidth, and in this case Tea user may suffer from a high probability of pauses during a presentation when changing existing available bandwidth.

Чтобы справляться с таким ситуациями, системы потоковой передачи блоков, описанные в этом документе, могут конфигурироваться для независимой обработки нескольких уровней масштабируемости, так что приемник может выполнять многоуровневые запросы, а передатчик может отвечать на многоуровневые запросы.To cope with such situations, the block streaming systems described in this document can be configured to independently handle multiple levels of scalability, so that the receiver can execute multi-level requests, and the transmitter can respond to multi-level requests.

В таких вариантах осуществления, кодированные мультимедийные данные для каждого блока, могут разделяться на несколько непересекающихся фрагментов, называемых в этом документе «уровнями», так что сочетание уровней содержит все мультимедийные данные для блока, и так что клиент, который принял некоторые подмножества уровней, может выполнять декодирование и представление отображения контента. В этом подходе упорядочение данных в потоке таково, что смежные диапазоны являются увеличивающимися по качеству, и метаданные это отражают.In such embodiments, the encoded multimedia data for each block may be divided into several disjoint fragments, referred to in this document as “layers”, so that the combination of layers contains all the multimedia data for the block, and so that a client that has received some subsets of the layers may perform decoding and presentation of content display. In this approach, the ordering of the data in the stream is such that adjacent ranges are increasing in quality, and metadata reflects this.

Примером методики, которая может использоваться для формирования уровней с вышеупомянутым свойством, является методика масштабируемого кодирования видео, например, которая описана в стандартах H.264/SVC ITU-T. Другим примером методики, которая может использоваться для формирования уровней с вышеупомянутым свойством, является методика уровней с временной масштабируемостью, которая обеспечена в стандарте H.264/AVC ITU-T.An example of a technique that can be used to form layers with the aforementioned property is a scalable video encoding technique, for example, which is described in the ITU-T H.264 / SVC standards. Another example of a technique that can be used to form layers with the aforementioned property is the temporal scalability layer technique that is provided in the ITU-T H.264 / AVC standard.

В этих вариантах осуществления метаданные могут быть обеспечены в MPD или в самом сегменте, что позволяет формировать запросы в отношении отдельных уровней любого заданного блока и/или сочетаний уровней и/или заданного уровня из нескольких блоков и/или сочетания уровней нескольких блоков. Например, уровни, содержащие блок, могут храниться в одиночном файле, и могут обеспечиваться метаданные, задающие байтовые диапазоны в файле, соответствующие отдельным уровням.In these embodiments, metadata can be provided in the MPD or in the segment itself, which allows you to generate queries regarding individual levels of any given block and / or combinations of levels and / or a given level from several blocks and / or a combination of levels of several blocks. For example, levels containing a block may be stored in a single file, and metadata specifying byte ranges in the file corresponding to individual levels may be provided.

Протокол загрузки файла, допускающий задание байтовых диапазонов, например HTTP 1.1, может использоваться для запроса отдельных уровней или нескольких уровней. Кроме того, как будет понятно специалисту в данной области техники при рассмотрении этого раскрытия, описанные выше методики в отношении формирования, запроса и загрузки блоков переменного размера и переменных сочетаний блоков могут применяться с тем же успехом в этом контексте.A file upload protocol that allows the specification of byte ranges, such as HTTP 1.1, can be used to request individual levels or several levels. In addition, as will be appreciated by one of ordinary skill in the art when considering this disclosure, the techniques described above with respect to generating, requesting, and loading variable sized blocks and variable block combinations can be applied with the same success in this context.

СОЧЕТАНИЯCOMBINATIONS

Теперь будет описано некоторое количество вариантов осуществления, которые могут применяться преимущественно клиентом потоковой передачи по запросу блоков, чтобы добиться улучшения восприятия пользователя и/или сокращения требований к емкости обслуживающей инфраструктуры по сравнению с существующими методиками, путем использования мультимедийных данных, разделенных на уровни, как описано выше.A number of embodiments will now be described that may be used predominantly by a streaming client upon request of blocks in order to achieve improved user experience and / or reduced capacity requirements of the serving infrastructure compared to existing techniques by using multimedia data divided into levels, as described above.

В первом варианте осуществления известные методики в системе потоковой передачи по запросу блоков могут применяться с модификацией в отношении того, что разные версии контента в некоторых случаях заменяются разными сочетаниями уровней. Другими словами, там, где существующая система может обеспечить два отдельных отображения контента, описанная здесь улучшенная система может обеспечить два уровня, где одно отображение контента в существующей системе аналогично по скорости передачи, качеству и возможно по другим показателям первому уровню в улучшенной системе, а второе отображение контента в существующей системе аналогично по скорости передачи, качеству и возможно по другим показателям сочетанию двух уровней улучшенной системы. В результате емкость хранилища, необходимого в улучшенной системе, уменьшается по сравнению с необходимым в существующей системе. Кроме того, тогда как клиенты существующей системы могут выдавать запросы в отношении блоков одного отображения или другого отображения, клиенты улучшенной системы могут выдавать запросы в отношении либо первого, либо обоих уровней блока. В результате восприятие пользователя в двух системах аналогично. Кроме того, обеспечивается усовершенствованное кэширование, так как даже для разного качества используются общие сегменты, которые затем кэшируются с большим правдоподобием.In the first embodiment, well-known techniques in a block-based streaming system can be applied with a modification in that different versions of the content are in some cases replaced by different combinations of levels. In other words, where the existing system can provide two separate content displays, the improved system described here can provide two levels, where one content display in the existing system is similar in transmission speed, quality and possibly other indicators to the first level in the improved system, and the second the display of content in the existing system is similar in terms of transmission speed, quality, and possibly in other indicators, a combination of two levels of an improved system. As a result, the storage capacity needed in an improved system is reduced compared to what is needed in an existing system. In addition, while clients of an existing system may issue requests for blocks of one display or another display, clients of an improved system may issue requests for either the first or both block levels. As a result, the perception of the user in the two systems is similar. In addition, improved caching is provided, since even for different qualities shared segments are used, which are then cached with great credibility.

Во втором варианте осуществления клиент в улучшенной системе потоковой передачи по запросу блоков, применяющей описываемый в данном случае способ уровней, может поддерживать отдельный буфер данных для каждого из нескольких уровней кодирования мультимедиа. Как будет ясно специалистам в области управления данными в клиентских устройствах, эти «отдельные» буферы могут быть реализованы путем распределения физически или логически отдельных областей памяти для отдельных буферов или с помощью других методик, в которых буферизованные данные хранятся в одиночной или нескольких областях памяти, и разделение данных из разных уровней достигается логически посредством использования структур данных, которые содержат ссылки на местоположения в хранилище данных из отдельных уровней, и поэтому в дальнейшем термин «отдельные буферы» следует понимать включающим в себя любой способ, по которому данные отдельных уровней могут быть идентифицированы отдельно. Клиент выдает запросы в отношении отдельных уровней каждого блока на основе занятости каждого буфера, например, уровни могут быть упорядочены в порядке приоритета, так что запрос данных с одного уровня может не выдаваться, если занятость какого-либо буфера для нижнего уровня в порядке приоритета ниже пороговой величины для того нижнего уровня. В этом способе приоритет отдается приему данных с нижних уровней в порядке приоритета, так что если имеющаяся в наличии полоса пропускания опускается ниже необходимой для приема также верхних уровней в порядке приоритета, то запрашиваются только нижние уровни. Кроме того, пороговые величины, ассоциированные с разными уровнями, могут отличаться, так что, например, нижние уровни имеют более высокие пороговые величины. В случае если имеющаяся в наличии полоса пропускания изменяется так, что данные для верхнего уровня нельзя принять перед временем воспроизведения блока, то данные для нижних уровней обязательно будут уже приняты, и поэтому представление может продолжаться с помощью одного нижнего уровня. Пороговые величины для занятости буфера могут быть заданы в показателях байтов данных, длительности воспроизведения данных, содержащихся в буфере, количества блоков или любой другой подходящей меры.In a second embodiment, a client in an improved block request streaming system using the layer method described herein may maintain a separate data buffer for each of several media coding layers. As will be clear to those skilled in the art of managing data in client devices, these “separate” buffers can be implemented by allocating physically or logically separate memory areas to individual buffers or using other techniques in which buffered data is stored in a single or multiple memory areas, and separation of data from different levels is achieved logically by using data structures that contain links to locations in the data warehouse from individual levels, and therefore ther term "individual buffers" should be understood to include any method by which the individual data levels can be identified separately. The client issues requests for individual levels of each block based on the occupancy of each buffer, for example, the levels can be ordered in priority order, so that data request from one level may not be issued if the occupancy of any buffer for the lower level in priority order is lower than the threshold quantities for that lower level. In this method, priority is given to receiving data from the lower levels in priority order, so if the available bandwidth falls below the upper levels necessary to receive also in priority order, only the lower levels are requested. In addition, the threshold values associated with different levels may differ, so that, for example, lower levels have higher threshold values. If the available bandwidth is changed so that the data for the upper level cannot be received before the playing time of the block, then the data for the lower levels will be accepted already, and therefore the presentation can continue using one lower level. Thresholds for buffer occupancy can be specified in terms of data bytes, duration of playback of data contained in the buffer, number of blocks, or any other suitable measure.

В третьем варианте осуществления, способы из первого и второго вариантов осуществления могут объединяться, так что обеспечивается несколько отображений мультимедиа, содержащих подмножество уровней (как в первом варианте осуществления), и так что второй вариант осуществления применяется к подмножеству уровней в отображении.In the third embodiment, the methods of the first and second embodiments can be combined so that multiple multimedia displays comprising a subset of levels are provided (as in the first embodiment), and so the second embodiment is applied to a subset of levels in a display.

В четвертом варианте осуществления способы из первого, второго и/или третьего вариантов осуществления могут объединяться с вариантом осуществления, в котором предусмотрено несколько независимых отображений контента, так что, например по меньшей мере одно из независимых отображений содержит несколько уровней, к которым применяются методики из первого, второго и/или третьего вариантов осуществления.In the fourth embodiment, the methods of the first, second and / or third embodiments may be combined with an embodiment in which several independent displays of content are provided, so that, for example, at least one of the independent displays contains several levels to which the techniques from the first , second and / or third embodiments.

УСОВЕРШЕНСТВОВАННЫЙ ДИСПЕТЧЕР БУФЕРАADVANCED BUFFER CONTROLLER

В сочетании с блоком 126 отслеживания буфера (см. Фиг. 2) усовершенствованный диспетчер буфера может использоваться для оптимизации буфера на стороне клиента. Системы потоковой передачи по запросу блоков хотят гарантировать, что воспроизведение мультимедиа может начинаться быстро и продолжаться плавно, одновременно обеспечивая максимальное качество мультимедиа пользователю или устройству назначения. Это может потребовать, чтобы клиент запрашивал блоки, которые имеют наивысшее качество мультимедиа, но которые также могут быстро начинаться и приниматься вовремя, чтобы воспроизводиться не вызывая паузы в представлении.In combination with the buffer tracking unit 126 (see FIG. 2), an advanced buffer manager can be used to optimize the client-side buffer. On-demand streaming systems want to ensure that multimedia playback can start quickly and continue smoothly while maximizing multimedia quality to the user or destination device. This may require the client to request blocks that have the highest quality multimedia, but which can also quickly start and be taken on time to play without causing pauses in the presentation.

В вариантах осуществления, которые используют усовершенствованный диспетчер буфера, диспетчер определяет, какие блоки мультимедийных данных запрашивать и когда делать эти запросы. Усовершенствованный диспетчер буфера мог бы, например, обеспечиваться набором метаданных для контента, который нужно представить, причем эти метаданные включают в себя список отображений, имеющихся в наличии для контента, и метаданные для каждого отображения. Метаданные для отображения могут содержать информацию о скорости передачи данных в отображении и других параметрах, например кодеки видео, аудио или другие кодеки и параметры кодеков, разрешение видео, сложность декодирования, язык аудио и любые другие параметры, которые могут повлиять на выбор отображения на клиенте.In embodiments that use the advanced buffer manager, the manager determines which media blocks to request and when to make these requests. An advanced buffer manager could, for example, be provided with a set of metadata for the content to be presented, which metadata includes a list of displays available for the content and metadata for each display. The display metadata may contain information about the data transfer rate in the display and other parameters, for example video codecs, audio or other codecs and codec parameters, video resolution, decoding complexity, audio language and any other parameters that may affect the choice of display on the client.

Метаданные для отображения также могут содержать идентификаторы для блоков, на которые сегментировано отображение, причем эти идентификаторы обеспечивают информацию, необходимую клиенту для запроса блока. Например, когда протоколом запроса является HTTP, идентификатором может быть URL HTTP, по возможности вместе с дополнительной информацией, идентифицирующей байтовый диапазон или временной промежуток в файле, идентифицированном по URL, причем этот байтовый диапазон или временной промежуток идентифицируют определенный блок в файле, идентифицированном по URL.The metadata for mapping may also contain identifiers for the blocks onto which the mapping is segmented, these identifiers providing the information the client needs to request the block. For example, when the request protocol is HTTP, the identifier may be an HTTP URL, if possible together with additional information identifying a byte range or time period in a file identified by URL, and this byte range or time period identifying a specific block in a file identified by URL .

В конкретной реализации усовершенствованный диспетчер буфера определяет, когда приемник делает запрос новых блоков, и может сам обрабатывать отправку запросов. В новом аспекте, усовершенствованный диспетчер буфера запрашивает новые блоки в соответствии со значением отношения балансировки, которое осуществляет балансировку использования слишком большой полосы пропускания и окончания мультимедиа во время потокового воспроизведения.In a specific implementation, the advanced buffer manager determines when the receiver makes a request for new blocks, and can handle sending requests. In a new aspect, the advanced buffer manager requests new blocks in accordance with the value of the balancing ratio, which balances the use of too much bandwidth and the end of multimedia during streaming.

Информация, принятая блоком 126 отслеживания буфера от буфера 125 блоков, может включать в себя указания каждого события, когда принимаются мультимедийные данные, сколько принято, когда воспроизведение мультимедийных данных началось или прекратилось, и скорость воспроизведения мультимедиа. На основе этой информации блок 126 отслеживания буфера может вычислить переменную, представляющую текущий размер буфера, Bcurrent. В этих примерах Bcurrent представляет объем мультимедиа, содержащийся в буфере или буферах клиента или другого устройства, и может измеряться в единицах времени, так что Bcurrent представляет количество времени, которое заняло бы воспроизведение всего мультимедиа, представленного блоками или частичными блоками, сохраненными в буфере или буферах, если бы не принимались никакие дополнительные блоки или частичные блоки. Таким образом, Bcurrent представляет «длительность воспроизведения» при нормальной скорости воспроизведения мультимедийных данных, имеющихся в наличии на клиенте, но еще не воспроизведенных.The information received by the buffer tracking unit 126 from the block buffer 125 may include indications of each event when the multimedia data is received, how much is received when the multimedia data playback has started or stopped, and the multimedia playback speed. Based on this information, the buffer tracking unit 126 may calculate a variable representing the current buffer size, B current . In these examples, B current represents the amount of media contained in the buffer or buffers of the client or other device, and can be measured in units of time, so that B current represents the amount of time that would take to play all the media represented by blocks or partial blocks stored in the buffer or buffers if no additional blocks or partial blocks were received. Thus, B current represents the “playback time” at the normal playback speed of multimedia data available on the client but not yet played.

С течением времени значение Bcurrent будет уменьшаться, так как мультимедиа воспроизводится, и может увеличиваться каждый раз, когда принимаются новые данные для блока. Отметим, что для целей этого объяснения предполагается, что блок принимается, когда все данные того блока имеются в наличии в запросчике 124 блоков, но вместо этого могут использоваться другие средства, например, чтобы учитывать прием частичных блоков. На практике прием блока может происходить за некий период времени.Over time, the value of B current will decrease, as the media is played, and may increase each time new data is received for the block. Note that for the purposes of this explanation, it is assumed that a block is received when all the data of that block is available in the block interrogator 124, but other means can be used instead, for example, to take into account the reception of partial blocks. In practice, block reception can occur over a period of time.

Фиг. 13 иллюстрирует изменение значения Bcurrent со временем, когда воспроизводится мультимедиа и принимаются блоки. Как показано на Фиг. 13, значение Bcurrent равно нулю для моментов раньше t0, указывая, что не принято никаких данных. В момент t0 принимается первый блок, и значение Bcurrent увеличивается до равного длительности воспроизведения принятого блока. В то же время воспроизведение еще не началось, и поэтому значение Bcurrent остается постоянным до момента t1, в который поступает второй блок, и Bcurrent увеличивается на размер этого второго блока. В то же время начинается воспроизведение, и значение Bcurrent начинает уменьшаться линейно до момента t2, когда поступает третий блок.FIG. 13 illustrates a change in the value of B current with time when multimedia is played and blocks are received. As shown in FIG. 13, the value of B current is zero for moments earlier than t 0 , indicating that no data has been received. At time t 0 , the first block is received, and the value of B current is increased to equal the playing time of the received block. At the same time, playback has not yet begun, and therefore the value of B current remains constant until t 1 , at which the second block arrives, and B current increases by the size of this second block. At the same time, playback starts, and the value of B current begins to decrease linearly until t 2 , when the third block arrives.

Прогрессия Bcurrent продолжается в этой «пилообразной» манере, увеличиваясь ступенчато каждый раз, когда принимается блок (в моменты t2, t3, t4, t5 и t6), и плавно уменьшаясь, когда данные воспроизводятся между ними. Отметим, что в этом примере воспроизведение проходит на нормальной скорости воспроизведения для контента, и поэтому наклон кривой между приемом блоков равен точно -1, означая, что одна секунда мультимедийных данных воспроизводится за каждую одну секунду реального времени. При кадровом мультимедиа, воспроизводимым с заданным количеством кадров в секунду, например, 24 кадра в секунду, наклон в -1 будет приближенно выражен малыми ступенчатыми функциями, которые указывают воспроизведение каждого отдельного кадра данных, например, ступенями в -1/24 секунды, когда воспроизводится каждый кадр.The progression of B current continues in this “sawtooth” manner, increasing stepwise each time a block is received (at times t 2 , t 3 , t 4 , t 5 and t 6 ), and gradually decreasing when data is played between them. Note that in this example, the reproduction takes place at the normal reproduction speed for the content, and therefore the slope of the curve between receiving blocks is exactly -1, meaning that one second of multimedia data is reproduced for every one second of real time. With frame multimedia reproduced at a given number of frames per second, for example, 24 frames per second, a tilt of -1 will be approximately expressed by small step functions that indicate the playback of each individual data frame, for example, in steps of -1/24 seconds when it is being played every frame.

Фиг. 14 показывает другой пример развития Bcurrent со временем. В том примере первый блок поступает в t0, и воспроизведение начинается немедленно. Поступление блоков и воспроизведение продолжаются до момента t3, в который значение Bcurrent достигает нуля. Когда это происходит, никакие дополнительные мультимедийные данные не имеются в наличии для воспроизведения, вызывая паузу в представлении мультимедиа. В момент t4 принимается четвертый блок, и воспроизведение можно возобновить. Этот пример, поэтому показывает случай, когда прием четвертого блока произошел позже, чем нужно, приведя к паузе в воспроизведении и соответственно плохому восприятию пользователя. Таким образом, цель усовершенствованного диспетчера буфера и других особенностей состоит в снижении вероятности этого события, одновременно обеспечивая высокое качество мультимедиа.FIG. 14 shows another example of the development of B current over time. In that example, the first block arrives at t 0 , and playback starts immediately. The arrival of blocks and playback continues until t 3 , at which the value of B current reaches zero. When this happens, no additional multimedia data is available for playback, causing a pause in the multimedia view. At time t 4 , the fourth block is received, and playback can resume. This example, therefore, shows the case where the reception of the fourth block occurred later than necessary, leading to a pause in playback and, accordingly, poor user experience. Thus, the goal of an advanced buffer manager and other features is to reduce the likelihood of this event, while ensuring high quality multimedia.

Монитор 126 буфера также может вычислять другой показатель, Bratio(t), который является отношением мультимедиа, принятого в заданный период времени, к длине этого периода времени. Точнее говоря, Bratio(t) равно Treceived/(Tnow-t), где Treceived является объемом мультимедиа (измеренным по его времени воспроизведения), принятым в период времени от t, некоторого момента раньше текущего времени, до текущего момента Tnow.Buffer monitor 126 can also calculate another metric, B ratio (t), which is the ratio of multimedia received in a given time period to the length of this time period. More precisely, B ratio (t) is equal to T received / (T now -t), where T received is the amount of multimedia (measured by its playback time), taken in the period from t, some point earlier than the current time, to the current moment T now .

Bratio(t) может использоваться для измерения скорости изменения Bcurrent. Bratio(t)=0 является случаем, когда никакие данные не приняты с момента t; Bcurrent будет уменьшен на (Tnow-t) с того момента, допуская, что мультимедиа воспроизводится. Bratio(t)=1 является случаем, когда мультимедиа принимается в таком же объеме, как воспроизводится, за время (Tnow-t); Bcurrent будет иметь такое же значение в момент Tnow, как в момент t. Bratio(t)>1 является случаем, когда принято больше данных, чем необходимо для воспроизведения за время (Tnow-t); Bcurrent будет увеличен с момента t до момента Tnow.B ratio (t) can be used to measure the rate of change of B current . B ratio (t) = 0 is the case when no data has been received since t; B current will be reduced by (T now -t) from then on, assuming media is playing. B ratio (t) = 1 is the case when multimedia is taken in the same volume as it is reproduced in time (T now -t); B current will have the same value at time T now , as at time t. B ratio (t)> 1 is the case when more data is received than is necessary for playback in time (T now -t); B current will be increased from moment t to moment T now .

Монитор 126 буфера дополнительно вычисляет значение State, которое может принимать дискретное количество значений. Монитор 126 буфера дополнительно оснащается функцией NewState(Bcurrent, Bratio), которая, принимая во внимание текущее значение Bcurrent и значения Bratio для t<Tnow, обеспечивает новое значение State в качестве выходных данных. Всякий раз, когда Bcurrent и Bratio заставляют эту функция возвращать значение, отличное от текущего значения State, новое значение присваивается State, и это новое значение State указывается селектору 123 блоков.Buffer monitor 126 additionally calculates a State value that can take a discrete number of values. Buffer monitor 126 is additionally equipped with a function NewState (B current , B ratio ), which, taking into account the current value of B current and B ratio values for t <T now , provides a new State value as output. Whenever B current and B ratio cause this function to return a value other than the current State value, a new value is assigned to State, and this new State value is indicated to the block selector 123.

Функция NewState может оцениваться относительно пространства всех возможных значений пары (Bcurrent, Bratio(Tnow-Tx)), где Tx может быть фиксированным (конфигурированным) значением или может выводиться из Bcurrent, например, с помощью таблицы конфигурации, которая соотносит значения Bcurrent со значениями Tx, или может зависеть от предыдущего значения State. Монитор 126 буфера обеспечивается одним или несколькими разбиениями этого пространства, причем каждое разбиение содержит наборы непересекающихся областей, причем каждая область аннотируется значением State. Оценка функции NewState тогда содержит операцию идентификации разбиения и определения области, в которую попадает пара (Bcurrent, Bratio(Tnow-Tx)). Возвращаемое значение тогда является аннотацией, ассоциированной с той областью. В простом случае обеспечивается только одно разбиение. В более сложных случаях разбиение может зависеть от пары (Bcurrent, Bratio(Tnow-Tx)) в предыдущее время оценки функции NewState, или от других факторов.The NewState function can be estimated relative to the space of all possible values of the pair (B current , B ratio (T now -T x )), where T x can be a fixed (configured) value or can be derived from B current , for example, using the configuration table, which correlates the values of B current with the values of T x , or may depend on the previous value of State. A buffer monitor 126 is provided by one or more partitions of this space, each partition containing sets of disjoint regions, each region being annotated with a State value. The evaluation of the NewState function then includes the operation of identifying the partition and determining the region into which the pair falls (B current , B ratio (T now -T x )). The return value is then the annotation associated with that area. In the simple case, only one partition is provided. In more complex cases, the partitioning may depend on the pair (B current , B ratio (T now -T x )) in the previous evaluation time of the NewState function, or on other factors.

В конкретном варианте осуществления, описанное выше разбиение может быть основано на таблице конфигурации, содержащей некоторое количество пороговых значений для Bcurrent и некоторое количество пороговых значений для Bratio. В частности, пусть пороговыми значениями для Bcurrent будут Bthresh(0)=0, Bthresh(1), ..., Bthresh(n1), Bthresh(n1+1)=∞, где n1 является количеством ненулевых пороговых значений для Bcurrent. Пусть пороговыми значениями для Bratio будут Br-thresh(0)=0, Br-thresh(1), ..., Br-thresh(n2), Br-thresh(n2+1)=∞, где n2 является количеством пороговых значений для Bratio. Эти пороговые значения задают разбиение, содержащее сетку (n1+1) на (n2+1) ячеек, где i-ая ячейка j-ой строки соответствует области, в которой Bthresh(i-1)<=Bcurrent<Bthresh(i) и Br-thresh(j-1)<=Bratio<Br-thresh(j). Каждая ячейка описанной выше сетки аннотируется значением State, например, ассоциируемым с конкретными значениями, сохраненными в памяти, и тогда функция NewState возвращает значение State, ассоциированное с ячейкой, указанной значениями Bcurrent и Bratio(Tnow-Tx).In a specific embodiment, the partition described above may be based on a configuration table containing a number of thresholds for B current and a number of thresholds for B ratio . In particular, let the threshold values for B current be B thresh (0) = 0, B thresh (1), ..., B thresh (n 1 ), B thresh (n 1 +1) = ∞, where n 1 is the number of non-zero thresholds for B current . Let the threshold values for B ratio be B r-thresh (0) = 0, B r-thresh (1), ..., B r-thresh (n 2 ), B r-thresh (n 2 +1) = ∞ where n 2 is the number of thresholds for the B ratio . These thresholds specify a partition containing a grid of (n 1 +1) into (n 2 +1) cells, where the i-th cell of the j-th row corresponds to the region in which B thresh (i-1) <= B current <B thresh (i) and B r-thresh (j-1) <= B ratio <B r-thresh (j). Each cell of the grid described above is annotated with a State value, for example, associated with specific values stored in memory, and then the NewState function returns the State value associated with the cell indicated by the values of B current and B ratio (T now -T x ).

В дополнительном варианте осуществления, значение гистерезиса может ассоциироваться с каждым пороговым значением. В этом улучшенном способе, оценка функции NewState может быть основана на временном разбиении, сформированном с использованием набора временно измененных пороговых значений, следующим образом. Для каждого Bcurrent пороговое значение, которое меньше диапазона Bcurrent, соответствующего выбранной ячейке при последней оценке NewState, пороговое значение уменьшается путем вычитания значения гистерезиса, ассоциированного с той пороговой величиной. Для каждого Bcurrent пороговое значение, которое больше диапазона Bcurrent, соответствующего выбранной ячейке при последней оценке NewState, пороговое значение увеличивается путем прибавления значения гистерезиса, ассоциированного с той пороговой величиной. Для каждого Bratio пороговое значение, которое меньше диапазона Bratio, соответствующего выбранной ячейке при последней оценке NewState, пороговое значение уменьшается путем вычитания значения гистерезиса, ассоциированного с той пороговой величиной. Для каждого Bratio пороговое значение, которое больше диапазона Bratio, соответствующего выбранной ячейке при последней оценке NewState, пороговое значение увеличивается путем прибавления значения гистерезиса, ассоциированного с той пороговой величиной. Модифицированные пороговые значения используются для оценки значения NewState, а затем пороговые значения возвращаются к их первоначальным значениям.In a further embodiment, a hysteresis value may be associated with each threshold value. In this improved method, the evaluation of the NewState function may be based on a time partition formed using a set of temporarily changed threshold values, as follows. For each B current, a threshold value that is less than the B current range corresponding to the selected cell in the last NewState estimate, the threshold value is reduced by subtracting the hysteresis value associated with that threshold value. For each B current, a threshold value that is greater than the B current range corresponding to the selected cell in the last NewState estimate, the threshold value is increased by adding the hysteresis value associated with that threshold value. For each B ratio, a threshold value that is less than the B ratio range corresponding to the selected cell in the last NewState estimate, the threshold value is reduced by subtracting the hysteresis value associated with that threshold value. For each B ratio, a threshold value that is greater than the B ratio range corresponding to the selected cell in the last NewState estimate, the threshold value is increased by adding the hysteresis value associated with that threshold value. Modified threshold values are used to evaluate the NewState value, and then the threshold values return to their original values.

Другие способы задания разбиений пространства будут очевидны специалистам в данной области техники при прочтении этого раскрытия изобретения. Например, разбиение может задаваться с использованием неравенств на основе линейных комбинаций Bratio и Bcurrent, например, пороговые величины линейного неравенства вида α1•Bratio+α2•Bcurrent≤α0 для действительнозначных α0, α1 и α2, чтобы задать полупространства в общем пространстве, и задания каждого непересекающегося множества как пересечения некоторого количества таких полупространств.Other methods for defining partitions of space will be apparent to those skilled in the art upon reading this disclosure. For example, a partition can be specified using inequalities based on linear combinations of B ratio and B current , for example, threshold values of a linear inequality of the form α1 • B ratio + α2 • B current ≤α0 for real-valued α0, α1 and α2 to define half-spaces in the common space , and the assignment of each disjoint set as the intersection of a certain number of such half-spaces.

Вышеприведенное описание является иллюстрирующим основной процесс. Как будет ясно специалистам в области программирования в режиме реального времени при прочтении этого раскрытия, возможны эффективные реализации. Например, каждый раз, когда новая информация обеспечивается блоку 126 отслеживания буфера, можно вычислить время в будущем, в которое NewState перейдет в новое значение, если, например, не принимаются никакие дополнительные данные для блоков. Затем устанавливается таймер для этого времени, и при отсутствии дополнительных входных данных истечение этого таймера вызовет отправку нового значения State селектору 123 блоков. В результате, вычисления нужно выполнять, только когда новая информация передается блоку 126 отслеживания буфера или когда истекает таймер, а не постоянно.The above description is illustrative of the main process. As it will be clear to experts in the field of real-time programming when reading this disclosure, effective implementations are possible. For example, each time new information is provided to the buffer tracking unit 126, it is possible to calculate the future time at which the NewState will change to a new value if, for example, no additional data is received for the blocks. Then a timer is set for this time, and in the absence of additional input, the expiration of this timer will cause a new State value to be sent to the block selector 123. As a result, the calculations need to be performed only when new information is transmitted to the buffer tracking unit 126, or when the timer expires, rather than continuously.

Подходящими значениями State могут быть «Низкое», «Устойчивое» и «Полное». Пример подходящего набора пороговых значений и результирующая сетка ячеек показаны на Фиг. 15.Suitable values for State include Low, Sustainable, and Full. An example of a suitable set of threshold values and a resulting grid of cells are shown in FIG. fifteen.

На Фиг. 15 пороговые величины Bcurrent показаны на горизонтальной оси в миллисекундах с показанными ниже значениями гистерезиса в виде «+/-значение». Пороговые величины Bratio показаны на вертикальной оси в промилле (т.е. умноженными на 1000) с показанными ниже значениями гистерезиса в виде «+/-значение». Значения State аннотируются в ячейках сетки в виде «L», «S» и «F» для «Низкого», «Устойчивого» и «Полного» соответственно.In FIG. 15, the threshold values of B current are shown on the horizontal axis in milliseconds with the hysteresis values shown below as “+/- value”. The threshold values of B ratio are shown on the vertical axis in ppm (ie, multiplied by 1000) with the hysteresis values shown below as “+/- value”. State values are annotated in the grid cells as “L”, “S” and “F” for “Low”, “Stable” and “Full”, respectively.

Селектор 123 блоков принимает уведомления от запросчика 124 блоков всякий раз, когда имеется возможность запросить новый блок. Как описано выше, селектор 123 блоков обеспечивается информацией в отношении множества имеющихся в наличии блоков и метаданными для тех блоков, включая, например, информацию о скорости мультимедийных данных в каждом блоке.The block selector 123 receives notifications from the block interrogator 124 whenever it is possible to request a new block. As described above, the block selector 123 is provided with information regarding a plurality of available blocks and metadata for those blocks, including, for example, information about the speed of the multimedia data in each block.

Информация о скорости мультимедийных данных блока может содержать фактическую скорость мультимедийных данных конкретного блока (т.е. размер блока в байтах, деленный на время воспроизведения в секундах), среднюю скорость мультимедийных данных отображения, которому принадлежит блок, или меру необходимой имеющейся в наличии полосы пропускания, на длительной основе, чтобы без пауз воспроизвести отображение, которому принадлежит блок, или сочетание вышеупомянутого.Information about the speed of the multimedia data of the block may contain the actual speed of the multimedia data of a particular block (i.e., the size of the block in bytes divided by the playback time in seconds), the average speed of the multimedia display data to which the block belongs, or a measure of the necessary available bandwidth , on a long-term basis, in order to play without pauses the display to which the block belongs, or a combination of the above.

Селектор 123 блоков выбирает блоки на основе значения State, указанного последний раз блоком 126 отслеживания буфера. Когда этим значением State является «Устойчивое», селектор 123 блоков выбирает блок из того же отображения, что и предыдущий выбранный блок. Выбранный блок является первым блоком (в порядке воспроизведения), содержащим мультимедийные данные за период времени в представлении, для которого никакие мультимедийные данные не запрошены ранее.The block selector 123 selects the blocks based on the State value last specified by the buffer tracking block 126. When this State value is Sustainable, the block selector 123 selects a block from the same display as the previous selected block. The selected block is the first block (in playback order) containing multimedia data for a period of time in a view for which no multimedia data has been requested before.

Когда значением State является «Низкое», селектор 123 блоков выбирает блок из отображения с меньшей скоростью мультимедийных данных, чем у ранее выбранного блока. Некоторое количество факторов может влиять на точный выбор отображения в этом случае. Например, селектор 123 блоков может обеспечиваться указанием агрегированной скорости входящих данных и может выбирать отображение со скоростью мультимедийных данных, которая меньше этого значения.When the State value is Low, the block selector 123 selects a block from the display at a lower media speed than the previously selected block. A number of factors can affect the exact display choice in this case. For example, a block selector 123 may be provided by indicating an aggregated input data rate and may select a display with a multimedia data rate that is less than this value.

Когда значением State является «Полное», селектор 123 блоков выбирает блок из отображения с большей скоростью мультимедийных данных, чем у ранее выбранного блока. Некоторое количество факторов может влиять на точный выбор отображения в этом случае. Например, селектор 123 блоков может обеспечиваться указанием агрегированной скорости входящих данных и может выбирать отображение со скоростью мультимедийных данных, которая не превышает это значение.When the State value is “Full”, the block selector 123 selects a block from the display at a higher media speed than the previously selected block. A number of factors can affect the exact display choice in this case. For example, a block selector 123 may be provided by indicating an aggregated input data rate and may select a display with a multimedia data rate that does not exceed this value.

Некоторое количество дополнительных факторов может дополнительно влиять на работу селектора 123 блоков. В частности, может быть ограничена частота, с которой увеличивается скорость мультимедийных данных у выбранного блока, даже если блок 126 отслеживания буфера продолжает указывать состояние «Полное». Кроме того, возможно, что селектор 123 блоков принимает указание состояния «Полное», но отсутствуют блоки с большей имеющейся в наличии скоростью мультимедийных данных (например, потому что последний выбранный блок уже был для наивысшей имеющейся в наличии скорости мультимедийных данных). В этом случае селектор 123 блоков может задержать выбор следующего блока на время, выбранное так, что общий объем мультимедийных данных, буферизованных в буфере 125 блоков, ограничивается сверху.A number of additional factors may further affect the operation of the block selector 123. In particular, the frequency with which the speed of multimedia data of the selected unit is increased may be limited even if the buffer tracking unit 126 continues to indicate a “Full” state. In addition, it is possible that the block selector 123 accepts the “Full” status indication, but there are no blocks with a higher available multimedia data rate (for example, because the last selected block was already for the highest available multimedia data rate). In this case, the block selector 123 may delay the selection of the next block by the time selected so that the total amount of multimedia data buffered in the block buffer 125 is limited from above.

Дополнительные факторы могут влиять на набор блоков, которые рассматриваются во время процесса выбора. Например, имеющиеся в наличии блоки могут ограничиваться блоками из отображений, чье разрешение кодирования входит в определенный диапазон, обеспеченный селектором 123 блоков.Additional factors may influence the set of blocks that are considered during the selection process. For example, the available blocks may be limited to blocks from mappings whose encoding resolution falls within a certain range provided by the block selector 123.

Селектор 123 блоков также может принимать входные данные от других компонентов, которые следят за другими аспектами системы, например наличием вычислительных ресурсов для декодирования мультимедиа. Если такие ресурсы становятся дефицитными, то селектор 123 блоков может выбирать блоки, чье декодирование указывается в метаданных как имеющее меньшую вычислительную сложность (например, отображения с меньшим разрешением или частотой кадров обычно имеют меньшую сложность декодирования).The block selector 123 may also receive input from other components that monitor other aspects of the system, such as the availability of computing resources for multimedia decoding. If such resources become scarce, then the block selector 123 may select blocks whose decoding is indicated in the metadata as having less computational complexity (for example, displays with a lower resolution or frame rate usually have less decoding complexity).

Вышеописанный вариант осуществления обеспечивает существенное преимущество в том, что использование значения Bratio при оценке функции NewState в блоке 126 отслеживания буфера позволяет быстрее увеличить качество в начале представления по сравнению со способом, который рассматривает только Bcurrent. Без учета Bratio может накапливаться большой объем буферизованных данных перед тем, как система сможет выбрать блоки с большей скоростью мультимедийных данных, и, следовательно, более высоким качеством. Однако, когда значение Bratio большое, это указывает на то, что имеющаяся в наличии полоса пропускания гораздо выше скорости мультимедийных данных у ранее принятых блоков, и что даже при относительно небольших буферизованных данных (т.е. низком значении для Bcurrent) остается безопасно запрашивать блоки с большей скоростью мультимедийных данных, и, следовательно, более высоким качеством. В равной степени, если значение Bratio низкое (например, <1), то это указывает на то, что имеющаяся в наличии полоса пропускания опустилась ниже скорости мультимедийных данных у ранее запрошенных блоков, и соответственно даже если Bcurrent большой, то система переключится на меньшую скорость мультимедийных данных и, следовательно, более низкое качество, например, чтобы избежать достижения точки, где Bcurrent=0, и воспроизведение мультимедиа останавливается. Этот улучшенное поведение может быть особенно важным в окружениях, где сетевые условия, а соответственно и скорости передачи, могут быстро и динамически меняться, например, когда пользователи осуществляют потоковую передачу на мобильные устройства.The embodiment described above provides a significant advantage in that the use of the B ratio value when evaluating the NewState function in the buffer tracking unit 126 allows a faster increase in quality at the beginning of the presentation compared to the method that only B current considers . Without taking into account the B ratio , a large amount of buffered data can accumulate before the system can select blocks with a higher speed of multimedia data, and, therefore, higher quality. However, when the B ratio value is large, this indicates that the available bandwidth is much higher than the speed of the multimedia data of previously received blocks, and that even with relatively small buffered data (i.e., a low value for B current ) it remains safe request blocks with a higher speed of multimedia data, and therefore higher quality. Equally, if the value of B ratio is low (for example, <1), then this indicates that the available bandwidth has dropped below the speed of multimedia data for previously requested blocks, and accordingly, even if B current is large, the system will switch to lower media speed and therefore lower quality, for example, to avoid reaching the point where B current = 0, and media playback stops. This improved behavior can be especially important in environments where network conditions, and therefore transmission speeds, can change quickly and dynamically, for example, when users stream to mobile devices.

Другое преимущество обеспечивается при использовании конфигурационных данных для задания разбиения пространства значений (Bcurrent, Bratio). Такие конфигурационные данные могут передаваться блоку 126 отслеживания буфера как часть метаданных представления, или с помощью другого динамического средства. Поскольку в практических применениях поведение пользовательских сетевых соединений может быть весьма изменчивым между пользователей и со временем для одиночного пользователя, может быть сложно прогнозировать разбиения, которые будут применимы для всех пользователей. Возможность обеспечивать такую конфигурационную информацию пользователям динамически позволяет разработать хорошие конфигурационные настройки со временем в соответствии с накопленным опытом.Another advantage is provided by using configuration data to specify a partition of the value space (B current , B ratio ). Such configuration data may be transmitted to the buffer tracking unit 126 as part of the presentation metadata, or by other dynamic means. Since in practical applications the behavior of user network connections can be very variable between users and over time for a single user, it can be difficult to predict the partitions that will be applicable to all users. The ability to provide such configuration information to users dynamically allows you to develop good configuration settings over time in accordance with experience.

ЗАДАНИЕ ПЕРЕМЕННОГО РАЗМЕРА ЗАПРОСАREQUEST VARIABLE SIZE OF REQUEST

Высокая частота запросов может быть необходима, если каждый запрос относится к одиночному блоку, и если каждый блок кодирует короткий мультимедийный сегмент. Если мультимедийные блоки короткие, то воспроизведение видео быстро переходит от блока к блоку, что более часто позволяет приемнику регулировать или изменять выбранную скорости передачи данных путем изменения отображения, повышая вероятность того, что воспроизведение может продолжаться без остановки. Однако недостатком высокой частоты запросов является то, что они могут быть неустойчивыми в некоторых сетях, в которых доступная полоса пропускания ограничивается в сети от клиента к серверу, например, в беспроводных сетях WAN, например беспроводных WAN 3G и 4G, где емкость линии связи данных от клиента к сети ограничивается или может стать ограниченной на короткие или длительные периоды времени из-за изменений в условиях радиосвязи.A high request rate may be necessary if each request refers to a single block, and if each block encodes a short multimedia segment. If the multimedia blocks are short, then video playback quickly moves from block to block, which more often allows the receiver to adjust or change the selected data rate by changing the display, increasing the likelihood that playback can continue without stopping. However, the disadvantage of the high frequency of requests is that they can be unstable in some networks in which the available bandwidth is limited in the network from the client to the server, for example, in wireless WAN networks, for example, wireless WAN 3G and 4G, where the data link capacity is The client’s network connectivity is limited or may become limited for short or long periods of time due to changes in radio conditions.

Высокая частота запросов также подразумевает высокую нагрузку на обслуживающую инфраструктуру, что вносит ассоциированные затраты в виде требований к пропускной способности. Таким образом, желательно иметь некоторые преимущества от высокой частоты запросов без всех недостатков.High request frequency also implies a high load on the serving infrastructure, which introduces associated costs in the form of bandwidth requirements. Thus, it is desirable to have some of the benefits of a high query frequency without all the disadvantages.

В некоторых вариантах осуществления системы потоковой передачи блоков гибкость высокой частоты запросов объединяется с менее частыми запросами. В этом варианте осуществления, блоки могут формироваться, как описано выше, и агрегироваться в сегменты, содержащие несколько блоков, также как описано выше. В начале представления применяются описанные выше процессы, в которых каждый запрос обращается к одиночному блоку, либо выполняется несколько одновременных запросов для запроса частей блока, чтобы гарантировать быстрое время переключения каналов и поэтому хорошее восприятие пользователя в начале представления. Впоследствии, когда выполняется некоторое условие, которое будет описано ниже, клиент может выдавать запросы, которые включают в себя несколько блоков в одиночном запросе. Это возможно, потому что блоки агрегированы в более крупные файлы или сегменты и могут запрашиваться с использованием байтовых или временных диапазонов. Последовательные байтовые или временные диапазоны могут агрегироваться в одиночный более крупный байтовый или временной диапазон, приводя к одиночному запросу в отношении нескольких блоков, и даже прерывающиеся блоки могут запрашиваться в одном запросе.In some embodiments of a block streaming system, the flexibility of a high request frequency is combined with less frequent requests. In this embodiment, blocks may be formed as described above and aggregated into segments containing several blocks, as described above. At the beginning of the presentation, the processes described above are applied in which each request refers to a single block, or several simultaneous requests are made to request parts of the block to guarantee fast channel switching time and therefore a good user experience at the beginning of the presentation. Subsequently, when a certain condition, which will be described below, is fulfilled, the client may issue requests that include several blocks in a single request. This is possible because blocks are aggregated into larger files or segments and can be requested using byte or time ranges. Sequential byte or time ranges can be aggregated into a single larger byte or time range, resulting in a single request for multiple blocks, and even interrupted blocks can be requested in a single request.

Одна базовая конфигурация, которая может быть обусловлена принятием решения, запросить ли одиночный блок (или частичный блок) или запросить несколько последовательных блоков, имеет основу конфигурации на решение о том, будут ли вероятно воспроизводиться запрошенные блоки. Например, если вероятно, что скоро возникнет потребность переключиться на другое отображение, то клиенту лучше запрашивать одиночные блоки, т.е. небольшие объемы мультимедийных данных. Одна причина для этого состоит в том, что если выполняется запрос нескольких блоков, когда переключение на другое отображение могло быть неизбежным, то переключение можно сделать до того, как воспроизводятся последние несколько блоков запроса. Таким образом, загрузка этих последних нескольких блоков может задержать передачу мультимедийных данных отображения, на которое выполняется переключение, что может вызвать остановки воспроизведения мультимедиа.One basic configuration, which may be determined by the decision whether to request a single block (or partial block) or to request several consecutive blocks, has the basis of the configuration for deciding whether the requested blocks are likely to play. For example, if it is likely that there will soon be a need to switch to another display, then it is better for the client to request single blocks, i.e. small amounts of multimedia data. One reason for this is that if you are querying multiple blocks when switching to another display could be unavoidable, switching can be done before the last few query blocks are played. Thus, downloading these last few blocks may delay the transmission of multimedia display data to which switching is performed, which may cause multimedia playback to stop.

Однако, запросы одиночных блоков приводят к большей частоте запросов. С другой стороны, если маловероятно, что скоро возникнет потребность переключиться на другое отображение, то может быть предпочтительно, формировать запросы в отношении нескольких блоков, так как все эти блоки вероятно будут воспроизведены, и это приводит к меньшей частоте запросов, что может существенно снизить потери на запросы, особенно если типично, что нет близкого изменения в отображении.However, single block requests result in a higher frequency of requests. On the other hand, if it is unlikely that there will soon be a need to switch to another display, then it may be preferable to generate requests for several blocks, since all of these blocks will probably be played, and this leads to a lower frequency of requests, which can significantly reduce losses requests, especially if it’s typical that there is no close change in the display.

В традиционных системах объединения блоков количество, запрошенное в каждом запросе, не регулируется динамически, т.е. обычно каждый запрос предназначен для всего файла, или каждый запрос предназначен приблизительно для одинакового объема файла отображения (иногда измеряемого по времени, иногда в байтах). Таким образом, если все запросы меньше, то потери на запросы высокие, тогда как если все запросы больше, то это увеличивает шансы событий останова мультимедиа, и/или обеспечения воспроизведения мультимедиа более низкого качества, если выбираются отображения более низкого качества, чтобы избежать необходимости быстро менять отображения, когда меняются сетевые условия.In traditional block combining systems, the quantity requested in each request is not dynamically adjusted, i.e. typically, each request is for the entire file, or each request is for approximately the same size of the display file (sometimes measured in time, sometimes in bytes). Thus, if all requests are smaller, then the loss on requests is high, whereas if all requests are larger, this increases the chances of media stop events, and / or providing lower quality media playback if lower quality displays are selected to avoid the need for fast Change displays when network conditions change.

Примером условия, которое при выполнении может заставить последующие запросы обращаться к нескольким блокам, является пороговая величина размера буфера, Bcurrent. Если Bcurrent ниже пороговой величины, то каждый выданный запрос обращается к одиночному блоку. Если Bcurrent больше либо равен пороговой величине, то каждый выданный запрос обращается к нескольким блокам. Если выдается запрос, который обращается к нескольким блокам, тогда количество запрошенных блоков в каждом одиночном запросе может определяться одним из нескольких возможных способов. Например, количество может быть постоянным, например, два. В качестве альтернативы, количество запрошенных блоков в одиночном запросе может зависеть от состояния буфера, и в частности, от Bcurrent. Например, можно установить некоторое количество пороговых величин, при этом количество запрошенных блоков в одиночном запросе выводится из наибольшей среди нескольких пороговых величин, которая меньше Bcurrent.An example of a condition that, when executed, can cause subsequent requests to access multiple blocks is a buffer size threshold, B current . If B current is below the threshold value, then each issued request refers to a single block. If B current is greater than or equal to the threshold value, then each issued request refers to several blocks. If a request is issued that refers to several blocks, then the number of requested blocks in each single request can be determined in one of several possible ways. For example, the amount may be constant, for example, two. Alternatively, the number of blocks requested in a single request may depend on the state of the buffer, and in particular, on B current . For example, you can set a number of thresholds, while the number of blocks requested in a single request is derived from the largest among several thresholds that is less than B current .

Другим примером условия, которое при выполнении может заставить запросы обращаться к нескольким блокам, является переменное значение State, описанное выше. Например, когда State является «Устойчивым» или «Полным», то запросы могут выдаваться в отношении нескольких блоков, но когда State является «Низким», то все запросы могут быть в отношении одного блока.Another example of a condition that, when executed, can cause queries to access multiple blocks, is the variable State value described above. For example, when State is “Stable” or “Full”, then requests may be issued for several blocks, but when State is “Low”, then all requests may be for one block.

Другой вариант осуществления показан на Фиг. 16. В этом варианте осуществления, когда нужно выдать следующий запрос (определенный на этапе 1300), текущее значение State и Bcurrent используется для определения размера следующего запроса. Если текущим значением State является «Низкое» или текущим значением State является «Полное», и текущее отображение не является наивысшим имеющимся в наличии (определено на этапе 1310, ответ «Да»), то следующий запрос выбирается коротким, например, точно для следующего блока (блок определен и запрос выполнен на этапе 1320). Логическое обоснование этого состоит в том, что это условия, при которых вероятно, что довольно скоро будет переключение отображений. Если текущим значением State является «Устойчивое» или текущим значением State является «Полное», и текущее отображение является наивысшим имеющимся в наличии (определено на этапе 1310, ответ «Нет»), то длительность последовательных блоков, запрошенных в следующем запросе, выбирается пропорциональной α-доли Bcurrent для некоторого фиксированного α<1 (блоки определены на этапе 1330, запрос выполнен на этапе 1340), например, для α=0,4, если Bcurrent=5 секундам, то следующий запрос может относиться приблизительно к 2 секундам блоков, тогда как если Bcurrent=10 секундам, то следующий запрос может относиться приблизительно к 4 секундам блоков. Одно логическое обоснование этого состоит в том, что в этих условиях могло быть маловероятно, что переключение на новое отображение будет выполнено за количество времени, которое пропорционально Bcurrent.Another embodiment is shown in FIG. 16. In this embodiment, when it is necessary to issue the next request (determined in step 1300), the current value of State and B current is used to determine the size of the next request. If the current State value is “Low” or the current State value is “Full” and the current display is not the highest available (determined at 1310, the answer is “Yes”), then the next request is selected short, for example, for the next block exactly (the block is determined and the request is completed at block 1320). The rationale for this is that these are the conditions under which it is likely that switching of mappings will be pretty soon. If the current State value is “Sustainable” or the current State value is “Full” and the current display is the highest available (determined at step 1310, the answer is “No”), then the duration of consecutive blocks requested in the next request is selected proportional to α -blocks B current for some fixed α <1 (blocks are determined at block 1330, the query is executed at block 1340), for example, for α = 0.4, if B current = 5 seconds, then the next query may refer to approximately 2 seconds of blocks whereas if B current = 10 seconds m, the following query can relate to approximately 4 seconds blocks. One logical rationale for this is that under these conditions it could be unlikely that switching to a new display would be performed in an amount of time that is proportional to B current .

ГИБКАЯ КОНВЕЙЕРНАЯ ОБРАБОТКАFLEXIBLE CONVEYOR PROCESSING

Системы потоковой передачи блоков могут использовать протокол запроса файлов, который имеет в основе конкретный транспортный протокол, например TCP/IP. В начале соединения по TCP/IP или другому транспортному протоколу может потребоваться некоторое значительное время для достижения использования полной имеющейся в наличии полосы пропускания. Это может приводить к «потере при запуске соединения» каждый раз, когда запускается новое соединение. Например, в случае TCP/IP потеря при запуске соединения возникает из-за как времени, затраченного на начальное квитирование связи TCP для установления соединения, так и времени, затраченного на протокол отслеживания перегрузок для достижения полного использования имеющейся в наличии полосы пропускания.Block streaming systems can use the file request protocol, which is based on a specific transport protocol, such as TCP / IP. At the beginning of a TCP / IP or other transport protocol connection, it may take some considerable time to reach the full available bandwidth. This can lead to a “loss on connection start” each time a new connection is started. For example, in the case of TCP / IP, a connection startup loss occurs due to both the time taken to initially acknowledge the TCP connection to establish the connection, and the time taken by the congestion tracking protocol to fully utilize the available bandwidth.

В этом случае может быть желательно, выдать несколько запросов с использованием одиночного соединения, чтобы снизить частоту, с которой вносится потеря при запуске соединения. Однако некоторые протоколы транспортировки файлов, например HTTP, не предусматривают механизма для отмены запроса, кроме как в целом закрытия соединения транспортного уровня и тем самым внесения потери при запуске соединения, когда новое соединение устанавливается вместо старого. Может потребоваться отменить выданный запрос, если определяется, что имеющаяся в наличии полоса пропускания изменилась, и вместо этого необходима другая скорость мультимедийных данных, т.е. присутствует решение переключиться на другое отображение. Другой причиной отмены выданного запроса может быть ситуация, если пользователь запросил, чтобы представление мультимедиа закончилось, и началось новое представление (возможно того же элемента контента в другой точке представления или возможно нового элемента контента).In this case, it may be desirable to issue multiple requests using a single connection in order to reduce the frequency with which loss is introduced when the connection starts. However, some file transfer protocols, such as HTTP, do not provide a mechanism for canceling a request, except generally closing the transport layer connection and thereby introducing a loss on connection start when a new connection is established instead of the old one. It may be necessary to cancel the issued request if it is determined that the available bandwidth has changed and a different multimedia data rate is needed instead, i.e. there is a decision to switch to another display. Another reason for canceling a issued request may be if the user requested that the multimedia presentation end and a new presentation begin (possibly the same content item at a different presentation point or possibly a new content item).

Как известно, потери при запуске соединения можно избежать, поддерживая соединение открытым и повторно используя то же соединение для последующих запросов, и, как также известно, соединение можно поддерживать используемым полностью, если несколько запросов выдаются одновременно по одному и тому же соединению (методика, известная как «конвейерная обработка» в контексте HTTP). Однако недостатком выдачи нескольких запросов одновременно, или в более общем смысле, таким образом, что несколько запросов выдаются до того, как завершены предыдущие запросы по соединению, может быть то, что соединение тогда предназначается для передачи ответа на те запросы, и поэтому, если становятся желательными изменения, на которые следует выдать запросы, то соединение может быть закрыто, если становится необходимым отменить уже выданные запросы, которые более не нужны.As you know, connection startup losses can be avoided by keeping the connection open and reusing the same connection for subsequent requests, and, as is also known, a connection can be fully used if several requests are issued simultaneously on the same connection (a technique known as "pipelining" in the context of HTTP). However, the drawback of issuing several requests at the same time, or in a more general sense, so that several requests are issued before the previous connection requests are completed, may be that the connection is then intended to transmit a response to those requests, and therefore, if they become if changes to which requests should be made are desirable, then the connection may be closed if it becomes necessary to cancel already issued requests that are no longer needed.

Вероятность того, что выданный запрос нужно отменить, может частично зависеть от длительности интервала времени между выдачей запроса и временем воспроизведения запрошенного блока в том смысле, что когда этот интервал времени большой, высока вероятность того, что выданный запрос нужно отменить (потому что вероятно что имеющаяся в наличии полоса пропускания изменится в течение интервала).The probability that the issued request needs to be canceled may partially depend on the length of the time interval between issuing the request and the playback time of the requested block in the sense that when this time interval is large, it is likely that the issued request needs to be canceled (because it’s likely that the available available bandwidth will change during the interval).

Как известно, некоторые протоколы загрузки файлов обладают свойством, что одиночное лежащее в основе соединение транспортного уровня может использоваться преимущественно для нескольких запросов загрузки. Например, HTTP обладает этим свойством, поскольку повторное использование одиночного соединения для нескольких запросов устраняет «потерю при запуске соединения», описанную выше для запросов кроме первого. Однако, недостаток этого подхода в том, что соединение предназначается для транспортировки запрошенных данных в каждом выданном запросе, и поэтому, если запрос или запросы нужно отменить, то либо соединение может быть закрыто, внося потерю при запуске соединения, когда устанавливается заменяющее соединение, либо клиент может ожидать приема данных, которые более не нужны, внося задержку при приеме последующих данных.As you know, some file upload protocols have the property that a single underlying transport layer connection can be used primarily for multiple download requests. For example, HTTP has this property because reusing a single connection for multiple requests eliminates the “loss on connection start” described above for requests other than the first. However, the drawback of this approach is that the connection is designed to transport the requested data in each issued request, and therefore, if the request or requests need to be canceled, either the connection can be closed, causing a loss when the connection starts, when a replacement connection is established, or the client may expect to receive data that is no longer needed, introducing a delay in receiving subsequent data.

Теперь мы опишем вариант осуществления, который сохраняет преимущества повторного использования соединения не внося этот недостаток, и который также дополнительно повышает частоту, с которой соединения могут повторно использоваться.We will now describe an embodiment that retains the advantages of reusing a compound without introducing this disadvantage, and which also further increases the frequency with which the compounds can be reused.

Варианты осуществления систем потоковой передачи блоков, описанные в этом документе, конфигурируются для повторного использования соединения для нескольких запросов без необходимости выделять соединение вначале под конкретный набор запросов. По существу, новый запрос выдается по существующему соединению, когда уже выданные запросы по соединению еще не закончены, но близки к завершению. Одной причиной, чтобы не ждать завершения существующих запросов, является то, что если предыдущие запросы завершаются, то скорость соединения может ухудшиться, т.е. лежащий в основе сеанс TCP может перейти в состояние простоя, или переменная cwnd TCP может существенно уменьшиться, тем самым значительно снижая исходную скорость загрузки нового запроса, выданного по тому соединению. Одной причиной ожидания почти до завершения перед выдачей дополнительного запроса является то, что если новый запрос выдается сильно раньше завершения предыдущих запросов, тогда новый выданный запрос может даже не начаться в течение некоторого существенного периода времени, и может быть так, что в течение этого периода времени перед тем, как начнется новый выданный запрос, решение формировать новый запрос уже более не действительно, например, из-за решения переключить отображения. Таким образом, вариант осуществления клиентов, которые реализуют эту методику, будет выдавать новый запрос по соединению как можно позже без замедления возможностей загрузки соединения.The embodiments of block streaming systems described in this document are configured to reuse a connection for multiple requests without having to first allocate the connection to a specific set of requests. Essentially, a new request is issued over an existing connection when already issued connection requests are not yet completed, but are close to completion. One reason not to wait for the completion of existing requests is that if previous requests are completed, then the connection speed may deteriorate, i.e. the underlying TCP session may go into an idle state, or the cwnd TCP variable may decrease significantly, thereby significantly reducing the initial download speed of a new request issued on that connection. One reason for waiting almost to completion before issuing an additional request is that if a new request is issued much earlier than the completion of previous requests, then the new issued request may not even start for some substantial period of time, and it may be that during this period of time Before a new issued request begins, the decision to form a new request is no longer valid, for example, because of the decision to switch the display. Thus, an embodiment of clients that implement this technique will issue a new connection request as late as possible without slowing down connection loading capabilities.

Способ содержит слежение за количеством принятых байтов по соединению в ответ на последний запрос, выданный по этому соединению, и применение проверки к этому количеству. Это может выполняться путем наличия приемника (или передатчика, если применим), сконфигурированного для слежения и проверки.The method comprises monitoring the number of bytes received on a connection in response to the last request issued on that connection, and applying a check to that number. This can be accomplished by having a receiver (or transmitter, if applicable) configured for tracking and verification.

Если проверка проходит, то по соединению можно выдать дополнительный запрос. Один пример подходящей проверки состоит в том, больше ли количество принятый байтов фиксированной доли размера запрошенных данных. Например, эта доля может составлять 80%. Другой пример подходящей проверки основан на нижеследующем вычислении, как проиллюстрировано на Фиг. 17. При вычислении, пусть R будет оценкой скорости передачи данных соединения, T будет оценкой периода кругового обращения («RTT»), а X будет числовым коэффициентом, который, например, мог быть постоянной, установленной в значение между 0,5 и 2, где оценки R и T обновляются на регулярной основе (обновлены на этапе 1410). Пусть S будет размером данных, запрошенных в последнем запросе, B будет принятым количеством байтов в запрошенных данных (вычислено на этапе 1420).If the check passes, then an additional request can be issued on the connection. One example of a suitable check is whether the number of bytes received is a fixed fraction of the size of the requested data. For example, this proportion may be 80%. Another example of a suitable check is based on the following calculation, as illustrated in FIG. 17. In the calculation, let R be an estimate of the data rate of the connection, T be an estimate of the round-trip period (“RTT”), and X be a numerical coefficient, which, for example, could be a constant set to a value between 0.5 and 2, where the estimates of R and T are updated on a regular basis (updated at step 1410). Let S be the size of the data requested in the last request, B be the received number of bytes in the requested data (calculated at step 1420).

Подходящей проверкой было бы инструктировать приемник (или передатчик, если это применимо) выполнить процедуру оценки неравенства (S-B)<X•R•T (проверено на этапе 1430), и если «Да», то выполнить действие. Например, проверка может проводиться, чтобы увидеть, есть ли другой запрос, готовый к выдаче по соединению (проверено на этапе 1440), и если «Да», то выдать тот запрос по соединению (этап 1450), а если «Нет», тогда процесс возвращается к этапу 1410, чтобы продолжить обновление и проверку. Если результатом проверки на этапе 1430 является «Нет», то процесс возвращается к этапу 1410, чтобы продолжить обновление и проверку.A suitable check would be to instruct the receiver (or transmitter, if applicable) to perform the inequality assessment procedure (S-B) <X • R • T (checked at step 1430), and if “Yes”, then perform the action. For example, a check may be conducted to see if there is another request ready to be issued for the connection (checked at step 1440), and if “Yes”, then issue that connection request (step 1450), and if “No”, then the process returns to step 1410 to continue updating and validating. If the result of the check in step 1430 is “No,” then the process returns to step 1410 to continue updating and checking.

Проверка неравенства на этапе 1430 (выполненная, например, подходящим образом запрограммированными элементами) заставляет каждый последующий запрос выдаваться, когда объем оставшихся данных, которые нужно принять, равен X-кратному объему данных, который можно принять на текущей оцененной скорости приема в одном RTT. В данной области техники известно некоторое количество способов для оценки скорости передачи данных, R, на этапе 1410. Например, скорость передачи данных может оцениваться как Dt/t, где Dt является количеством битов, принятых в предыдущие t секунд, и где t может быть, например, 1 с или 0,5 с либо некоторым другим интервалом. Другим способом является экспоненциальное среднее взвешенное, или фильтр с Бесконечной Импульсной Характеристикой (IIR) первого порядка на входящую скорость передачи данных. В данной области техники известно некоторое количество способов для оценки RTT, T, на этапе 1410.Checking the inequality at step 1430 (performed, for example, by appropriately programmed elements) causes each subsequent request to be issued when the amount of remaining data to be received is equal to X times the amount of data that can be received at the current estimated receive rate in one RTT. A number of methods are known in the art for estimating a data rate, R, at step 1410. For example, a data rate may be estimated as Dt / t, where Dt is the number of bits received in the previous t seconds, and where t may be, for example, 1 s or 0.5 s or some other interval. Another method is an exponential weighted average, or a filter with an Infinite Impulse Response (IIR) of the first order at the incoming data rate. A number of methods are known in the art for estimating RTT, T, at 1410.

Проверка на этапе 1430 может применяться к агрегации всех активных соединений на интерфейсе, как подробнее объясняется ниже.The check in step 1430 can be applied to the aggregation of all active connections on the interface, as explained in more detail below.

Способ дополнительно содержит формирование списка потенциальных запросов, ассоциируя каждый потенциальный запрос с набором подходящих серверов, к которым можно сделать запрос, и упорядочивая список потенциальных запросов в порядке приоритета. Некоторые записи в списке потенциальных запросов могут иметь одинаковый приоритет. Серверы в списке подходящих серверов, ассоциированные с каждым потенциальным запросом, идентифицируются по именам хостов. Каждое имя хоста соответствует набору адресов интернет-протокола, которые можно получить от системы доменных имен, которая общеизвестна. Поэтому каждый возможный запрос в списке потенциальных запросов ассоциируется с набором адресов интернет-протокола, в частности, объединением наборов адресов интернет-протокола, ассоциированных с именами хостов, ассоциированными с серверами, ассоциированными с потенциальным запросом. Всякий раз, когда описанная на этапе 1430 проверка проходит для соединения, и никакой новый запрос еще не выдан по тому соединению, выбирается запрос с наивысшим приоритетом в списках потенциальных запросов, с которыми ассоциируется адрес интернет-протокола у назначения соединения, и этот запрос выдается по соединению. Запрос также удаляется из списка потенциальных запросов.The method further comprises forming a list of potential requests, associating each potential request with a set of suitable servers to which a request can be made, and arranging the list of potential requests in priority order. Some entries in the list of potential queries may have the same priority. Servers in the list of matching servers associated with each potential request are identified by hostnames. Each host name corresponds to a set of Internet Protocol addresses that can be obtained from a domain name system that is well known. Therefore, each possible request in the list of potential requests is associated with a set of Internet protocol addresses, in particular, by combining sets of Internet protocol addresses associated with host names associated with servers associated with a potential request. Whenever the check described in step 1430 passes for the connection and no new request has yet been issued on that connection, the request with the highest priority is selected in the lists of potential requests with which the Internet protocol address is associated with the destination of the connection, and this request is issued by connection. The request is also removed from the list of potential requests.

Потенциальные запросы могут удаляться (отменяться) из списка потенциальных запросов, новые запросы могут добавляться в список кандидатов с приоритетом, который выше уже существующих запросов в списке кандидатов, и существующие запросы в списке кандидатов могут менять свой приоритет. Динамический характер запросов, которые находятся в списке потенциальных запросов, и динамический характер их приоритета в списке кандидатов могут изменять то, какие запросы могут выдаваться следующими, в зависимости от того, когда проходит проверка типа, описанного на этапе 1430.Potential requests can be deleted (canceled) from the list of potential requests, new requests can be added to the list of candidates with a priority that is higher than already existing requests in the list of candidates, and existing requests in the list of candidates can change their priority. The dynamic nature of the queries that are in the list of potential queries, and the dynamic nature of their priority in the candidate list can change which queries may be issued next, depending on when the type check described in step 1430 passes.

Например, возможно, что если ответом на проверку, описанную на этапе 1430, является «Да» в некоторый момент t, то следующим выданным запросом был бы запрос A, тогда как если ответом на проверку, описанную на этапе 1430, не является «Да» до некоторого момента t'>t, то следующим выданным запросом вместо этого был бы запрос B, потому что либо запрос A был удален из списка потенциальных запросов между моментом t и t', либо потому что запрос B был добавлен в список потенциальных запросов с более высоким приоритетом, чем запрос A, между моментом t и t', или потому что запрос B был в списке кандидатов в момент t, но с меньшим приоритетом, чем запрос A, и между моментом t и t' приоритет запроса B сделали выше, чем у запроса A.For example, it is possible that if the response to the verification described in step 1430 is “Yes” at some point t, then the next query issued would be query A, whereas if the response to the verification described in step 1430 is not “Yes” until some moment t '> t, then the next query issued would instead be query B, because either query A was removed from the list of potential queries between time t and t', or because query B was added to the list of potential queries with more higher priority than query A, between time t and t ', or because then the request B was on the list of candidates at time t, but with a lower priority than the request A, and between the time t and t 'B priority request made higher than the query A.

Фиг. 18 иллюстрирует пример списка запросов в списке кандидатов запросов. В этом примере имеются три соединения, и имеются шесть запросов в списке кандидатов, обозначенные A, B, C, D, E и F. Каждый из запросов в списке кандидатов может выдаваться по подмножеству соединений как указано, например, запрос A может выдаваться по соединению 1, тогда как запрос F может выдаваться по соединению 2 или соединению 3. Приоритет каждого запроса также обозначается на Фиг. 18, и меньшее значение приоритета указывает на то, что запрос имеет больший приоритет. Таким образом, запросы A и B с приоритетом 0 являются запросами наивысшего приоритета, тогда как запрос F со значением приоритета 3 является наименьшим приоритетом среди запросов в списке кандидатов.FIG. 18 illustrates an example of a query list in a query candidate list. In this example, there are three connections, and there are six queries in the candidate list, indicated by A, B, C, D, E, and F. Each of the queries in the candidate list can be issued on a subset of the connections as indicated, for example, query A can be issued on the connection 1, while request F may be issued on connection 2 or connection 3. The priority of each request is also indicated in FIG. 18, and a lower priority value indicates that the request has a higher priority. Thus, requests A and B with priority 0 are requests of the highest priority, while request F with a priority value of 3 is the lowest priority among requests in the candidate list.

Если в этот момент времени t соединение 1 проходит проверку, описанную на этапе 1430, то либо запрос A, либо запрос B выдается по соединению 1. Если вместо этого соединение 3 проходит проверку, описанную на этапе 1430 в это время t, то запрос D выдается по соединению 3, поскольку запрос D является запросом с наивысшим приоритетом, который может быть выдан по соединению 3.If at this point in time t connection 1 passes the test described in step 1430, then either request A or request B is issued on connection 1. If instead, connection 3 passes the test described in step 1430 at this time t, then request D is issued on connection 3, since the request D is the request with the highest priority that can be issued on connection 3.

Предположим, что для всех соединений ответом на проверку, описанную на этапе 1430, с момента t до некоторого более позднего момента t' является «Нет», и между моментом t и t' запрос A меняет свой приоритет с 0 на 5, запрос B удаляется из списка кандидатов, и новый запрос G с приоритетом 0 добавляется в список кандидатов. Тогда, в момент t', новый список кандидатов может быть таким, как показан на Фиг. 19.Assume that for all connections, the response to the test described in step 1430, from time t to some later point t 'is "No", and between time t and t', request A changes its priority from 0 to 5, request B is deleted from the list of candidates, and a new query G with priority 0 is added to the list of candidates. Then, at time t ′, the new candidate list may be as shown in FIG. 19.

Если в момент t' соединение 1 проходит проверку, описанную на этапе 1430, то запрос C с приоритетом 4 выдается по соединению 1, поскольку это запрос наивысшего приоритета в списке кандидатов, который может быть выдан по соединению 1 в данный момент времени.If at time t ′, connection 1 passes the test described in step 1430, then request C with priority 4 is issued on connection 1, since this is the highest priority request in the candidate list that can be issued on connection 1 at a given time.

Предположим в той же самой ситуации, что вместо этого был бы выдан запрос A по соединению 1 в момент t (который был одним из двух вариантов с наивысшим приоритетом для соединения 1 в момент t, как показано на Фиг. 18). Поскольку ответом на проверку, описанную на этапе 1430, с момента t до некоторого более позднего момента t' является «Нет» для всех соединений, соединение 1 по-прежнему передает данные по меньшей мере до момента t' для запросов, выданных перед моментом t, и соответственно запрос A не начался бы по меньшей мере до момента t'. Выдача запроса C в момент t' является лучшим решением, нежели выдача запроса A в момент t, поскольку запрос C начинается в тот же момент после t', когда начинался бы запрос A, и поскольку к тому времени запрос C имеет более высокий приоритет, чем запрос A.Assume in the same situation that instead, a request A would be issued for connection 1 at time t (which was one of the two options with the highest priority for connection 1 at time t, as shown in Fig. 18). Since the response to the check described in step 1430, from time t to some later point t ′ is “No” for all connections, connection 1 still transmits data at least until time t ′ for requests issued before time t, and accordingly, request A would not start at least until t '. Issuing a request C at time t 'is a better solution than issuing a request A at time t, because request C starts at the same time after t' when request A started, and since by that time request C has a higher priority than request A.

В качестве другой альтернативы, если проверка типа, описанного на этапе 1430, применяется к агрегации активных соединений, то может быть выбрано соединение, которое имеет назначение, чей адрес интернет-протокола ассоциируется с первым запросом в списке потенциальных запросов или с другим запросом с таким же приоритетом, как упомянутый первый запрос.As another alternative, if the type check described in step 1430 is applied to the aggregation of active connections, then a connection that has a destination whose Internet Protocol address is associated with the first request in the list of potential requests or with another request with the same priority, as mentioned first request.

Некоторое количество способов возможно для формирования списка возможных запросов. Например, список кандидатов может содержать n запросов, представляющих запросы следующих n частей данных текущего отображения в представлении в порядке временной последовательности, где запрос самой ранней части данных имеет наивысший приоритет, а запрос самой поздней части данных имеет наименьший приоритет. В некоторых случаях n может быть единицей. Значение n может зависеть от размера буфера Bcurrent, переменной State или другой меры состояния занятости буфера клиента. Например, можно задать некоторое количество пороговых значений для Bcurrent и значение, ассоциированное с каждой пороговой величиной, и тогда значение n берется как значение, ассоциированное с наибольшей пороговой величиной, которая меньше Bcurrent.A number of ways are possible for forming a list of possible queries. For example, a candidate list may contain n queries representing queries of the next n pieces of data of the current display in a time-order view, where a query of the earliest data part has the highest priority and a request of the latest data part has the lowest priority. In some cases, n may be one. The value of n may depend on the size of the buffer B current , the State variable, or another measure of the state of the busy buffer of the client. For example, you can specify a number of threshold values for B current and the value associated with each threshold value, and then the value n is taken as the value associated with the largest threshold value that is less than B current .

Описанный выше вариант осуществления гарантирует гибкое распределение запросов по соединениям, гарантируя, что предпочтение отдается повторному использованию существующего соединения, даже если запрос наивысшего приоритета не подходит для того соединения (потому что IP адрес назначения соединения не тот, который распределен любому из имен хостов, ассоциированных с запросом). Зависимость n от Bcurrent или State или другой меры занятости буфера клиента гарантирует, что такие запросы «вне порядка приоритета» не выдаются, когда клиенту нужно срочно выдать и завершить запрос, ассоциированный со следующей частью данных, которую нужно воспроизвести во временной последовательности.The embodiment described above guarantees flexible distribution of requests across connections, ensuring that reuse of an existing connection is preferred even if the highest priority request is not suitable for that connection (because the destination IP address of the connection is not the one allocated to any of the host names associated with request). The dependence of n on B current or State or another measure of client buffer busyness ensures that such requests are not “out of order of priority” when the client urgently needs to issue and complete a request associated with the next piece of data that needs to be reproduced in a time sequence.

Эти способы преимущественно могут объединяться с совместным HTTP и FEC.These methods can advantageously be combined with joint HTTP and FEC.

СОГЛАСОВАННЫЙ ВЫБОР СЕРВЕРАAGREED SERVER SELECTION

Как общеизвестно, файлы для загрузки с использованием протокола загрузки файла обычно идентифицируются по идентификатору, содержащему имя хоста и имя файла. Например, это случай для протокола HTTP, и в этом случае идентификатором является унифицированный идентификатор ресурса (URI). Имя хоста может соответствовать нескольким хостам, идентифицированным адресами интернет-протокола. Например, это общий способ распределения нагрузки запросов от нескольких клиентов по несколькими физическим машинам. В частности, этот подход обычно применяется сетями передачи контента (CDN). В этом случае запрос, выданный по соединению любому из физических хостов, предполагается достигшим цели. Известно некоторое количество способов, с помощью которых клиент может выбирать из адресов интернет-протокола, ассоциированных с именем хоста. Например, эти адреса обычно обеспечиваются клиенту посредством системы доменных имен и обеспечиваются в порядке приоритета. Клиент может тогда выбрать адрес интернет-протокола с наивысшим приоритетом (первый). Однако обычно отсутствует координация между клиентами в отношении того, как осуществляется этот выбор, в результате чего разные клиенты могут запрашивать один и тот же файл у разных серверов. Это может привести к одинаковому файлу, сохраненному в кэше нескольких ближайших серверов, что снижает эффективность инфраструктуры кэша.As is well known, files for downloading using the file upload protocol are usually identified by an identifier containing the host name and file name. For example, this is the case for the HTTP protocol, in which case the identifier is a Unified Resource Identifier (URI). A host name can correspond to several hosts identified by Internet Protocol addresses. For example, this is a general way to distribute the load of requests from multiple clients across multiple physical machines. In particular, this approach is typically applied by Content Transfer Networks (CDNs). In this case, the request issued on the connection to any of the physical hosts is assumed to have achieved the goal. A number of methods are known by which a client can select from Internet Protocol addresses associated with a host name. For example, these addresses are typically provided to a client through a domain name system and are provided in order of priority. The client can then select the Internet Protocol address with the highest priority (first). However, there is usually no coordination between clients regarding how this choice is made, as a result of which different clients may request the same file from different servers. This can result in the same file being stored in the cache of several nearby servers, which reduces the efficiency of the cache infrastructure.

Это может обрабатываться системой, которая преимущественно увеличивает вероятность того, что два клиента, запрашивающие один и тот же блок, будут запрашивать этот блок у одного и того же сервера. Описанный в этом документе новый способ содержит выбор из числа имеющихся в наличии адресов интернет-протокола способом, определенным идентификатором файла, который нужно запросить, и таким образом, что разные клиенты, которым представлены одинаковые или аналогичные выборы адресов интернет-протокола и идентификаторов файлов, сделают один и тот же выбор.This can be handled by a system that predominantly increases the likelihood that two clients requesting the same block will request this block from the same server. The new method described in this document contains a choice from among the available Internet protocol addresses in a manner determined by the identifier of the file to be requested, and so that different clients who are presented with the same or similar choices of Internet protocol addresses and file identifiers will make one and the same choice.

Первый вариант осуществления способа описан со ссылкой на Фиг. 20. Клиент сначала получает набор адресов интернет-протокола IP1, IP2, …, IPn, как показано на этапе 1710. Если имеется файл, для которого должны быть выданы запросы, как решено на этапе 1720, то клиент определяет адрес интернет-протокола для выдачи запросов в отношении файла, как определено на этапах 1730-1770. Учитывая набор адресов интернет-протокола и идентификатор для файла, который нужно запросить, способ содержит упорядочение адресов интернет-протокола способом, определенным идентификатором файла. Например, для каждого адреса интернет-протокола формируется байтовая строка, содержащая сцепление адреса интернет-протокола и идентификатора файла, как показано на этапе 1730. К этой байтовой строке применяется хэш-функция, как показано на этапе 1740, и результирующие значения хэш-функции конфигурируются в соответствии с фиксированным упорядочением, как показано на этапе 1750, например, увеличивающимся нумерационным порядком, формируя упорядочение в адресах интернет-протокола. Одна и та же хэш-функция может использоваться всеми клиентами, тем самым гарантируя, что одинаковый результат формируется хэш-функцией над заданным вводом от всех клиентов. Хэш-функция может статически конфигурироваться во всех клиентах в наборе клиентов, или все клиенты в наборе клиентов могут получать частичное или полное описание хэш-функции, когда клиенты получают список адресов интернет-протокола, или все клиенты в наборе клиентов могут получать частичное или полное описание хэш-функции, когда клиенты получают идентификатор файла, или хэш-функция может определяться другим способом. Выбирается адрес интернет-протокола, который является первым в этом упорядочении, и этот адрес затем используется для установления соединения и выдачи запросов в отношении всего или частей файла, как показано на этапах 1760 и 1770.A first embodiment of the method is described with reference to FIG. 20. The client first receives a set of Internet Protocol addresses IP 1 , IP 2 , ..., IP n , as shown in step 1710. If there is a file for which requests should be issued, as decided in step 1720, then the client determines the Internet address a protocol for issuing queries regarding a file as determined in steps 1730-1770. Given the set of Internet Protocol addresses and the identifier for the file to be requested, the method comprises arranging the Internet Protocol addresses in a manner determined by the file identifier. For example, for each Internet Protocol address, a byte string is generated containing the concatenation of the Internet Protocol address and the file identifier, as shown in step 1730. A hash function is applied to this byte string, as shown in step 1740, and the resulting values of the hash function are configured in accordance with a fixed ordering, as shown in step 1750, for example, increasing the numbering order, forming an ordering in the addresses of the Internet Protocol. The same hash function can be used by all clients, thereby ensuring that the same result is generated by the hash function over the given input from all clients. The hash function can be statically configured in all clients in the client set, or all clients in the client set can receive a partial or full description of the hash function when clients receive a list of Internet protocol addresses, or all clients in the client set can receive a partial or full description hash functions when clients receive a file identifier, or the hash function may be determined in another way. The Internet Protocol address that is the first in this ordering is selected, and this address is then used to establish a connection and issue requests for all or parts of the file, as shown in steps 1760 and 1770.

Вышеприведенный способ может применяться, когда устанавливается новое соединение для запроса файла. Он также может применяться, когда имеется в наличии некоторое количество установленных соединений, и одно из этих соединений может быть выбрано для выдачи нового запроса.The above method can be applied when a new connection is established to request a file. It can also be used when a number of established connections are available, and one of these connections can be selected to issue a new request.

Кроме того, когда имеется в наличии установленное соединение и запрос может быть выбран из набора потенциальных запросов с равным приоритетом, формируется упорядочение потенциальных запросов, например, по такому же способу значений хэш-функции, описанному выше, и выбирается потенциальный запрос, появляющийся первым в этом упорядочении. Способы могут объединяться для выбора как соединения, так и потенциального запроса среди набора соединений и запросов равного приоритета, снова путем вычисления хэша для каждого сочетания соединения и запроса, упорядочения этих значений хэш-функции в соответствии с фиксированным упорядочением и выбора сочетания, которое возникает первым в упорядочении, сформированном в наборе сочетаний запросов и соединений.In addition, when an established connection is available and the request can be selected from a set of potential requests with equal priority, the ordering of potential requests is formed, for example, using the same method of hash function values described above, and a potential request is selected that appears first in this streamlining. The methods can be combined to select both a connection and a potential request from a set of connections and requests of equal priority, again by calculating the hash for each combination of connection and request, ordering these hash values in accordance with a fixed ordering, and choosing the combination that occurs first in ordering formed in a set of combinations of queries and connections.

Этот способ обладает преимуществом по следующей причине: типичный подход, применяемый обслуживающей инфраструктурой блоков, например, показанной на Фиг. 1 (BSI 101) или Фиг. 2 (BSI 101), и в особенности подход, обычно применяемый CDN, состоит в обеспечении нескольких кэширующих прокси-серверов, которые принимают запросы клиентов. Кэширующему прокси-серверу может не обеспечиваться файл, запрошенный в заданном запросе, и в этом случае такие серверы обычно переадресуют запрос другому серверу, принимают ответ от того сервера, обычно включающий запрошенный файл, и переадресуют ответ клиенту. Кэширующий прокси-сервер также может хранить (кэшировать) запрошенный файл, так что он может ответить немедленно на последующие запросы файла. Описанный выше общий подход обладает таким свойством, что набор файлов, сохраненный на заданном кэширующем прокси-сервере, в значительной степени определяется набором запросов, который принял кэширующий прокси-сервер.This method is advantageous for the following reason: a typical approach taken by the serving block infrastructure, such as shown in FIG. 1 (BSI 101) or FIG. 2 (BSI 101), and in particular the approach commonly used by CDNs, is to provide multiple caching proxies that accept client requests. The caching proxy server may not be provided with the file requested in the given request, in which case such servers usually redirect the request to another server, receive a response from that server, usually including the requested file, and redirect the response to the client. A caching proxy server can also store (cache) the requested file so that it can respond immediately to subsequent file requests. The general approach described above has the property that the set of files stored on a given caching proxy server is largely determined by the set of requests received by the caching proxy server.

Описанный выше способ обладает следующим преимуществом. Если всем клиентам в наборе клиентов обеспечивается один и тот же список адресов интернет-протокола, то эти клиенты будут использовать один и тот же адрес интернет-протокола для всех запросов, выданных для одного и того же файла. Если существует два разных списка адресов интернет-протокола, и каждый клиент снабжается одним из этих двух списков, то клиенты будут использовать не более двух разных адресов интернет-протокола для всех запросов, выданных для одного и того же файла. В общем, если обеспеченные клиентам списки адресов интернет-протокола аналогичны, то клиенты будут использовать небольшой набор обеспеченных адресов интернет-протокола для всех запросов, выданных для одного и того же файла. Поскольку ближайшие клиенты стремятся получить аналогичные списки адресов интернет-протокола, то вероятно, что ближайшие клиенты выдают запросы файла только от небольшой части кэширующих прокси-серверов, доступных тем клиентам. Таким образом, будет только небольшая доля кэширующих прокси-серверов, которые кэшируют файл, что преимущественно минимизирует объем ресурсов кэширования, используемый для кэширования файла.The method described above has the following advantage. If all clients in a set of clients are provided with the same list of Internet protocol addresses, then these clients will use the same Internet protocol address for all requests issued for the same file. If there are two different lists of Internet Protocol addresses, and each client is supplied with one of these two lists, then clients will use no more than two different Internet Protocol addresses for all requests issued for the same file. In general, if the lists of Internet Protocol addresses provided to clients are similar, then clients will use a small set of secured Internet Protocol addresses for all requests issued for the same file. Since immediate clients seek similar Internet Protocol address lists, it is likely that nearby customers only issue file requests from a small fraction of the caching proxies available to those clients. Thus, there will be only a small fraction of the caching proxies that cache the file, which mainly minimizes the amount of caching resources used to cache the file.

Предпочтительно, чтобы хэш-функция обладала свойством, что очень малая доля разных входных данных соотносится с одним и тем же результатом, и что разные входные данные соотносятся с высшей степени случайными результатами, чтобы гарантировать, что для заданного набора адресов интернет-протокола пропорция файлов, для которых заданный один из адресов интернет-протокола является первым в отсортированном списке с помощью этапа 1750, приблизительно одинакова для всех адресов интернет-протокола в списке. С другой стороны, важно, чтобы хэш-функция была детерминированной в том смысле, что для заданного входа результат хэш-функции одинаков для всех клиентов.Preferably, the hash function has the property that a very small fraction of different input data correlates with the same result, and that different input data correlates with highly random results to ensure that for a given set of Internet protocol addresses the proportion of files for which the specified one of the Internet Protocol addresses is the first in the sorted list using step 1750, is approximately the same for all Internet Protocol addresses in the list. On the other hand, it is important that the hash function is deterministic in the sense that for a given input, the result of the hash function is the same for all clients.

Другим преимуществом описанного выше способа является следующее. Предположим, что все клиенты в наборе клиентов обеспечиваются одним и тем же списком адресов интернет-протокола. Вследствие только что описанных свойств хэш-функции вероятно, что запросы разных файлов от этих клиентов будут равномерно распределены по набору адресов интернет-протокола, что в свою очередь означает, что запросы будут распределены равномерно по кэширующим прокси-серверам. Таким образом, ресурсы кэширования, используемые для хранения этих файлов, распределяются равномерно по кэширующим прокси-серверам, и запросы файлов распределяются равномерно по кэширующим прокси-серверам. Таким образом, способ обеспечивает как балансировку хранения, так и балансировку нагрузки по всей инфраструктуре кэширования.Another advantage of the above method is the following. Suppose all clients in a client set are provided with the same list of Internet protocol addresses. Due to the hash functions just described, it is likely that requests for different files from these clients will be evenly distributed over a set of Internet protocol addresses, which in turn means that requests will be distributed evenly across caching proxies. Thus, the caching resources used to store these files are distributed evenly across the caching proxies, and file requests are distributed evenly across the caching proxies. Thus, the method provides both storage balancing and load balancing throughout the caching infrastructure.

Некоторое количество вариаций к описанному выше подходу известно специалистам в данной области техники, и во многих случаях эти вариации сохраняют свойство, что набор файлов, сохраненный на заданном посреднике по меньшей мере частично определяется набором запросов, который принял кэширующий прокси-сервер. В общем случае, в котором заданное имя хоста разделяется на несколько физических кэширующих прокси-серверов, будет обычным явлением, что все эти серверы, в конечном счете, будут хранить копию любого заданного файла, который часто запрашивается. Такое дублирование может быть нежелательным, поскольку ресурсы хранения на кэширующих прокси-серверах ограничены, и в результате файлы могут быть случайно удалены из кэша. Описанный здесь новый способ гарантирует, что запросы в отношении заданного файла направляются кэширующим прокси-серверам таким образом, что это дублирование уменьшается, тем самым уменьшая необходимость удалять файлы из кэша, и тем самым увеличивая вероятность, что любой заданный файл присутствует в кэше посредника (т.е. не удален из него).A number of variations to the above approach are known to those skilled in the art, and in many cases these variations retain the property that the set of files stored on a given broker is at least partially determined by the set of requests that the caching proxy server has accepted. In the general case, in which a given hostname is split into several physical caching proxies, it will be common for all of these servers to ultimately store a copy of any given file that is often requested. Such duplication may be undesirable because the storage resources on the caching proxies are limited, and as a result, files may be accidentally deleted from the cache. The new method described here ensures that requests for a given file are sent to caching proxies so that this duplication is reduced, thereby reducing the need to delete files from the cache, and thereby increasing the likelihood that any given file is present in the intermediary’s cache (t .e. not removed from it).

Когда файл присутствует в кэше посредника, быстрее проходит ответ, отправленный клиенту, что обладает преимуществом в снижении вероятности того, что запрошенный файл поступает позже, что может привести к паузе в воспроизведении мультимедиа и поэтому плохому восприятию пользователя. Более того, когда файл не присутствует в кэше посредника, запрос может отправляться другому серверу, вызывая дополнительную нагрузку как на обслуживающую инфраструктуру, так и сетевые соединения между серверами. Во многих случаях сервер, которому отправляется запрос, может находиться в отдаленном местоположении, и передача файла от этого сервера обратно на кэширующий прокси-сервер может привести к затратам на передачу. Поэтому описанный здесь новый способ приводит к сокращению этих затрат на передачу.When a file is present in the intermediary’s cache, the response sent to the client passes faster, which has the advantage of reducing the likelihood that the requested file arrives later, which can lead to a pause in multimedia playback and therefore poor user experience. Moreover, when the file is not present in the broker's cache, the request can be sent to another server, causing additional load on both the serving infrastructure and network connections between the servers. In many cases, the server to which the request is sent may be located in a remote location, and transferring a file from that server back to the caching proxy server may result in transmission costs. Therefore, the new method described here leads to a reduction in these transmission costs.

ВЕРОЯТНОСТНЫЕ ЗАПРОСЫ ВСЕГО ФАЙЛАPROBABILITY REQUESTS FOR THE WHOLE FILE

Конкретным вопросом в случае, когда протокол HTTP используется с запросами диапазона, является поведение кэш-серверов, которые обычно применяются для обеспечения масштабируемости в обслуживающей инфраструктуре. Хотя для кэш-серверов HTTP может быть общепринятым поддерживать заголовок диапазона HTTP, точное поведение разных кэш-серверов HTTP меняется от реализации. Большинство реализаций кэш-серверов обслуживают запросы диапазона из кэша в случае, когда файл имеется в наличии в кэше. Общая реализация кэш-серверов HTTP всегда переадресует нисходящие запросы HTTP, содержащие заголовок диапазона, вышестоящему узлу, пока у кэш-сервера не будет копии файла (кэш-сервера или первоначального сервера). В некоторых реализациях восходящим ответом на запрос диапазона является весь файл, и этот весь файл кэшируется, и ответ на нисходящий запрос диапазона извлекается из этого файла и отправляется. Однако по меньшей мере в одной реализации восходящим ответом на запрос диапазона являются всего лишь байты данных в самом запросе диапазона, и эти байты данных не кэшируются, а вместо этого отправляются в качестве ответа на нисходящий запрос диапазона. В результате использование заголовков диапазона клиентами может иметь результатом то, что сам файл никогда не заносится в кэши, и желательные свойства масштабируемости сети будут потеряны.The specific issue when HTTP is used with range requests is the behavior of cache servers, which are typically used to provide scalability in the serving infrastructure. Although it may be common for HTTP cache servers to support an HTTP range header, the exact behavior of different HTTP cache servers varies from implementation. Most cache server implementations serve range requests from the cache when the file is available in the cache. A common implementation of HTTP cache servers always redirects downstream HTTP requests containing the range header to the upstream node until the cache server has a copy of the file (cache server or original server). In some implementations, the upstream response to the range request is the entire file, and this entire file is cached, and the response to the downstream range request is retrieved from this file and sent. However, in at least one implementation, the upstream response to the range request is just the data bytes in the range request itself, and these data bytes are not cached, but instead sent as a response to the downstream range request. As a result, the use of range headers by clients can result in the file itself never being cached and the desired scalability properties of the network being lost.

Выше была описана работа кэширующих прокси-серверов, а также был описан способ запроса блоков из файла, который является агрегациями нескольких блоков. Например, этого можно добиться путем использования заголовка запроса диапазона HTTP. Такие запросы в дальнейшем называются «частичными запросами». Теперь будет описан дополнительный вариант осуществления, который обладает преимуществом в случае, когда обслуживающая инфраструктура 101 блоков не обеспечивает полной поддержки заголовка диапазона HTTP. Обычно, серверы в обслуживающей инфраструктуре блоков, например в сети передачи контента, поддерживают частичные запросы, но могут не хранить ответ на частичные запросы в локальном хранилище (кэше). Такой сервер может выполнять частичный запрос путем переадресации запроса другому серверу, пока весь файл не сохранится в локальном хранилище, и в этом случае ответ может отправляться без переадресации запроса другому серверу.The operation of caching proxies was described above, and a method for requesting blocks from a file, which is an aggregation of several blocks, was also described. For example, this can be achieved by using the HTTP range request header. Such queries are hereinafter referred to as “partial queries”. An additional embodiment will now be described, which is advantageous when the serving block infrastructure 101 does not fully support the HTTP range header. Typically, servers in a serving block infrastructure, such as a content transfer network, support partial requests, but may not store the response to partial requests in a local storage (cache). Such a server can perform a partial request by forwarding the request to another server until the entire file is stored in local storage, in which case a response can be sent without forwarding the request to another server.

Система потоковой передачи по запросу блоков, которая применяет новое улучшение агрегации блоков, описанное выше, может плохо работать, если обслуживающая инфраструктура блоков демонстрирует это поведение, поскольку все запросы, являющиеся частичными запросами, будут переадресовываться другому серверу, и никакие запросы не будут обслуживаться кэширующими прокси-серверами, препятствуя, прежде всего цели обеспечения кэширующих прокси-серверов. Во время процесса потоковой передачи по запросу блоков, который описан выше, клиент может в некоторый момент запросить блок, который находится в начале файла.A block-request streaming system that applies the new block aggregation enhancement described above may not work well if the serving block infrastructure exhibits this behavior, since all requests that are partial requests will be redirected to another server and no requests will be served by caching proxies -servers, interfering, first of all, with the goal of providing caching proxy servers. During the streaming process at the request of blocks, which is described above, the client may at some point request a block, which is located at the beginning of the file.

В соответствии с описанным в этом документе новым способом, всякий раз, когда выполняется некоторое условие, такие запросы могут быть преобразованы из запросов в отношении первого блока в файле в запросы всего файла. Когда запрос всего файла принимается кэширующим прокси-сервером, прокси-сервер обычно сохраняет ответ. Поэтому использование этих запросов вынуждает заносить файл в кэш локальных кэширующих прокси-серверов, так что последующие запросы либо полного файла, либо частичные запросы могут обслуживаться непосредственно кэширующим прокси-сервером. Условие может быть таким, что среди набора запросов, ассоциированного с данным файлом, например, набора запросов, сформированного набором клиентов, просматривающих элемент контента, о котором идет речь, условие будет выполняться по меньшей мере для обеспеченной доли этих запросов.In accordance with the new method described in this document, whenever a certain condition is met, such requests can be converted from requests for the first block in a file to requests for the entire file. When the request for the entire file is accepted by the caching proxy server, the proxy server usually saves the response. Therefore, the use of these requests forces the file to be cached by the local caching proxy servers, so that subsequent requests of either the full file or partial requests can be served directly by the caching proxy server. The condition may be such that among the set of requests associated with the given file, for example, the set of requests generated by the set of clients viewing the content item in question, the condition will be satisfied at least for the secured share of these requests.

Примером подходящего условия является то, что случайно выбранное число больше предусмотренной пороговой величины. Эта пороговая величина может задаваться так, что преобразование запроса одиночного блока в запрос всего файла происходит в среднем для обеспеченной доли запросов, например, один раз из десяти (и в этом случае случайное число может выбираться из интервала [0, 1], а пороговой величиной может быть 0,9). Другим примером подходящего условия является то, что хэш-функция, вычисленная по некоторой информации, ассоциированной с блоком, и некоторой информации, ассоциированной с клиентом, принимает одно из предусмотренного набора значений. Этот способ обладает преимуществом в том, что для файла, который часто запрашивается, файл будет занесен кэш локального прокси-сервера, однако работа системы потоковой передачи по запросу блоков не меняется значительно от стандартной работы, при которой каждый запрос предназначен для одиночного блока. Во многих случаях, когда происходит преобразование запроса из запроса одиночного блока в запрос всего файла, процедуры клиента в остальных случаях продолжались бы для запроса других блоков в файле. Если это так, то такие запросы можно остановить, потому что блоки, о которых идет речь, будут приняты в любом случае в результате запроса всего файла.An example of a suitable condition is that a randomly selected number is greater than a predetermined threshold. This threshold value can be set so that the conversion of a single block request to the request of the whole file occurs on average for a secured share of requests, for example, once out of ten (in this case, a random number can be selected from the interval [0, 1], and the threshold value maybe 0.9). Another example of a suitable condition is that the hash function calculated from some information associated with the block and some information associated with the client takes one of the provided set of values. This method has the advantage that for a file that is often requested, the file will be cached by the local proxy server, however, the operation of the streaming system upon request of blocks does not change significantly from the standard work, in which each request is intended for a single block. In many cases, when a request is converted from a request for a single block to a request for an entire file, client procedures would otherwise continue to request other blocks in the file. If so, then such requests can be stopped, because the blocks in question will be accepted in any case as a result of requesting the entire file.

Составление URL, формирование списка сегментов и поиск по немуCreating a URL, creating a list of segments and searching for it

Формирование списка сегментов сталкивается с проблемой того, каким образом клиент может сформировать список сегментов из MPD в локальное время NOW конкретного клиента для конкретного отображения, которое начинается в некоторое время начала starttime либо относительно начала представления мультимедиа для случаев по требованию, либо выраженное временем настенных часов. Список сегментов может содержать указатель, например URL, на опциональные исходные метаданные отображения, а также список мультимедийных сегментов. Каждому мультимедийному сегменту могут быть присвоены starttime, длительность и указатель. Starttime обычно выражает приближенное значение времени мультимедиа у содержащегося в сегменте мультимедиа, но не обязательно точное время выборки. Starttime используется клиентом потоковой передачи HTTP для выдачи запроса загрузки в подходящее время. Формирование списка сегментов, включающего время начала каждого, может выполняться разными способами. URL могут обеспечиваться в виде списка воспроизведения или правило составления URL может использоваться преимущественно для компактного отображения списка сегментов.Creating a list of segments is faced with the problem of how a client can create a list of segments from MPD at the local NOW time of a particular client for a specific display that starts at some starttime starttime, either relative to the beginning of the multimedia presentation for cases on demand, or expressed by the wall clock time. The list of segments can contain a pointer, for example, a URL, to the optional source display metadata, as well as a list of multimedia segments. Each media segment can be assigned starttime, duration, and a pointer. Starttime usually expresses the approximate value of the media time contained in the media segment, but not necessarily the exact sampling time. Starttime is used by the HTTP streaming client to issue a download request at the appropriate time. Creating a list of segments, including the start time of each, can be performed in different ways. URLs can be provided as a playlist, or a URL rule can be used primarily to compactly display a list of segments.

Список сегментов на основе составления URL может, например, выполняться, если MPD сигнализирует это с помощью определенного атрибута или элемента, например FileDynamicInfo или эквивалентного сигнала. Обобщенный способ формирования списка сегментов из составления URL приведен ниже в разделе «Обзор составления URL». Составление на основе списка воспроизведения может, например, сигнализироваться с помощью другого сигнала. Поиск по списку сегментов и попадание в точное время мультимедиа также преимущественно реализуется в этом контексте.A list of segments based on URL compilation can, for example, be executed if the MPD signals this using a specific attribute or element, for example FileDynamicInfo or an equivalent signal. A generalized way to create a list of segments from URL compilation is given in the section called “URL Compilation Overview” below. Playlist-based compilation may, for example, be signaled by another signal. Searching through a list of segments and getting into the exact time of multimedia is also predominantly implemented in this context.

ОБЗОР КОНСТРУКТОРА URLURL DESIGN OVERVIEW

Как описано выше, в одном варианте осуществления настоящего изобретения может быть предусмотрен файл метаданных, содержащий правила составления URL, которые позволяют клиентским устройствам составлять идентификаторы файлов для блоков представления. Теперь будет описано дополнительное новое улучшение в системе потоковой передачи по запросу блоков, которое предусматривает изменения в файле метаданных, включающие в себя изменения в правилах составления URL, изменения в количестве имеющихся в наличии кодирований, изменения в метаданных, ассоциированных с имеющимися в наличии кодированиями, например скорость передачи данных, соотношение сторон, разрешение, аудио или видео кодек или параметры кодеков, или другие параметры.As described above, in one embodiment of the present invention, a metadata file may be provided that contains URL composition rules that allow client devices to compile file identifiers for presentation units. Now an additional new improvement will be described in the block-based streaming system, which includes changes to the metadata file, including changes to the rules for creating URLs, changes to the number of encodings available, changes to the metadata associated with available encodings, for example data transfer rate, aspect ratio, resolution, audio or video codec or codec parameters, or other parameters.

В этом новом улучшении могут быть предусмотрены дополнительные данные, ассоциированные с каждым элементом файла метаданных, указывающие интервал времени в общем представлении. В этом интервале времени элемент может считаться действительным, а в противном случае элемент можно игнорировать. Кроме того, синтаксис метаданных можно улучшить, так что элементы, которым ранее разрешено появляться только один раз или не более одного раза, могут появляться несколько раз. В этом случае может применяться дополнительное ограничение, которое предусматривает, что для таких элементов заданные интервалы времени должны быть непересекающимися. В любой заданный момент времени, рассмотрение только элементов, чей интервал времени содержит заданный момент времени, приводит к файлу метаданных, который соответствует первоначальному синтаксису метаданных. Мы называем такие интервалы времени интервалами действительности. Поэтому этот способ предусматривает сигнализацию в одиночном файле метаданных изменений описанного выше вида. Преимущественно, чтобы такой способ мог использоваться для обеспечения представления мультимедиа, которое поддерживает изменения описанного вида в заданных моментах в представлении.In this new enhancement, additional data may be provided associated with each element of the metadata file indicating a time interval in the general representation. In this time interval, the element can be considered valid, otherwise the element can be ignored. In addition, the syntax of metadata can be improved so that elements that were previously allowed to appear only once or no more than once can appear several times. In this case, an additional restriction may be applied, which provides that for such elements, the specified time intervals must be disjoint. At any given point in time, consideration only of elements whose time interval contains a given point in time leads to a metadata file that corresponds to the original metadata syntax. We call such time intervals intervals of reality. Therefore, this method provides for signaling in a single metadata file of changes of the type described above. Advantageously, such a method can be used to provide a multimedia presentation that supports changes to the described view at specified points in the presentation.

КОНСТРУКТОР URLURL CONSTRUCTOR

Как описано в этом документе, общим признаком систем потоковой передачи по запросу блоков является необходимость выдавать клиенту «метаданные», которые идентифицируют имеющиеся в наличии кодирования мультимедиа и обеспечивают информацию, необходимую клиенту для запроса блоков из тех кодирований. Например, в случае HTTP эта информация может содержать URL для файлов, содержащих мультимедийные блоки. Может быть предусмотрен файл списка воспроизведения, который перечисляет URL для блоков для заданного кодирования. Предусмотрены несколько файлов списков воспроизведения, по одному для каждого кодирования, вместе с главным списком воспроизведения списков воспроизведения, который перечисляет списки воспроизведения, соответствующие разным кодированиям. Недостатком этой системы является то, что метаданные могут стать довольно большими и поэтому потребуют некоторое время для запроса, когда клиент начинает поток. Дополнительный недостаток этой системы очевиден в случае контента прямой трансляции, когда файлы, соответствующие блокам мультимедийных данных, формируются «на лету» из мультимедийного потока, который захватывается в реальном масштабе времени (прямая трансляция), например, спортивная прямая трансляция или программа новостей. В этом случае файлы списков воспроизведения могут обновляться каждый раз, когда имеется в наличии новый блок (например, каждые несколько секунд). Клиентские устройства могут многократно вызывать файл списка воспроизведения для определения, имеются ли в наличии новые блоки, и получения их URL. Это может создавать значительную нагрузку на обслуживающую инфраструктуру и в частности означает, что файлы метаданных нельзя кэшировать дольше интервала обновления, который равен размеру блока, который обычно составляет порядка нескольких секунд.As described in this document, a common feature of block-based streaming systems is the need to issue “metadata” to the client that identifies the available multimedia encodings and provides the information the client needs to request blocks from those encodings. For example, in the case of HTTP, this information may contain URLs for files containing multimedia blocks. A playlist file may be provided that lists URLs for blocks for a given encoding. Several playlist files are provided, one for each encoding, together with a main playlist of playlists that lists playlists corresponding to different encodings. The disadvantage of this system is that the metadata can become quite large and therefore take some time to request when the client starts the flow. An additional drawback of this system is obvious in the case of live broadcast content, when files corresponding to multimedia data blocks are generated “on the fly” from a multimedia stream that is captured in real time (live broadcast), for example, a sports live broadcast or a news program. In this case, the playlist files can be updated every time a new block is available (for example, every few seconds). Client devices can repeatedly call a playlist file to determine if new blocks are available and retrieve their URLs. This can create a significant burden on the service infrastructure and, in particular, means that metadata files cannot be cached longer than the update interval, which is equal to the size of the block, which is usually on the order of several seconds.

Одним важным аспектом системы потоковой передачи по запросу блоков является способ, используемый для информирования клиентов об идентификаторах файлов, например URL, которые следует использовать, вместе с протоколом загрузки файла, для запроса блоков. Например, способ, в котором для каждого отображения в представлении предусмотрен файл списка воспроизведения, который перечисляет URL файлов, содержащих блоки мультимедийных данных. Недостаток этого способа состоит в том, что по меньшей мере часть самого файла списка воспроизведения нужно загружать перед тем, как может начаться воспроизведение, увеличивая время переключения каналов и поэтому являясь причиной плохого восприятия пользователя. Для длительного представления мультимедиа с несколькими или многими отображениями список URL файлов может быть большим, и поэтому файл списка воспроизведения может быть большим, дополнительно увеличивая время переключения каналов.One important aspect of a block-request streaming system is the method used to inform clients about file identifiers, such as URLs that should be used, along with a file upload protocol, to request blocks. For example, a method in which for each display in a view a playlist file is provided that lists the URLs of files containing blocks of multimedia data. The disadvantage of this method is that at least part of the playlist file itself needs to be downloaded before playback can begin, increasing the channel switching time and therefore causing a poor user experience. For a long presentation of multimedia with multiple or many displays, the list of file URLs can be large, and therefore the playlist file can be large, further increasing the channel switching time.

Другой недостаток этого способа возникает в случае контента прямой трансляции. В этом случае, полный список URL не становится доступным заранее и файл списка воспроизведения периодически обновляется, когда новые блоки поступают в наличие, и клиенты периодически запрашивают файл списка воспроизведения, чтобы принять обновленную версию. Поскольку этот файл часто обновляется, его нельзя долго хранить на кэширующих прокси-серверах. Это означает, что очень много запросов этого файла будет переадресовано другим серверам и в конечном счете серверу, который формирует файл. В случае популярного представления мультимедиа это может привести к высокой нагрузке на этот сервер и сеть, что в свою очередь может привести к большому времени ответа, а поэтому к большому времени переключения каналов и плохому восприятию пользователя. В худшем случае сервер становится перегруженным, и это приводит к тому, что некоторые пользователи не могут посмотреть представление.Another disadvantage of this method occurs in the case of live content. In this case, the full list of URLs does not become available in advance and the playlist file is periodically updated when new blocks become available, and clients periodically request a playlist file to accept the updated version. Because this file is frequently updated, it cannot be stored on caching proxies for a long time. This means that a lot of requests for this file will be redirected to other servers and ultimately to the server that generates the file. In the case of the popular presentation of multimedia, this can lead to a high load on this server and the network, which in turn can lead to a long response time, and therefore to a large time switching channels and poor user experience. In the worst case, the server becomes overloaded, and this leads to the fact that some users can not see the view.

Желательно при исполнении системы потоковой передачи по запросу блоков избегать наложения ограничений на вид идентификаторов файлов, которые могут использоваться. Причина в том, что некоторое количество соображений может побуждать использование идентификаторов конкретного вида. Например, в случае, когда обслуживающей инфраструктурой блоков является сеть передачи контента, могут существовать соглашения по присваиванию имен файлам или хранению, имеющие отношение к желанию распределить нагрузку хранения или обслуживания по всей сети, или другие требования, которые приводят к конкретным видам идентификатора файла, которые нельзя прогнозировать во время проектирования системы.When executing a streaming system upon request of blocks, it is advisable to avoid imposing restrictions on the type of file identifiers that can be used. The reason is that a number of considerations may encourage the use of identifiers of a particular kind. For example, in the case where the serving infrastructure of the blocks is a content transfer network, there may be file or storage naming conventions related to the desire to distribute the storage or maintenance load across the network, or other requirements that lead to specific types of file identifier that cannot be predicted during system design.

Теперь будет описан дополнительный вариант осуществления, который смягчает вышеупомянутые недостатки наряду с сохранением гибкости для выбора подходящих соглашений по идентификации файлов. В этом способе могут обеспечиваться метаданные для каждого отображения в представлении мультимедиа, содержащие правило составления идентификатора файла. Правило составления идентификатора файла может содержать, например, текстовую строку. Чтобы определить идентификатор файла для заданного блока представления, может быть предусмотрен способ интерпретации правила составления идентификатора файла, причем этот способ содержит определение входных параметров и оценку правила составления идентификатора файла, вместе с входными параметрами. Входные параметры могут включать в себя, например, индекс файла, который нужно идентифицировать, причем первый файл имеет индекс нуля, второй имеет индекс единицы, третий имеет индекс двойки и так далее. Например, если каждый файл занимает одну и ту же продолжительность времени (или приблизительно одну и ту же продолжительность времени), то можно легко определить индекс файла, ассоциированного с любым заданным временем в представлении. В качестве альтернативы, время в представлении, занятое каждым файлом, может обеспечиваться в представлении или версии метаданных.An additional embodiment will now be described that mitigates the aforementioned disadvantages while maintaining the flexibility to select suitable file identification conventions. In this method, metadata for each display in a multimedia representation may be provided containing a rule for compiling a file identifier. A rule for compiling a file identifier may contain, for example, a text string. In order to determine a file identifier for a given presentation block, a method may be provided for interpreting a rule for compiling a file identifier, this method including determining input parameters and evaluating a rule for compiling a file identifier, together with input parameters. The input parameters may include, for example, the index of the file to be identified, the first file having an index of zero, the second having an index of one, the third having an index of two, and so on. For example, if each file takes the same length of time (or approximately the same length of time), then you can easily determine the index of the file associated with any given time in the view. Alternatively, the time in the view occupied by each file may be provided in the view or version of the metadata.

В одном варианте осуществления правило составления идентификатора файла может содержать текстовую строку, которая может содержать некоторые специальные идентификаторы, соответствующие входным параметрам. Способ оценки правила составления идентификатора файла содержит определение позиций специальных идентификаторов в текстовой строке и замену каждого такого специального идентификатора строковым представлением значения соответствующего входного параметра.In one embodiment, the rule for compiling a file identifier may contain a text string that may contain some special identifiers corresponding to input parameters. A method for evaluating a rule for compiling a file identifier comprises determining the positions of special identifiers in a text string and replacing each such special identifier with a string representation of the value of the corresponding input parameter.

В другом варианте осуществления, правило составления идентификатора файла может содержать текстовую строку, соответствующую некоторому языку выражений. Язык выражений содержит определение синтаксиса, которому могут соответствовать выражения на языке, и набор правил для оценивания строки, соответствующей синтаксису.In another embodiment, the rule for compiling the file identifier may comprise a text string corresponding to some expression language. The expression language contains a definition of the syntax that expressions in the language can correspond to, and a set of rules for evaluating the string corresponding to the syntax.

Сейчас будет описан конкретный пример со ссылкой на Фиг. 21 и последующие чертежи. Примером определения синтаксиса для подходящего языка выражений, заданного в дополненной форме Бэкуса-Наура, является показанный на Фиг. 21. Пример правил для оценивания строки, соответствующей правилу вывода <expression> на Фиг. 21, содержит рекурсивное преобразование строки, подчиняющейся правилу вывода <expression> (<expression>), в строку, подчиняющуюся правилу вывода <literal>, следующим образом:A specific example will now be described with reference to FIG. 21 and subsequent drawings. An example of syntax definition for a suitable expression language defined in the Backus-Naur augmented form is shown in FIG. 21. An example of rules for evaluating a string corresponding to the output rule <expression> in FIG. 21 contains a recursive conversion of a string obeying an output rule <expression> (<expression>) to a string obeying an output rule <literal> as follows:

<expression>, подчиняющееся правилу вывода <literal>, остается без изменений.<expression>, which obeys the <literal> inference rule, remains unchanged.

<expression>, подчиняющееся правилу вывода <variable>, заменяется значением переменной, идентифицированной строкой <token> в правиле вывода <variable>.An <expression> that obeys the <variable> inference rule is replaced by the value of the variable identified by the <token> line in the <variable> inference rule.

<expression>, подчиняющееся правилу вывода <function>, оценивается путем оценивания каждого из его аргументов в соответствии с этими правилами и применения преобразования к этим аргументам, зависящего от элемента <token> в правиле вывода <function>, как описано ниже.An <expression> that obeys the <function> inference rule is evaluated by evaluating each of its arguments in accordance with these rules and applying a transformation to these arguments, depending on the <token> element in the <function> inference rule, as described below.

<expression>, подчиняющееся последней альтернативе правила вывода <expression>, оценивается путем оценивания двух элементов <expression> и применения операции к этим аргументам, зависящей от элемента <operator> последней альтернативы правила вывода <expression>, как описано ниже.An <expression> that obeys the last alternative of the <expression> inference rule is evaluated by evaluating the two <expression> elements and applying an operation to these arguments, depending on the <operator> element of the last alternative of the <expression> inference rule, as described below.

В описанном выше способе предполагается, что оценка происходит в контексте, в котором можно задать множество переменных. Переменная является парой (имя, значение), где «имя» является строкой, подчиняющейся правилу вывода <token>, а «значение» является строкой, подчиняющейся правилу вывода <literal>. Некоторые переменные могут задаваться вне процесса оценки перед тем, как начинается оценка. Другие переменные могут задаваться в самом процессе оценки. Все переменные являются «глобальными» в том смысле, что только одна переменная существует с каждым возможным «именем».The method described above assumes that the assessment occurs in a context in which a plurality of variables can be defined. A variable is a pair (name, value), where “name” is a string obeying the <token> output rule, and “value” is a string obeying the <literal> output rule. Some variables may be set outside the evaluation process before the evaluation begins. Other variables may be set in the evaluation process itself. All variables are “global” in the sense that only one variable exists with every possible “name”.

Примером функции является функция «printf». Эта функция принимает один или более аргументы. Первый аргумент может подчиняться правилу вывода <string> (в дальнейшем «строка»). Функция printf оценивает преобразованную версию первого аргумента. Примененное преобразование является таким же, как функция «printf» в стандартной библиотеке языка C, с дополнительными аргументами, включенными в правило вывода <function>, поставляющее дополнительные аргументы, ожидаемые функцией printf в стандартной библиотеке языка C.An example of a function is the printf function. This function takes one or more arguments. The first argument may obey the output rule <string> (hereinafter referred to as the "string"). The printf function evaluates the converted version of the first argument. The conversion used is the same as the “printf” function in the C standard library, with additional arguments included in the <function> output rule, which supplies the additional arguments expected by the printf function in the C standard library.

Другим примером функции является функция «hash». Эта функция принимает два аргумента, первый из которых может быть строкой, а второй может подчиняться правилу вывода <number> (в дальнейшем «число»). Функция «hash» применяет хэш-алгоритм к первому аргументу и возвращает результаты, которые являются неотрицательным целым числом меньше второго аргумента. Пример подходящей хэш-функции задается в функции на языке C, показанной на Фиг. 22, чьими аргументами является входная строка (исключая окружающие кавычки) и числовое входное значение. Другие примеры хэш-функции хорошо известны специалистам в данной области техники.Another example of a function is the hash function. This function takes two arguments, the first of which can be a string, and the second can obey the output rule <number> (hereinafter “number"). The hash function applies a hash algorithm to the first argument and returns results that are a non-negative integer less than the second argument. An example of a suitable hash function is defined in a C function shown in FIG. 22, whose arguments are the input string (excluding surrounding quotes) and a numeric input value. Other examples of hash functions are well known to those skilled in the art.

Другим примером функции является функция «Subst», которая принимает один, два или три строковых аргумента. В случае, когда подается один аргумент, результатом функции «Subst» является первый аргумент. В случае, когда подаются два аргумента, результат функции «Subst» вычисляется путем удаления любых вхождений второго аргумента (исключая окружающие кавычки) в первом аргументе и возвращения измененного таким образом первого аргумента. В случае, когда подаются три аргумента, результат функции «Subst» вычисляется путем замены любых вхождений второго аргумента (исключая окружающие кавычки) в первом аргументе с третьим аргументом (исключая окружающие кавычки) и возвращения измененного таким образом первого аргумента.Another example of a function is the Subst function, which takes one, two, or three string arguments. In the case where one argument is supplied, the result of the Subst function is the first argument. In the case when two arguments are supplied, the result of the “Subst” function is calculated by removing any occurrences of the second argument (excluding surrounding quotes) in the first argument and returning the first argument changed in this way. In the case when three arguments are supplied, the result of the “Subst” function is calculated by replacing any occurrences of the second argument (excluding surrounding quotes) in the first argument with the third argument (excluding surrounding quotes) and returning the first argument changed in this way.

Некоторыми примерами операторов являются операторы сложения, вычитания, деления, умножения и деления по модулю, идентифицированные правилами вывода <operator> ‘+’, ‘-‘, ‘/’, ‘*’, ‘%’ соответственно. Эти операторы требуют, чтобы правила вывода <expression> либо сторона правила вывода <operator> оценивались числами. Оценка оператора содержит применение подходящей арифметической операции (сложение, вычитание, деление, умножение и деление по модулю соответственно) к этим двум числам обычным способом и возвращение результата в виде, соответствующем правилу вывода <number>.Some examples of operators are the addition, subtraction, division, multiplication and modulo operators, identified by the output rules <operator> ‘+’, ‘-‘, ‘/’, ‘*’, ‘%’, respectively. These operators require that the inference rules <expression> or the side of the inference rule <operator> be evaluated with numbers. The operator estimate contains the application of a suitable arithmetic operation (addition, subtraction, division, multiplication and modulo division respectively) to these two numbers in the usual way and returning the result in the form corresponding to the output rule <number>.

Другим примером оператора является оператор присвоения, идентифицированный правилом вывода <operator> ‘=’. Этот оператор требует, чтобы левый аргумент оценивался строкой, содержимое которой соответствует правилу вывода <token>. Содержимое строки задается строкой символов в окружающих кавычках. Оператор равенства вызывает присвоение переменной, чьим именем является <token>, равной содержимому левого аргумента, значения, равного результату оценивания правого аргумента. Это значение также является результатом оценивания операторного выражения.Another example of an operator is an assignment operator identified by an output rule <operator> ‘=’. This statement requires that the left argument be evaluated by a string whose contents match the <token> output rule. The contents of the string are specified by the string of characters in the surrounding quotation marks. The equality operator causes the assignment of a variable whose name is <token> to be equal to the contents of the left argument, a value equal to the result of evaluating the right argument. This value is also the result of evaluating the operator expression.

Другим примером оператора является оператор последовательности, идентифицированный правилом вывода <operator> ‘;’. Результатом оценивания этого оператора является правый аргумент. Отметим, что как и в случае всех операторов, оцениваются оба аргумента, и левый аргумент оценивается первым.Another example of a statement is a sequence statement, identified by the output rule <operator> ‘;’. The result of evaluating this operator is the right argument. Note that, as with all operators, both arguments are evaluated, and the left argument is evaluated first.

В одном варианте осуществления этого изобретения идентификатор файла может быть получен путем оценивания правила составления идентификатора файла в соответствии с вышеприведенным правилом с конкретным набором входных переменных, которые идентифицируют необходимый файл. Примером входной переменной является переменная с именем «index» и значением, равным числовому индексу файла в представлении. Другим примером входной переменной является переменная с именем «bitrate» и значением, равным средней скорости передачи данных у необходимой версии представления.In one embodiment of this invention, the file identifier can be obtained by evaluating the rule for compiling the file identifier in accordance with the above rule with a specific set of input variables that identify the desired file. An example of an input variable is a variable with the name “index” and a value equal to the numeric index of the file in the view. Another example of an input variable is a variable with the name “bitrate” and a value equal to the average data rate of the desired version of the view.

Фиг. 23 иллюстрирует некоторые примеры правил составления идентификатора файла, причем входными переменными являются «id», задающая идентификатор для отображения в нужном представлении, и «seq», задающая порядковый номер для файла.FIG. 23 illustrates some examples of the rules for compiling a file identifier, the input variables being “id”, which identifies the identifier to display in the desired representation, and “seq”, which defines the serial number for the file.

Как будет ясно специалистам в данной области техники при прочтении этого раскрытия, возможны многочисленные вариации вышеприведенного способа. Например, могут быть предусмотрены не все описанные выше функции и операторы, или могут быть предусмотрены дополнительные функции или операторы.As will be clear to those skilled in the art upon reading this disclosure, numerous variations of the above method are possible. For example, not all functions and operators described above may be provided, or additional functions or operators may be provided.

ПРАВИЛА СОСТАВЛЕНИЯ URL И РАСПРЕДЕЛЕНИЕ ВО ВРЕМЕНИURL Mapping Rules and Timing

Этот раздел обеспечивает основные правила составления URI для присвоения URI файлу или сегменту, а также времени начала для каждого сегмента в отображении и представлении мультимедиа.This section provides the basic rules for creating a URI for assigning a URI to a file or segment, as well as the start time for each segment in the media display and presentation.

Для этого пункта предполагается наличие описания представления мультимедиа на клиенте.For this item, a description of the media presentation on the client is assumed.

Допустим, что клиент потоковой передачи HTTP воспроизводит мультимедиа, которое загружается в рамках представления мультимедиа. Фактическое время представления клиента HTTP может задаваться относительного того, где находится время представления относительно начала представления. При инициализации может допускаться время представления t=0.Assume that the HTTP streaming client plays media that is loaded as part of the media view. The actual presentation time of the HTTP client can be relative to where the presentation time is relative to the start of the presentation. During initialization, the presentation time t = 0 may be allowed.

В любой момент t, клиент HTTP может загрузить любые данные со временем воспроизведения tP (также относительно начала представления) не более MaximumClientPreBufferTime впереди фактического времени представления t и любые данные, которые необходимы из-за взаимодействия с пользователем, например, поиска, быстрой перемотки вперед, и т.д. В некоторых вариантах осуществления MaximumClientPreBufferTime может даже не задаваться в том смысле, что клиент может загружать данные впереди текущего времени воспроизведения tP без ограничений.At any time t, the HTTP client can load any data with tP playback time (also relative to the start of the presentation) no more than MaximumClientPreBufferTime ahead of the actual presentation time t and any data that is necessary due to user interaction, for example, search, fast forward, etc. In some embodiments, the MaximumClientPreBufferTime may not even be set in the sense that the client can load data ahead of the current tP play time without restrictions.

Клиент HTTP может избежать загрузки ненужных данных, например, любые сегменты из отображений, которые не предполагаются для воспроизведения, обычно можно не загружать.The HTTP client can avoid loading unnecessary data, for example, any segments from mappings that are not intended for playback can usually not be downloaded.

Основным процессом в предоставлении услуг потоковой передачи может быть загрузка данных путем формирования подходящих запросов для загрузки всех файлов/сегментов или подмножества файлов/сегментов, например, с использованием запросов GET HTTP или частичных запросов GET HTTP. Это описание рассматривает то, каким образом обращаться к данным для определенного времени воспроизведения tP, но обычно клиент может загружать данные для большего временного диапазона времени воспроизведения, чтобы избежать неэффективных запросов. Клиент HTTP может минимизировать количество/частоту запросов HTTP при предоставлении услуги потоковой передачи.The main process in providing streaming services can be downloading data by generating suitable requests for downloading all files / segments or a subset of files / segments, for example, using GET HTTP requests or partial GET HTTP requests. This description discusses how to access data for a specific tP play time, but typically a client can download data for a longer play time range to avoid inefficient requests. An HTTP client can minimize the number / frequency of HTTP requests when providing a streaming service.

Для получения доступа к мультимедийным данным во время воспроизведения tP или по меньшей мере близко к времени воспроизведения tP в конкретном отображении клиент определяет URL на файл, который содержит это время воспроизведения, и к тому же определяет байтовый диапазон в файле для доступа к этому времени воспроизведения.To gain access to multimedia data during tP playback, or at least close to tP playback time in a particular display, the client determines the URL to the file that contains this playback time, and also determines the byte range in the file to access this playback time.

Описание представления мультимедиа может присваивать каждому отображению id отображения, r, например, с использованием атрибута RepresentationID. Другими словами, содержимое MPD, когда записывается системой захвата или когда считывается клиентом, будет интерпретироваться так, что существует присвоение. Чтобы загрузить данные для определенного времени воспроизведения tP для определенного отображения с id r, клиент может составить подходящий URI для файла.A media presentation description can assign a display id to each display, r, for example, using the RepresentationID attribute. In other words, the contents of the MPD, when recorded by the capture system or when read by the client, will be interpreted so that an assignment exists. To load data for a specific playback time tP for a specific display with id r, the client can make a suitable URI for the file.

Описание представления мультимедиа может присваивать каждому файлу или сегменту каждого отображения r следующие атрибуты:The media presentation description can assign the following attributes to each file or segment of each display r:

(a) порядковый номер i файла в отображении r, причем i=1, 2, …, Nr, (b) относительное время начала файла с id отображения r и индексом файла i относительно времени представления, заданное как ts(r, i), (c) URI файла для файла/сегмента с id отображения r и индексом файла i, обозначенный как FileURI(r, i).(a) the serial number i of the file in the mapping r, and i = 1, 2, ..., Nr, (b) the relative start time of the file with the display id r and the file index i relative to the presentation time, defined as ts (r, i), (c) The file URI for the file / segment with the display id r and file index i, designated as FileURI (r, i).

В одном варианте осуществления время начала файла и URI файла могут быть обеспечены в явном виде для отображения. В другом варианте осуществления список URI файла может быть предусмотрен в явном виде, причем каждый URI файла получает неотъемлемо присвоенный индекс i в соответствии с позицией в списке, и время начала сегмента выводится как сумма всех длительностей сегментов для сегментов с 1 по i-1. Длительность каждого сегмента может быть обеспечена в соответствии с любым из рассмотренных выше правил. Например, любой специалист в математике может использовать другие способы выведения методологии, чтобы легко вывести время начала из одиночного элемента или атрибута и позиции/индекса URI файла в отображении.In one embodiment, the start time of the file and the file URI can be provided explicitly for display. In another embodiment, the list of file URIs can be provided explicitly, with each file URI receiving an inherently assigned index i according to the position in the list, and the segment start time is displayed as the sum of all segment durations for segments 1 through i-1. The duration of each segment can be provided in accordance with any of the above rules. For example, any specialist in mathematics can use other methods of deriving a methodology to easily infer the start time from a single element or attribute and the position / index of the file URI in the display.

Если динамическое правило составления URI предусмотрено в MPD, то время начала каждого файла, и каждый URI файла могут составляться динамически с использованием правила составления, индекса запрошенного файла и по возможности некоторых дополнительных параметров, предусмотренных в описании представления мультимедиа. Информация может обеспечиваться, например, в атрибутах и элементах MPD, например FileURIPattern и FileInfoDynamic. FileURIPattern обеспечивает информацию о том, как составить URI на основании порядкового номера i индекса файла и id отображения r. FileURIFormat составляется в виде:If a dynamic rule for creating URIs is provided in the MPD, then the start time of each file and each file URI can be generated dynamically using the composition rule, index of the requested file and, if possible, some additional parameters provided in the description of the multimedia presentation. Information can be provided, for example, in attributes and MPD elements, for example FileURIPattern and FileInfoDynamic. FileURIPattern provides information on how to compose a URI based on the index number i of the file index and the display id r. FileURIFormat is composed as:

FileURIFormat=sprintf(«%s%s%s%s%s.%s», BaseURI, BaseFileName,FileURIFormat = sprintf ("% s% s% s% s% s.% S", BaseURI, BaseFileName,

RepresentationIDFormat, SeparatorFormat,RepresentationIDFormat, SeparatorFormat,

FileSequenceIDFormat, FileExtension);FileSequenceIDFormat, FileExtension);

FileURI(r,i) составляется в видеFileURI (r, i) is composed as

FileURI(r,i)=sprintf(FileURIFormat, r, i);FileURI (r, i) = sprintf (FileURIFormat, r, i);

Относительное время начала ts(r, i) для каждого файла/сегмента может выводиться с помощью некоторого атрибута, содержащегося в MPD, описывающего длительность сегментов в этом отображении, например атрибута FileInfoDynamic. MPD также может содержать последовательность атрибутов FileInfoDynamic, которая глобальна для всех отображений в представлении мультимедиа или по меньшей мере для всех отображений в периоде точно так же, как задано выше. Если запрашиваются мультимедийные данные для определенного времени воспроизведения tP в отображении r, то соответствующий индекс i(r, tP) может выводиться в виде i(r, tp), так что время воспроизведения этого индекса находится в интервале времени начала ts(r, i(r, tP)) и ts(r, i(r, tP)+1). Доступ к сегменту может дополнительно ограничиваться вышеупомянутыми случаями, например, сегмент является недоступным.The relative start time ts (r, i) for each file / segment can be displayed using some attribute contained in the MPD that describes the duration of the segments in this display, for example, the FileInfoDynamic attribute. An MPD may also contain a sequence of FileInfoDynamic attributes that is global for all displays in a media view, or at least for all displays in a period, just as defined above. If multimedia data is requested for a specific playback time tP in the display r, then the corresponding index i (r, tP) can be displayed as i (r, tp), so that the playback time of this index is in the interval of the start time ts (r, i ( r, tP)) and ts (r, i (r, tP) +1). Access to the segment may be further limited by the above cases, for example, the segment is not available.

Доступ к точному времени воспроизведения tP, как только получается индекс и URI соответствующего сегмента, зависит от фактического формата сегмента. В этом примере предположим, что мультимедийные сегменты имеют локальную временную шкалу, которая начинается в 0 без потери общности. Чтобы получить доступ к и представить данные во времени воспроизведения tP, клиент может загрузить данные, соответствующие локальному времени, из файла/сегмента, к которому можно получить доступ посредством URI FileURI(r, i), причем i=i(r, tp).Access to the exact playback time tP, as soon as the index and URI of the corresponding segment are obtained, depends on the actual format of the segment. In this example, suppose the multimedia segments have a local timeline that starts at 0 without loss of generality. In order to access and present the data at the tP playback time, the client can download the data corresponding to the local time from a file / segment, which can be accessed using the URI FileURI (r, i), moreover, i = i (r, t p ) .

Как правило, клиенты могут загрузить весь файл и могут затем получить доступ к времени воспроизведения tP. Однако не обязательно загружать всю информацию файла 3GP, так как файл 3GP предусматривает структуры для соотнесения локального распределения во времени с байтовым диапазоном. Поэтому только определенных байтовых диапазонов для доступа к времени воспроизведения tP может быть достаточно для воспроизведения мультимедиа при условии, что имеется в наличии достаточная информация о произвольном доступе. Также достаточная информация о структуре и соотнесении байтового диапазона с локальным распределением во времени мультимедийного сегмента может обеспечиваться в начальной части сегмента, например, с использованием индекса сегмента. Имея доступ к начальным, например, 1200 байтам сегмента, клиент может получить достаточную информацию для прямого доступа к байтовому диапазону, необходимому для времени воспроизведения tP.Typically, clients can download the entire file and can then access the tP play time. However, it is not necessary to download all the information of the 3GP file, since the 3GP file provides structures for correlating the local time distribution with the byte range. Therefore, only certain byte ranges for access to the tP playback time may be sufficient for multimedia playback, provided that sufficient random access information is available. Also, sufficient information about the structure and correlation of the byte range with the local time distribution of the multimedia segment can be provided in the initial part of the segment, for example, using the segment index. Having access to the initial, for example, 1200 bytes of the segment, the client can get enough information for direct access to the byte range necessary for the playback time tP.

В дополнительном примере предположим, что индекс сегмента, по возможности заданный как блок «tidx» ниже, может использоваться для идентификации байтовых смещений необходимого фрагмента или фрагментов. Частичные запросы GET можно сформировать для необходимого фрагмента или фрагментов. Существуют другие альтернативы, например клиент, может выдать стандартный запрос файла и отменить его, когда принят первый блок «tidx».In a further example, suppose that the segment index, possibly given as the tidx block below, can be used to identify the byte offsets of the required fragment or fragments. Partial GET requests can be generated for the required fragment or fragments. There are other alternatives, for example, the client can issue a standard file request and cancel it when the first tidx block is received.

ПОИСКSEARCH

Клиент может попытаться перейти к определенному времени представления tp в отображении. На основе MPD клиент имеет доступ к времени начала мультимедийного сегмента и URL мультимедийного сегмента у каждого сегмента в отображении. Клиент может получить индекс сегмента segment_index у сегмента, вероятнее всего содержащего выборки мультимедиа для времени представления tp, в виде максимального индекса сегмента i, для которого время начала tS(r, i) меньше либо равно времени представления tp, т.е. segment_index=max { i | tS(r, i)<=tp }. URL сегмента получается в виде FileURI(r, i).The client may try to go to a specific presentation time t p in the display. Based on MPD, the client has access to the start time of the multimedia segment and the URL of the multimedia segment for each segment in the display. The client can get the segment index segment_index from the segment most likely containing multimedia samples for the presentation time t p , as the maximum index of the segment i, for which the start time tS (r, i) is less than or equal to the presentation time t p , i.e. segment_index = max {i | tS (r, i) <= t p }. The segment URL is obtained as FileURI (r, i).

Отметим, что информация о распределении во времени в MPD может быть приблизительной из-за проблем, имеющих отношение к размещению Точек Произвольного Доступа, выравниванию дорожек мультимедиа и сдвига распределения во времени мультимедиа. В результате сегмент, идентифицированный по вышеупомянутой процедуре, может начинаться в момент немного после tp, и мультимедийные данные для времени представления tp могут находиться в предыдущем мультимедийном сегменте. В случае поиска либо время поиска может обновляться до равного первому времени выборки у извлеченного файла, либо вместо этого можно извлечь предыдущий файл. Однако отметим, что во время непрерывного воспроизведения, включая случаи, когда имеется переключение между альтернативными отображениями/версиями, все же имеются в наличии мультимедийные данные для времени между tp и началом извлеченного сегмента.Note that the time distribution information in the MPD may be approximate due to problems related to the location of the Random Access Points, the alignment of the media tracks and the shift in the distribution of time over the media. As a result, the segment identified by the aforementioned procedure may begin at the moment just after t p , and the multimedia data for the presentation time t p may be in the previous multimedia segment. In the case of a search, either the search time can be updated to equal the first sampling time of the extracted file, or the previous file can be extracted instead. However, note that during continuous playback, including cases where there is a switch between alternative displays / versions, multimedia data is still available for the time between t p and the beginning of the extracted segment.

Для точного поиска в отношении времени представления tp клиенту потоковой передачи HTTP нужно получить доступ к точке произвольного доступа (RAP). Чтобы определить точку произвольного доступа в мультимедийном сегменте в случае Адаптивной Потоковой Передачи HTTP 3GPP, клиент может использовать, например, информацию в блоке ‘tidx’ или ‘sidx’, если имеется, для определения местоположения точек произвольного доступа и соответствующего времени представления в представлении мультимедиа. В случаях, когда сегмент является фрагментом фильма 3GPP, клиенту также можно использовать информацию в блоках ‘moof’ и ‘mdat’, например, чтобы найти RAP и получить необходимое время представления из информации во фрагменте фильма и время начала сегмента, выведенное из MPD. Если отсутствует RAP с временем представления перед запрошенным временем представления tp, то клиент может либо получить доступ к предыдущему сегменту, либо может использовать лишь первую точку произвольного доступа в качестве результата поиска. Когда мультимедийные сегменты начинаются с RAP, эти процедуры простые.For an accurate search regarding the presentation time t p, the HTTP streaming client needs to access a random access point (RAP). To determine the random access point in the multimedia segment in the case of Adaptive Streaming HTTP 3GPP, the client can use, for example, the information in the 'tidx' or 'sidx' block, if any, to determine the location of the random access points and the corresponding presentation time in the multimedia view. In cases where a segment is a 3GPP movie fragment, the client can also use the information in the 'moof' and 'mdat' blocks, for example, to find the RAP and obtain the necessary presentation time from the information in the movie fragment and the segment start time derived from the MPD. If there is no RAP with a presentation time before the requested presentation time t p , then the client can either access the previous segment, or can use only the first random access point as a search result. When multimedia segments begin with RAP, these procedures are simple.

Также отметим, что не обязательно загружать всю информацию мультимедийного сегмента, чтобы получить доступ к времени представления tp. Клиент может, например, сначала запросить блок ‘tidx’ или ‘sidx’ из начала мультимедийного сегмента, используя запросы байтовых диапазонов. Посредством использования блоков ‘tidx’ или ‘sidx’ распределение во времени сегмента можно соотнести с байтовым диапазоном сегмента. Постоянно используя частичные запросы HTTP, нужно получать доступ только к значимым частям мультимедийного сегмента для улучшенного восприятия пользователя и малых задержек запуска.Also note that it is not necessary to download all the information of the multimedia segment in order to access the presentation time t p . The client may, for example, first request a 'tidx' or 'sidx' block from the beginning of the media segment using byte range requests. By using the 'tidx' or 'sidx' blocks, the time distribution of the segment can be correlated with the byte range of the segment. Constantly using partial HTTP requests, you need to access only the relevant parts of the multimedia segment for improved user experience and low startup delays.

ФОРМИРОВАНИЕ СПИСКА СЕГМЕНТОВFORMING A LIST OF SEGMENTS

Как описано в этом документе, должно быть, очевидно, как реализовать клиента прямой потоковой передачи HTTP, который использует информацию, обеспеченную MPD, для формирования списка сегментов для отображения, которое имеет сигнализированную приблизительную длительность сегмента dur. В некоторых вариантах осуществления, клиент может присваивать мультимедийным сегментам в отображении последовательные индексы i=1, 2, 3, …, т.е. первому мультимедийному сегменту присваивается индекс i=1, второму мультимедийному сегменту присваивается индекс i=2, и так далее. Затем, списку мультимедийных сегментов с индексами i сегментов присваивается startTime[i], и URL[i] формируется, например, следующим образом. Сначала индекс i устанавливается в 1. Время начала первого мультимедийного сегмента получается как 0, startTime[1]=0. URL мультимедийного сегмента i, URL[i], получается как FileURI(r, i). Процесс продолжается для всех описанных мультимедийных сегментов с индексом i, и startTime[i] мультимедийного сегмента i получается как (i-1)*dur, а URL[i] получается как FileURI(r, i).As described in this document, it should be obvious how to implement an HTTP direct streaming client that uses the information provided by MPD to form a list of segments for display, which has an approximate signal duration of the dur segment. In some embodiments, the client may assign consecutive indices i = 1, 2, 3, ... to the multimedia segments in the display, i.e. the first multimedia segment is assigned the index i = 1, the second multimedia segment is assigned the index i = 2, and so on. Then, startTime [i] is assigned to the list of multimedia segments with indexes of i segments, and the URL [i] is generated, for example, as follows. First, the index i is set to 1. The start time of the first multimedia segment is obtained as 0, startTime [1] = 0. The URL of media segment i, URL [i], is obtained as FileURI (r, i). The process continues for all described multimedia segments with index i, and startTime [i] of multimedia segment i is obtained as (i-1) * dur, and URL [i] is obtained as FileURI (r, i).

ОДНОВРЕМЕННЫЕ ЗАПРОСЫ HTTP/TCPSIMULTANEOUS HTTP / TCP REQUESTS

Проблемой в системе потоковой передачи по запросу блоков является желание всегда запрашивать блоки наивысшего качества, которые могут быть приняты полностью вовремя для воспроизведения. Однако скорость поступления данных может быть неизвестна заранее, и поэтому может произойти так, что запрошенный блок не поступает вовремя для воспроизведения. Это приводит к необходимости приостановить воспроизведение мультимедиа, что приводит к плохому восприятию пользователя. Эту проблему можно смягчить с помощью клиентских алгоритмов, которые применяют консервативный подход к выбору блоков для запроса, запрашивая блоки более низкого качества (и поэтому меньшего размера), которые с большей вероятностью будут приняты вовремя, даже если скорость поступления данных снижается во время приема блока. Однако этот консервативный подход обладает недостатком возможной передачи пользователю или устройству назначения воспроизведения более низкого качества, что также является плохим восприятием пользователя. Проблема может усиливаться, когда несколько соединений HTTP используются одновременно для загрузки разных блоков, как описано ниже, поскольку имеющиеся в наличии сетевые ресурсы совместно используются между соединениями и соответственно используются одновременно для блоков с разными временами воспроизведения.A problem in a block-based streaming system is the desire to always request the highest quality blocks that can be received in full on time for playback. However, the data arrival rate may not be known in advance, and therefore, it may happen that the requested unit does not arrive on time for playback. This leads to the need to pause multimedia playback, which leads to poor user experience. This problem can be mitigated by using client algorithms that take a conservative approach to selecting blocks for a query by requesting blocks of lower quality (and therefore smaller size), which are more likely to be received on time, even if the data rate decreases during block reception. However, this conservative approach has the disadvantage of possibly transmitting lower quality playback to the user or destination device, which is also a poor user experience. The problem can be exacerbated when several HTTP connections are used simultaneously to load different blocks, as described below, since the available network resources are shared between the connections and, accordingly, are used simultaneously for blocks with different playback times.

Клиенту может быть выгодно, выдавать запросы в отношении нескольких блоков одновременно, причем в этом контексте «одновременно» означает, что ответы на запросы возникают в перекрывающиеся интервалы времени, и не обязательно происходит так, что запросы выполняются точно или даже приблизительно в одно и то же время. В случае протокола HTTP этот подход может улучшить использование имеющейся в наличии полосы пропускания благодаря поведению протокола TCP (которое общеизвестно). Это может быть особенно важно для улучшения времени переключения контента, поскольку, когда сначала запрашивается новый контент, соответствующие соединения HTTP/TCP, по которым запрашиваются данные для блоков, могут медленно запускаться, и соответственно использование нескольких соединений HTTP/TCP в этот момент может значительно ускорить время передачи данных у первых блоков. Однако запрашивание разных блоков или фрагментов по разным соединениям HTTP/TCP также может привести к ухудшенной производительности, так как запросы блоков, которые нужно воспроизвести первыми, конкурируют с запросами последующих блоков, конкурирующие загрузки HTTP/TCP значительно варьируются по скорости передачи, и соответственно время завершения запроса может быть очень переменным, и обычно невозможно управлять тем, какие загрузки HTTP/TCP будут завершены быстро, а какие медленнее, и соответственно возможно, что по меньшей мере часть времени загрузки HTTP/TCP первых нескольких блоков будут закончены последними, соответственно приводя к большому и переменному времени переключения каналов.It may be beneficial for the client to issue requests for several blocks at the same time, and in this context, “simultaneously” means that answers to requests occur at overlapping time intervals, and it does not necessarily happen that the requests are executed exactly or even approximately at the same time time. In the case of HTTP, this approach can improve the use of available bandwidth due to the behavior of the TCP protocol (which is well known). This can be especially important for improving the switching time of the content, since when new content is first requested, the corresponding HTTP / TCP connections for which data is requested for the blocks can start slowly, and accordingly, the use of several HTTP / TCP connections at this point can significantly speed up data transfer time of the first blocks. However, requesting different blocks or fragments on different HTTP / TCP connections can also lead to poor performance, since the requests of the blocks that need to be played first compete with the requests of subsequent blocks, competing HTTP / TCP downloads vary significantly in transmission speed, and accordingly the completion time the request can be very variable, and it is usually not possible to control which HTTP / TCP downloads will complete quickly and which are slower, and accordingly it is possible that at least part of the time Loading the HTTP / TCP first few blocks are completed last, respectively leading to a large and variable channel switch time.

Предположим, что каждый блок или фрагмент сегмента загружается по отдельному соединению HTTP/TCP, и что количество параллельных соединений равно n, а длительность воспроизведения каждого блока равна t секунд, и что скорость потоковой передачи контента, ассоциированного с сегментом, равна S. Когда клиент сначала начинает потоковую передачу контента, могут выдаваться запросы первых n блоков, представляющие n*t секунд мультимедийных данных.Suppose that each block or fragment of a segment is downloaded over a separate HTTP / TCP connection, and that the number of parallel connections is n, and the playback time of each block is t seconds, and that the streaming speed of the content associated with the segment is S. When the client first starts streaming content, requests for the first n blocks representing n * t seconds of multimedia data may be issued.

Как известно специалистам в данной области техники, имеется большое отклонение в скорости передачи данных у соединений TCP. Однако для упрощения этого обсуждения предположим, что в идеале все соединения происходят параллельно, так что первый блок будет принят полностью примерно в то же время, что и остальные n-1 запрошенные блоки. Для дополнительного упрощения обсуждения, предположим, что агрегированная полоса пропускания, используемая n соединениями загрузки, зафиксирована в значении B для всей продолжительности загрузки, и что скорость потоковой передачи S постоянна во всем отображении. Дополнительно предположим, что структура мультимедийных данных такова, что воспроизведение блока может быть выполнено, когда весь блок имеется в наличии на клиенте, т.е. воспроизведение блока может начаться только после того, как принимается весь блок, например, из-за структуры лежащего в основе кодирования видео, или потому что применяется шифрование для шифрования каждого фрагмента или блока отдельно, и соответственно весь фрагмент или блок нужно принять перед тем, как его можно расшифровать. Таким образом, чтобы упростить обсуждение ниже, мы допускаем, что весь блок нужно принять перед тем, как можно воспроизвести любой из блоков. Тогда время, необходимое перед тем, как поступил и может быть воспроизведен первый блок, приблизительно равно n*t*S/B.As is known to those skilled in the art, there is a large deviation in the data rate of TCP connections. However, to simplify this discussion, suppose that ideally all connections occur in parallel, so that the first block will be received completely at about the same time as the other n-1 requested blocks. To further simplify the discussion, suppose that the aggregate bandwidth used by n download connections is fixed at B for the entire download duration, and that the streaming speed S is constant throughout the display. Additionally, suppose that the structure of the multimedia data is such that reproduction of the block can be performed when the entire block is available on the client, i.e. playback of a block can begin only after the entire block is received, for example, because of the structure of the underlying video encoding, or because encryption is used to encrypt each fragment or block separately, and accordingly the entire fragment or block must be received before it can be decrypted. Thus, in order to simplify the discussion below, we assume that the entire block must be adopted before any of the blocks can be played. Then the time required before the first block is received and can be played is approximately n * t * S / B.

Поскольку желательно минимизировать время переключения контента, с этой целью желательно минимизировать n*t*S/B. Значение t может определяться такими факторами, как лежащая в основе структура кодирования видео и какие способы захвата используются, и соответственно t может быть довольно малым, но очень маленькие значения t приводят к чрезмерно усложненной карте сегмента и, возможно, могут быть несовместимы с эффективным кодированием видео и дешифрованием, если используется. Значение n также может влиять на значение B, т.е. B может быть больше для большего числа n соединений, и соответственно сокращение количества соединений, n, имеет отрицательное побочное действие по возможному уменьшению величины имеющейся в наличии полосы пропускания, которая используется, B, и поэтому может быть неэффективно в достижении цели уменьшения времени переключения контента. Значение S зависит от того, какое отображение выбирается для загрузки и воспроизведения, и в идеале S должно быть как можно ближе к B, чтобы максимизировать качество воспроизведения мультимедиа для заданных сетевых условий. Таким образом, чтобы упростить это обсуждение, предположим, что S приблизительно равно B. Тогда время переключения каналов пропорционально n*t. Таким образом, использование большего количества соединений для загрузки разных фрагментов может ухудшить время переключения каналов, если агрегированная полоса пропускания, используемая соединениями, сублинейно пропорциональна количеству соединений, что обычно имеет место.Since it is desirable to minimize the switching time of the content, it is desirable to minimize n * t * S / B for this purpose. The value of t can be determined by factors such as the underlying video encoding structure and which capture methods are used, and accordingly t can be quite small, but very small values of t lead to an overly complicated segment map and may not be compatible with efficient video encoding and decryption, if used. The value of n can also affect the value of B, i.e. B may be greater for a larger number of n connections, and accordingly, reducing the number of connections, n, has a negative side effect of possibly reducing the amount of available bandwidth that is used, B, and therefore may be ineffective in achieving the goal of reducing content switching time. The value of S depends on which display is selected for download and playback, and ideally, S should be as close to B as possible in order to maximize the quality of multimedia playback for given network conditions. Thus, to simplify this discussion, suppose that S is approximately equal to B. Then the channel switching time is proportional to n * t. Thus, using more connections to load different fragments can degrade channel switching times if the aggregate bandwidth used by the connections is sublinearly proportional to the number of connections, which is usually the case.

В качестве примера предположим t=1 секунде, и при n=1 значение B=500 Кбит/с, при n=2 значение B=700 Кбит/с, а при n=3 значение B=800 Кбит/с. Предположим, что выбирается отображение с S=700 Кбит/с. Тогда при n=1 время загрузки для первого блока равно 1*700/500=1,4 секунды, при n=2 время загрузки для первого блока равно 2*700/700=2 секунды, а n=3 время загрузки для первого блока равно 3*700/800=2,625 секунды. Кроме того, так как количество соединений увеличивается, то, скорее всего, увеличивается непостоянство отдельных скоростях загрузки у соединений (хотя даже при одном соединении вероятна некоторое значительное непостоянство). Таким образом, в этом примере время переключения каналов и непостоянство времени переключения каналов увеличиваются, когда увеличивается количество соединений. Интуитивно блоки, которые передаются, имеют разные приоритеты, т.е. первый блок имеет самый ранний крайний срок передачи, второй блок имеет второй самый ранний крайний срок и т.д., тогда как соединения загрузки, по которым передаются блоки, конкурируют за сетевые ресурсы в течение передачи, и соответственно блоки с самыми ранними крайними сроками больше задерживаются, когда запрашивается больше конкурирующих блоков. С другой стороны, даже в этом случае использование, в конечном счете, более одного соединения загрузки позволяет поддерживать стабильно более высокую скорость потоковой передачи, например, при трех соединениях может поддерживаться скорость потоковой передачи вплоть до 800 Кбит/с в этом примере, тогда как при одном соединении может поддерживаться только поток в 500 Кбит/с.As an example, suppose t = 1 second, and for n = 1 the value is B = 500 Kbit / s, for n = 2 the value is B = 700 Kbit / s, and for n = 3 the value is B = 800 Kbit / s. Suppose that a mapping with S = 700 Kbps is selected. Then, with n = 1, the loading time for the first block is 1 * 700/500 = 1.4 seconds, with n = 2 the loading time for the first block is 2 * 700/700 = 2 seconds, and n = 3 the loading time for the first block equal to 3 * 700/800 = 2.625 seconds. In addition, as the number of connections increases, it is likely that the variability of the individual download speeds of the connections increases (although even with one connection, some significant variability is likely). Thus, in this example, the channel switching time and the variability of the channel switching time increase as the number of connections increases. Intuitively, the blocks that are transmitted have different priorities, i.e. the first block has the earliest transmission deadline, the second block has the second earliest deadline, etc., while the boot connections on which the blocks are transmitted compete for network resources during transmission, and therefore the blocks with the earliest deadlines are longer delayed when more competing blocks are requested. On the other hand, even in this case, the use of, ultimately, more than one download connection allows you to maintain a consistently higher streaming speed, for example, three connections can support streaming speeds up to 800 Kbps in this example, whereas with Only 500 Kbps streams can be supported per connection.

На практике, как отмечалось выше, скорость передачи данных у соединения может быть очень переменной как в пределах одного и того же соединения со временем, так и между соединениями, и в результате n запрошенных блоков обычно не завершаются одновременно, и фактически в большинстве случаев один блок может завершиться в половину времени другого блока. Этот эффект приводит к непредсказуемому поведению, поскольку в некоторых случаях первый блок может завершиться гораздо раньше других блоков, а в других случаях первый блок может завершиться гораздо позже других блоков, и в результате начало воспроизведения в некоторых случаях может возникнуть относительно быстро, а в других случаях может возникать с запозданием. Это непредсказуемое поведение может быть разочаровывающим для пользователя и поэтому может считаться плохим качеством взаимодействия с пользователем.In practice, as noted above, the data transfer speed of a connection can be very variable both within the same connection over time and between connections, and as a result of n requested blocks usually do not complete at the same time, and in fact in most cases one block may end at half the time of another block. This effect leads to unpredictable behavior, because in some cases the first block can end much earlier than other blocks, and in other cases the first block can end much later than other blocks, and as a result, playback can start relatively quickly in some cases, and in other cases may occur late. This unpredictable behavior can be frustrating to the user and therefore can be considered a poor user experience.

Поэтому нужны способы, в которых несколько соединений TCP могут использоваться для улучшения времени переключения каналов и непостоянства во времени переключения каналов, одновременно обеспечивая хорошее качество и возможную скорость потоковой передачи. Также нужны способы, которые допускают регулировку доли имеющейся в наличии полосы пропускания, распределенной каждому блоку, когда приближается время воспроизведения блока, чтобы можно было распределить большую долю имеющейся в наличии полосы пропускания блоку с ближайшим временем воспроизведения, если необходимо.Therefore, methods are needed in which several TCP connections can be used to improve channel switching time and channel variability, while providing good quality and possible streaming speed. Also needed are methods that allow for adjusting the proportion of the available bandwidth allocated to each block when the reproduction time of the block approaches, so that a large proportion of the available bandwidth to the block with the closest playback time can be allocated, if necessary.

СОВМЕСТНОЕ ЗАПРАШИВАНИЕ HTTP/TCPJOINT HTTP / TCP REQUEST

Теперь опишем способы использования одновременных запросов HTTP/TCP совместным образом. Приемник может использовать несколько одновременных совместных запросов HTTP/TCP, например, используя множество запросов байтового диапазона HTTP, причем каждый такой запрос предназначен для части фрагмента в исходном сегменте, или всего фрагмента в исходном сегменте, или части или фрагмента восстановления в сегменте восстановления, или для всех фрагментов восстановления в сегменте восстановления.We now describe how to use concurrent HTTP / TCP requests together. The receiver can use several simultaneous joint HTTP / TCP requests, for example, using multiple HTTP byte range requests, each such request is for a part of a fragment in the source segment, or a whole fragment in the original segment, or a part or fragment of a recovery in a recovery segment, or all recovery fragments in the recovery segment.

Преимущества совместных запросов HTTP/TCP вместе с использованием данных восстановления FEC могут быть особенно важны для обеспечения согласованно быстрых времен переключения каналов. Например, во время переключения каналов, возможно, что соединения TCP либо только что начались, либо простаивают в течении некоторого периода времени, и в этом случае окно перегрузки, cwnd, находится в минимальном значении для соединений, и соответственно скорости передачи у этих соединений TCP потребуется несколько периодов кругового обращения (RTT) для увеличения, и будет иметь место высокое непостоянство в скоростях передачи по разным соединениям TCP в течение этого времени увеличения.The benefits of collaborative HTTP / TCP requests along with the use of FEC recovery data can be especially important for providing consistent, fast channel switching times. For example, during channel switching, it is possible that TCP connections have either just begun or have been idle for some period of time, in which case the congestion window, cwnd, is at a minimum value for connections, and accordingly, the transmission speed of these TCP connections will be required several round-trip periods (RTT) to increase, and there will be high variability in the transmission rates over different TCP connections during this increase time.

Теперь будет приведен обзор способа без FEC, который является способом совместного запроса HTTP/TCP, в котором только мультимедийные данные исходных блоков запрашиваются с использованием нескольких одновременных соединений HTTP/TCP, т.е. не запрашиваются никакие данные восстановления FEC. С помощью способа без FEC, части одного и того же фрагмента запрашиваются по разным соединениям, например, с использованием запросов байтовых диапазонов HTTP для частей фрагмента, и соответственно каждый запрос байтового диапазона HTTP относится, например, к части байтового диапазона, указанной в карте сегмента для фрагмента. Может быть так, что отдельный запрос HTTP/TCP увеличивает свою скорость передачи, чтобы полностью использовать имеющуюся в наличии полосу пропускания, за несколько RTT (периоды кругового обращения), и соответственно имеется относительно длительный период времени, когда скорость передачи меньше имеющейся в наличии полосы пропускания, и соответственно, если одиночное соединение HTTP/TCP используется для загрузки, например, первого фрагмента контента, который нужно воспроизвести, то время переключения каналов может быть большим. Используя способ без FEC, загрузка разных частей одного и того же фрагмента по разным соединениям HTTP/TCP может значительно уменьшить время переключения каналов.Now we will give an overview of the non-FEC method, which is a HTTP / TCP joint request method in which only the multimedia data of the source blocks is requested using several simultaneous HTTP / TCP connections, i.e. No FEC recovery data is requested. Using the non-FEC method, parts of the same fragment are requested over different connections, for example, using HTTP byte range requests for fragment parts, and accordingly each HTTP byte range request relates, for example, to the part of the byte range indicated in the segment map for fragment. It may be that a separate HTTP / TCP request increases its transmission rate in order to make full use of the available bandwidth over several RTT (round-trip periods), and accordingly there is a relatively long period of time when the transmission rate is less than the available bandwidth , and accordingly, if a single HTTP / TCP connection is used to download, for example, the first piece of content that needs to be played, then the channel switching time may be large. Using a method without FEC, downloading different parts of the same fragment over different HTTP / TCP connections can significantly reduce the time of switching channels.

Теперь будет приведен обзор способа с FEC, который является способом совместного запроса HTTP/TCP, в котором мультимедийные данные исходного сегмента и данные восстановления FEC, сформированные из мультимедийных данных, запрашиваются с использованием нескольких одновременных соединений HTTP/TCP. С помощью способа с FEC, части одного и того же фрагмента и данные восстановления FEC, сформированные из того фрагмента, запрашиваются по разным соединениям с использованием запросов байтовых диапазонов HTTP для частей фрагмента, и соответственно каждый запрос байтового диапазона HTTP относится, например, к части байтового диапазона, указанной в карте сегмента для фрагмента. Может быть так, что отдельный запрос HTTP/TCP увеличивает свою скорость передачи, чтобы полностью использовать имеющуюся полосу пропускания, за несколько RTT (периоды кругового обращения), и соответственно имеется относительно длительный период времени, когда скорость передачи меньше имеющейся в наличии полосы пропускания, и соответственно, если одиночное соединение HTTP/TCP используется для загрузки, например, первого фрагмента контента, который нужно воспроизвести, то время переключения каналов может быть большим. Использование способа с FEC имеет такие же преимущества, как и способ без FEC, и обладает дополнительным преимуществом в том, что не все запрошенные данные должны поступить до того, как можно восстановить фрагмент, соответственно дополнительно уменьшая время переключения каналов и непостоянство времени переключения каналов. Делая запросы по разным соединениям TCP и избыточно запрашивая путем запрашивания также данных восстановления FEC по меньшей мере по одному из соединений, количество времени, которое требуется для передачи достаточного объема данных, например, чтобы восстановить первый запрошенный фрагмент, который позволяет начать воспроизведение мультимедиа, можно значительно уменьшить и сделать гораздо более согласованным, чем, если бы не использовались совместные соединения TCP и данные восстановления FEC.An overview will now be given of a method with FEC, which is a joint HTTP / TCP request method in which source segment multimedia data and FEC recovery data generated from multimedia data are requested using multiple simultaneous HTTP / TCP connections. Using the FEC method, parts of the same fragment and FEC recovery data generated from that fragment are requested on different connections using HTTP byte range requests for fragment parts, and accordingly each HTTP byte range request relates, for example, to a byte part range specified in the segment map for the fragment. It may be that a separate HTTP / TCP request increases its transmission rate in order to make full use of the available bandwidth over several RTTs (round-trip periods), and accordingly there is a relatively long period of time when the transmission rate is less than the available bandwidth, and accordingly, if a single HTTP / TCP connection is used to download, for example, the first piece of content to be reproduced, then the channel switching time may be large. Using the method with FEC has the same advantages as the method without FEC, and has the additional advantage that not all the requested data must arrive before the fragment can be restored, thereby further reducing the channel switching time and channel switching time variability. By making requests on different TCP connections and redundantly requesting, by requesting also FEC recovery data for at least one of the connections, the amount of time it takes to transfer enough data, for example, to recover the first requested fragment that allows you to start playing multimedia, can be significantly reduce and make it much more consistent than if you didn’t use shared TCP connections and FEC recovery data.

Фиг. 24(а)-(е) показывают пример колебаний скорости передачи у 5 соединений TCP, работающих на одной и той же линии связи к одному и тому же клиенту от одного и того же web-сервера HTTP в эмулированной сети Развития с Оптимизацией для Данных (EVDO). На Фиг. 24(а)-(е) ось X показывает время в секундах, а ось Y показывает скорость для каждого соединения, с которой биты принимаются на клиенте по каждому из 5 соединений TCP, измеренную с интервалами в 1 секунду. В этой конкретной эмуляции было всего 12 соединений TCP, работающих на этой линии связи, и соответственно сеть была относительно загружена в течение показанного времени, что могло быть типично, когда более одного клиента осуществляют потоковую передачу в одной и той же соте в мобильной сети. Отметим, что хотя скорости передачи отчасти коррелируют со временем, имеется большая разница в скоростях передачи у 5 соединений во множестве моментов времени.FIG. 24 (a) - (e) show an example of fluctuations in the transmission speed of 5 TCP connections operating on the same communication line to the same client from the same HTTP web server in an emulated Development Network with Data Optimization ( EVDO). In FIG. 24 (a) - (e) the X axis shows the time in seconds, and the Y axis shows the speed for each connection at which bits are received on the client for each of the 5 TCP connections, measured at 1 second intervals. In this particular emulation, there were a total of 12 TCP connections operating on this link, and accordingly the network was relatively busy during the time shown, which could be typical when more than one client is streaming in the same cell in the mobile network. Note that although bit rates are partly correlated with time, there is a big difference in bit rates for 5 connections at a multitude of times.

Фиг. 25 показывает возможную структуру запроса в отношении фрагмента, который имеет размер 250,000 бит (приблизительно 31,25 килобайт), причем имеется 4 запроса байтовых диапазонов HTTP, сделанных параллельно для разных частей фрагмента, т.е. первое соединение HTTP запрашивает первые 50,000 бит, второе соединение HTTP запрашивает следующие 50,000 бит, третье соединение HTTP запрашивает следующие 50,000 бит, и четвертое соединение HTTP запрашивает следующие 50,000 бит. Если FEC не используется, т.е. способ без FEC, то в этом примере имеются только 4 запроса фрагмента. Если FEC используется, т.е. способ с FEC, то в этом примере имеется одно дополнительное соединение HTTP, которое запрашивает дополнительные 50,000 бит данных восстановления FEC в сегменте восстановления, сформированных из фрагмента.FIG. 25 shows a possible request structure for a fragment that has a size of 250,000 bits (approximately 31.25 kilobytes), and there are 4 requests for HTTP byte ranges made in parallel for different parts of the fragment, i.e. the first HTTP connection requests the first 50,000 bits, the second HTTP connection requests the next 50,000 bits, the third HTTP connection requests the next 50,000 bits, and the fourth HTTP connection requests the next 50,000 bits. If FEC is not used, i.e. method without FEC, then in this example there are only 4 fragment requests. If FEC is used, i.e. method with FEC, in this example there is one additional HTTP connection that requests an additional 50,000 bits of FEC recovery data in the recovery segment formed from the fragment.

Фиг. 26 является увеличением первой пары секунд у 5 соединений TCP, показанных на Фиг. 24(а)-(е), при этом на Фиг. 26 ось X показывает время в интервалах по 100 миллисекунд, а ось Y показывает скорость, с которой биты принимаются на клиенте по каждому из 5 соединений TCP, измеренную с интервалами по 100 миллисекунд. Одна линия показывает агрегированное количество битов, которое принято на клиенте для фрагмента от первых 4 соединений HTTP (исключая соединение HTTP, по которому запрашиваются данные FEC), т.е. то, что поступает с использованием способа без FEC. Другая линия показывает агрегированное количество битов, которое принято на клиенте для фрагмента от всех 5 соединений HTTP (включая соединение HTTP, по которому запрашиваются данные FEC), т.е. то, что поступает с использованием способа с FEC. Для способа с FEC предполагается, что фрагмент может декодироваться с FEC от приема любых 200,000 бит из 250,000 запрошенных битов, что можно реализовать, если используется, например, код FEC Рида-Соломона, и что можно главным образом реализовать, если используется, например, код RaptorQ, описанный в Luby IV. Для способа с FEC в этом примере принимается достаточно данных для восстановления фрагмента с использованием декодирования FEC после 1 секунды, обеспечивая время переключения каналов в 1 секунду (предполагая, что данные для последующих фрагментов можно запросить и принять до того, как полностью воспроизводится первый фрагмент). Для способа без FEC в этом примере все данные для 4 запросов нужно принять до того, как можно восстановить фрагмент, что происходит после 1,7 секунды, приводя к времени переключения каналов в 1,7 секунды. Таким образом, в показанном на Фиг. 26 примере способ без FEC на 70% хуже в показателях времени переключения каналов, чем способ с FEC. Одной из причин для преимущества, показанного способом с FEC в этом примере, является то, что для способа с FEC прием любых 80% запрошенных данных позволяет восстановить фрагмент, тогда как для способа без FEC необходим прием 100% запрошенных данных. Таким образом, способу без FEC нужно ждать самого медленного соединения TCP для завершения передачи, и вследствие естественных изменений в скорости передачи TCP имеется тенденция к большому расхождению в скорости передачи у самого медленного соединения TCP по сравнению со средним соединением TCP. В способе с FEC в этом примере одно медленное соединение TCP не определяет, когда фрагмент является восстанавливаемым. Вместо этого для способа с FEC передача достаточного количества данных гораздо больше зависит от средней скорости передачи TCP, чем от наихудшего случая скорости передачи TCP.FIG. 26 is an increase in the first pair of seconds in the 5 TCP connections shown in FIG. 24 (a) to (e), wherein in FIG. 26, the X axis shows time in 100 millisecond intervals, and the Y axis shows the rate at which bits are received on the client for each of the 5 TCP connections, measured at 100 millisecond intervals. One line shows the aggregated number of bits that are received on the client for a fragment from the first 4 HTTP connections (excluding the HTTP connection for which FEC data is requested), i.e. what comes in using a non-FEC method. Another line shows the aggregated number of bits that is received on the client for a fragment from all 5 HTTP connections (including the HTTP connection over which FEC data is requested), i.e. what comes in using the FEC method. For the FEC method, it is assumed that a fragment can be decoded with FEC from receiving any 200,000 bits out of 250,000 requested bits, which can be implemented if, for example, the Reed-Solomon FEC code is used, and which can mainly be realized if, for example, the code is used RaptorQ described in Luby IV. For the FEC method, in this example, enough data is received to recover a fragment using FEC decoding after 1 second, providing a channel switching time of 1 second (assuming that data for subsequent fragments can be requested and received before the first fragment is fully reproduced). For the method without FEC in this example, all the data for 4 queries must be received before the fragment can be restored, which occurs after 1.7 seconds, leading to a channel switching time of 1.7 seconds. Thus, in the embodiment shown in FIG. In the 26th example, the method without FEC is 70% worse in terms of channel switching time than the method with FEC. One of the reasons for the advantage shown by the method with FEC in this example is that for a method with FEC, receiving any 80% of the requested data allows you to recover a fragment, while for a method without FEC you need to receive 100% of the requested data. Thus, a method without FEC needs to wait for the slowest TCP connection to complete the transfer, and due to natural changes in the TCP transmission rate, there is a tendency for the slowest TCP connection to have a large difference in transmission speed compared to the average TCP connection. In the FEC method in this example, one slow TCP connection does not determine when the fragment is recoverable. Instead, for a method with FEC, the transmission of a sufficient amount of data is much more dependent on the average TCP transmission rate than on the worst case TCP transmission rate.

Существует много разновидностей способа без FEC и способа с FEC, описанных выше. Например, совместные запросы HTTP/TCP могут использоваться только для первых нескольких фрагментов после того, как произошло переключение каналов, и после этого только одиночный запрос HTTP/TCP используется для загрузки дополнительных фрагментов, нескольких фрагментов или полных сегментов. В качестве другого примера, количество используемых совместных соединений HTTP/TCP может зависеть как от срочности запрашиваемых фрагментов, т.е. того, насколько близко время воспроизведения у этих фрагментов, так и от текущих сетевых условий.There are many variations of the non-FEC method and the FEC method described above. For example, joint HTTP / TCP requests can only be used for the first few fragments after a channel switch occurs, and after that only a single HTTP / TCP request is used to load additional fragments, several fragments, or full segments. As another example, the number of used HTTP / TCP joint connections may depend on the urgency of the requested fragments, i.e. how close the playback time for these fragments, and from the current network conditions.

В некоторых разновидностях, множество соединений HTTP может использоваться для запроса данных восстановления из сегментов восстановления. В других разновидностях, разные объемы данных могут запрашиваться по разным соединениям HTTP, например, в зависимости от текущего размера буфера мультимедиа и скорости приема данных на клиенте. В другой разновидности, исходные отображения не являются независимыми друг от друга, а вместо этого представляют многоуровневое кодирование мультимедиа, когда например, улучшенное исходное отображение может зависеть от базового исходного отображения. В этом случае, может существовать отображение восстановления, соответствующее базовому исходному отображению, и другое отображение восстановления, соответствующее сочетанию базового и улучшенного исходных отображений.In some variations, multiple HTTP connections can be used to request recovery data from recovery segments. In other varieties, different amounts of data may be requested over different HTTP connections, for example, depending on the current size of the media buffer and the speed at which data is received on the client. In another variation, the source mappings are not independent of each other, but instead represent multilevel coding of multimedia, when, for example, the improved source mappings may depend on the underlying source mappings. In this case, there may be a recovery map corresponding to the base source map and another recovery map corresponding to the combination of the base and enhanced source maps.

Дополнительные общие элементы добавляются к преимуществам, которые можно реализовать с помощью раскрытых выше способов. Например, количество используемых соединений HTTP может меняться в зависимости от текущего объема мультимедиа в буфере мультимедиа, и/или скорости приема в буфер мультимедиа. Совместные запросы HTTP, использующие FEC, т.е. описанный выше способ с FEC и разновидности того способа, могут использоваться активно, когда буфер мультимедиа относительно пустой, например, больше совместных запросов HTTP выполняется параллельно для разных частей первого фрагмента, запрашивающих весь исходный фрагмент и относительно большую долю данных восстановления из соответствующего фрагмента восстановления, и затем переходя к уменьшенному количеству одновременных запросов HTTP, запрашивающих более крупные части мультимедийных данных на запрос, и запрашивающих меньшую долю данных восстановления, например, переходя на 1, 2 или 3 одновременных запроса HTTP, переходя к запросам полных фрагментов или нескольких последовательных фрагментов на запрос, и переходя к отказу от запроса данных восстановления, когда увеличивается буфер мультимедиа.Additional common elements are added to the benefits that can be realized using the methods described above. For example, the number of HTTP connections used may vary depending on the current amount of multimedia in the multimedia buffer, and / or the speed of reception in the multimedia buffer. Joint HTTP requests using FEC, i.e. the FEC method described above and variations of that method can be used actively when the media buffer is relatively empty, for example, more joint HTTP requests are executed in parallel for different parts of the first fragment requesting the entire source fragment and a relatively large fraction of the recovery data from the corresponding recovery fragment, and then moving on to a reduced number of concurrent HTTP requests requesting larger portions of multimedia data per request and requesting a smaller fraction of the data x reduction, for example by passing 1, 2 or 3 simultaneous HTTP request, proceeds to inquiry complete fragments or several successive tracks on the request, and proceeding to the rejection of the request recovery data when a clipboard of multimedia increases.

В качестве другого примера, объем данных восстановления FEC может меняться в зависимости от размера буфера мультимедиа, т.е. когда буфер мультимедиа небольшой, то можно запрашивать больше данных восстановления FEC, а когда буфер мультимедиа увеличивается, то объем запрошенных данных восстановления FEC может уменьшиться, и в некоторый момент, когда буфер мультимедиа достаточно большой, можно не запрашивать никакие данные восстановления FEC, только данные из исходных сегментов исходных отображений. Преимущества таких улучшенных методик в том, что они могут обеспечить меньшее и более согласованное время переключения каналов, и больше гибкости к возможным запинкам или остановам мультимедиа, в то же время минимизируя величину дополнительной полосы пропускания, используемой сверх величины, которая потреблялась бы только передачей мультимедиа в исходных сегментах, путем уменьшения как трафика запросов, так и данных восстановления FEC, в то же время обеспечивая поддержку наивысших скоростей мультимедиа, возможных для данных сетевых условий.As another example, the amount of FEC recovery data may vary depending on the size of the media buffer, i.e. when the media buffer is small, you can request more FEC recovery data, and when the media buffer increases, the amount of requested FEC recovery data may decrease, and at some point, when the media buffer is large enough, you can not request any FEC recovery data, only data from source segments of source mappings. The advantages of such improved techniques are that they can provide shorter and more consistent channel switching times, and more flexibility for possible multimedia stuttering or shutdowns, while minimizing the amount of extra bandwidth used beyond the amount that would only be consumed by multimedia transmission in source segments, by reducing both query traffic and FEC recovery data, while at the same time providing support for the highest multimedia speeds possible for these network conditions ovium.

ДОПОЛНИТЕЛЬНЫЕ УЛУЧШЕНИЯ ПРИ ИСПОЛЬЗОВАНИИ ОДНОВРЕМЕННЫХ СОЕДИНЕНИЙ HTTPADDITIONAL IMPROVEMENTS FOR USING SIMULTANEOUS HTTP CONNECTIONS

Запрос HTTP/TCP может быть отменен, если выполняется подходящее условие, и другой запрос HTTP/TCP может быть сформирован для загрузки данных, которые могут заменить данные, запрошенные в отмененном запросе, причем второй запрос HTTP/TCP может запрашивать точно такие же данные, как в первоначальном запросе, например, исходные данные; или перекрывающиеся данные, например, часть таких же исходных данных и данные восстановления, которые не были запрошены в первом запросе; или полностью непересекающиеся данные, например, данные восстановления, которые не были запрошены в первом запросе. Примером подходящего условия является то, когда запрос терпит неудачу из-за отсутствия ответа от обслуживающей инфраструктуры блоков (BSI) в предусмотренное время, или сбоя в установлении транспортного соединения с BSI, или приема явного сообщения об отказе от сервера, или другого состояния отказа.An HTTP / TCP request can be canceled if a suitable condition is met, and another HTTP / TCP request can be formed to load data that can replace the data requested in the canceled request, and the second HTTP / TCP request can request exactly the same data as in the initial request, for example, source data; or overlapping data, for example, part of the same source data and recovery data that were not requested in the first request; or completely disjoint data, for example, recovery data that was not requested in the first request. An example of a suitable condition is when the request fails due to the lack of a response from the serving block infrastructure (BSI) at the appointed time, or a failure to establish a transport connection with the BSI, or the receipt of an explicit server failure message, or other failure condition.

Другим примером подходящего условия является то, когда прием данных проходит необычно медленно, в соответствии со сравнением величины скорости соединения (скорость поступления данных в ответ на запрос, о котором идет речь) с ожидаемой скоростью соединения, или с оценкой скорости соединения, необходимой для приема ответа до времени воспроизведения содержащихся мультимедийных данных или другого времени, зависимого от того времени.Another example of a suitable condition is when the reception of data is unusually slow, in accordance with a comparison of the connection speed (the speed at which the data is received in response to the request in question) with the expected connection speed, or with an estimate of the connection speed necessary to receive the response until the playback time of the contained multimedia data or other time dependent on that time.

Этот подход обладает преимуществом в случае, когда иногда BSI проявляет отказы или плохую производительность. В этом случае вышеупомянутый подход увеличивает вероятность того, что клиент может продолжить надежное воспроизведение мультимедийных данных, несмотря на отказы или плохую производительность в BSI. Отметим, что в некоторых случаях может быть преимущественно, спроектировать BSI таким образом, что она проявляет такие отказы или плохую производительность случайно, например, такое исполнение может иметь меньшую стоимость, чем альтернативное исполнение, которое не проявляет такие отказы или плохую производительность или которое проявляет их менее часто. В этом случае способ, описанный в этом документе, имеет дополнительное преимущество в том, что он допускает использование такого менее дорогого исполнения для BSI без закономерного ухудшения восприятия пользователя.This approach is advantageous when the BSI sometimes shows failures or poor performance. In this case, the aforementioned approach increases the likelihood that the client may continue to reliable playback of multimedia data, despite failures or poor performance in the BSI. Note that in some cases it may be preferable to design the BSI in such a way that it exhibits such failures or poor performance randomly, for example, such a design may be less expensive than an alternative design that does not exhibit such failures or poor performance or exhibits them less often. In this case, the method described in this document has the additional advantage that it allows the use of such a less expensive performance for the BSI without a natural degradation of the user's perception.

В другом варианте осуществления количество выданных запросов данных, соответствующих заданному блоку, может зависеть от того, выполняется ли подходящее условие относительно блока. Если условие не выполняется, то клиента можно ограничить от формирования дополнительных запросов блока, если успешное завершение всех незавершенных в настоящее время запросов данных к блоку позволило бы восстановление блока с большой вероятностью. Если условие выполняется, то может быть выдано большее количество запросов блока, т.е. вышеупомянутое ограничение не применяется. Примером подходящего условия является то, когда время до запланированного времени воспроизведения блока или другого времени, зависимого от того времени, уменьшается ниже предусмотренной пороговой величины. Этот способ обладает преимуществом, потому что дополнительные запросы данных для блока выдаются, когда прием блока становится более срочным, потому что приближается время воспроизведения мультимедийных данных, содержащих блок. В случае общепринятых транспортных протоколов, например HTTP/TCP, эти дополнительные запросы обладают эффектом увеличения доли имеющейся в наличии полосы пропускания, выделенной данным, что вносит вклад в прием блока, о котором идет речь. Это уменьшает время, необходимое для приема достаточного количества данных для восстановления блока полностью, и поэтому уменьшает вероятность того, что блок нельзя восстановить до запланированного времени воспроизведения мультимедийных данных, содержащих этот блок. Как описано выше, если блок нельзя восстановить до запланированного времени воспроизведения мультимедийных данных, содержащих блок, то воспроизведение может остановиться, приведя к плохому восприятию пользователя, и поэтому описанный в этом документе способ преимущественно уменьшает вероятность этого плохого восприятия пользователя.In another embodiment, the number of data requests issued corresponding to a given block may depend on whether a suitable condition for the block is fulfilled. If the condition is not met, then the client can be limited from generating additional block requests, if the successful completion of all currently incomplete data requests to the block would allow the block to be restored with a high probability. If the condition is met, then more block requests may be issued, i.e. the above limitation does not apply. An example of a suitable condition is when the time before the scheduled playing time of the unit or another time, dependent on that time, decreases below a predetermined threshold. This method is advantageous because additional data requests for the block are issued when the reception of the block becomes more urgent, because the playback time of multimedia data containing the block is approaching. In the case of generally accepted transport protocols, such as HTTP / TCP, these additional requests have the effect of increasing the proportion of available bandwidth allocated to the data, which contributes to the reception of the block in question. This reduces the time required to receive enough data to restore the block completely, and therefore reduces the likelihood that the block cannot be restored before the scheduled playback time of multimedia data containing this block. As described above, if the unit cannot be restored to the scheduled playback time of the multimedia data containing the unit, then the playback may stop, resulting in a poor user experience, and therefore the method described in this document mainly reduces the likelihood of this user poor experience.

Следует понимать, что по всему этому описанию изобретения упоминания запланированного времени воспроизведения блока относятся к времени, в которое кодированные мультимедийные данные, содержащие блок, могут быть впервые иметься в наличии на клиенте, чтобы добиться воспроизведения представления без остановки. Как будет ясно специалистам в области систем представления мультимедиа, это время на практике находится немного раньше фактического времени появления мультимедиа, содержащего блок, в физических преобразователях, используемых для воспроизведения (экран, громкоговоритель и т.д.), поскольку может потребоваться применить несколько функций преобразования к мультимедийным данным, содержащим блок, чтобы осуществить фактическое воспроизведение того блока, и эти функции могут потребовать некоторого количества времени для завершения. Например, мультимедийные данные обычно транспортируются в сжатом виде, и может применяться преобразование для распаковки.It should be understood that throughout this description of the invention, references to the scheduled block playing time refer to the time at which encoded multimedia data containing the block may first be available on the client in order to achieve presentation playback without stopping. As will be clear to experts in the field of multimedia presentation systems, this time in practice is slightly earlier than the actual time the multimedia containing the block appeared in the physical transducers used for playback (screen, speaker, etc.), since several conversion functions may be required to multimedia data containing the block in order to actually play back that block, and these functions may take some amount of time to complete. For example, multimedia data is usually transported in a compressed form, and conversion may be used for decompression.

СПОСОБЫ ФОРМИРОВАНИЯ ФАЙЛОВЫХ СТРУКТР, ПОДДЕРЖИВАЮЩИЕ СОВМЕСТНЫЕ СПОСОБЫ HTTP/FECMETHODS FOR FORMING FILE STRUCTURES SUPPORTING JOINT METHODS OF HTTP / FEC

Теперь будет описан вариант осуществления для формирования файловой структуры, которая может использоваться преимущественно клиентом, применяющим совместные способы HTTP/FEC. В этом варианте осуществления, для каждого исходного сегмента имеется соответствующий сегмент восстановления, сформированный следующим образом. Параметр R указывает в среднем, сколько данных восстановления FEC формируется для исходных данных в исходных сегментах. Например, R=0,33 указывает, что если исходный сегмент содержит 1,000 килобайт данных, то соответствующий сегмент восстановления содержит приблизительно 330 килобайт данных восстановления. Параметр S указывает размер символа в байтах, используемый для кодирования и декодирования FEC. Например, S=64 указывает, что исходные данные и данные восстановления содержат символы с размером 64 байта каждый для целей кодирования и декодирования FEC.An embodiment will now be described for generating a file structure that can be used primarily by a client using joint HTTP / FEC methods. In this embodiment, for each source segment there is a corresponding recovery segment formed as follows. The R parameter indicates on average how much FEC recovery data is generated for the source data in the source segments. For example, R = 0.33 indicates that if the source segment contains 1,000 kilobytes of data, then the corresponding recovery segment contains approximately 330 kilobytes of recovery data. The S parameter indicates the character size in bytes used for encoding and decoding FEC. For example, S = 64 indicates that the source data and the recovery data contain characters with a size of 64 bytes each for FEC encoding and decoding purposes.

Сегмент восстановления может формироваться для исходного сегмента следующим образом. Каждый фрагмент исходного сегмента считается исходным блоком для целей кодирования FEC, и соответственно каждый фрагмент рассматривается как последовательность исходных символов исходного блока, из которых формируются символы восстановления. Количество символов восстановления, сформированных в итоге для первых i фрагментов, вычисляется как TNRS(i)=ceiling(R*B(i)/S), где ceiling(x) является функцией, которая выводит наименьшее целое число со значением, которое по меньшей мере равно x. Таким образом, количество символов восстановления, сформированных для фрагмента i, равно NRS(i)=TNRS(i)-TNRS(i-1).The recovery segment can be formed for the source segment as follows. Each fragment of the source segment is considered the source block for the purposes of FEC encoding, and accordingly, each fragment is considered as a sequence of source symbols of the source block, from which recovery symbols are formed. The number of recovery symbols generated as a result for the first i fragments is calculated as TNRS (i) = ceiling (R * B (i) / S), where ceiling (x) is a function that outputs the smallest integer with a value that is at least least equal to x. Thus, the number of recovery symbols generated for fragment i is NRS (i) = TNRS (i) -TNRS (i-1).

Сегмент восстановления содержит сцепление символов восстановления для фрагментов, когда порядок символов восстановления в сегменте восстановления является порядком фрагментов, из которых они формируются, и во фрагменте символы восстановления находятся в порядке их идентификатора символа кодирования (ESI). Структура сегмента восстановления, соответствующая структуре исходного сегмента, показана на Фиг. 27, включающая генератор 2700 сегментов восстановления.The recovery segment contains concatenation of recovery symbols for fragments, when the order of recovery symbols in the recovery segment is the order of fragments from which they are formed, and in the fragment the recovery symbols are in the order of their encoding symbol identifier (ESI). The structure of the recovery segment corresponding to the structure of the initial segment is shown in FIG. 27, including a 2700 recovery segment generator.

Отметим, что путем задания количества символов восстановления для фрагмента, как описано выше, общее количество символов восстановления для всех предыдущих фрагментов, а соответственно индекс байта в сегменте восстановления, зависит только от R, S, B(i-1) и B(i), и не зависит ни от какой предыдущей или последующей структуры фрагментов в исходном сегменте. Это полезно, потому что это позволяет клиенту быстро вычислить позицию начала блока восстановления в сегменте восстановления, а также быстро вычислить количество символов восстановления в том блоке восстановления, используя только локальную информацию о структуре соответствующего фрагмента исходного сегмента, из которого формируется блок восстановления. Таким образом, если клиент решает начать загрузку и воспроизведение фрагмента с середины исходного сегмента, то он также может быстро сформировать и получить доступ к соответствующему блоку восстановления из соответствующего сегмента восстановления.Note that by setting the number of recovery symbols for the fragment, as described above, the total number of recovery symbols for all previous fragments, and accordingly the byte index in the recovery segment, depends only on R, S, B (i-1) and B (i) , and does not depend on any previous or subsequent structure of fragments in the original segment. This is useful because it allows the client to quickly calculate the position of the start of the recovery unit in the recovery segment, as well as quickly calculate the number of recovery symbols in that recovery unit, using only local information about the structure of the corresponding fragment of the original segment from which the recovery unit is formed. Thus, if a client decides to start downloading and playing a fragment from the middle of the original segment, then he can also quickly generate and access the corresponding recovery unit from the corresponding recovery segment.

Количество исходных символов в исходном блоке, соответствующее фрагменту i, вычисляется как NSS(i)=ceiling((B(i)-B(i-1))/S). Последний исходный символ дополняется нулевыми байтами для целей кодирования и декодирования FEC, если B(i)-B(i-1) не является кратным S, т.е. последний исходный символ дополняется нулевыми байтами, так что он имеет размер S байт для целей кодирования и декодирования FEC, но эти нулевые байты не сохраняются как часть исходного сегмента. В этом варианте осуществления ESI для исходного символа являются 0, 1, …, NSS(i)-1, а ESI для символов восстановления являются NSS(i), …, NSS(i)+NRS(i)-1.The number of source symbols in the source block corresponding to fragment i is calculated as NSS (i) = ceiling ((B (i) -B (i-1)) / S). The last source character is padded with zero bytes for the purpose of encoding and decoding FEC if B (i) -B (i-1) is not a multiple of S, i.e. the last source character is padded with zero bytes, so it is S bytes in size for FEC encoding and decoding, but these zero bytes are not stored as part of the source segment. In this embodiment, the ESIs for the source symbol are 0, 1, ..., NSS (i) -1, and the ESIs for the recovery symbols are NSS (i), ..., NSS (i) + NRS (i) -1.

URL для сегмента восстановления в этом варианте осуществления может формироваться из URL для соответствующего исходного сегмента просто путем добавления, например, суффикса «.repair» к URL исходного сегмента.The URL for the recovery segment in this embodiment can be formed from the URL for the corresponding source segment simply by adding, for example, the suffix “.repair” to the URL of the source segment.

Информация индексирования восстановления и информация FEC для сегмента восстановления в неявном виде задается информацией индексирования для соответствующего исходного сегмента и из значений R и S, как описано в этом документе. Временные смещения и структура фрагмента, содержащая сегмент восстановления, определяются временными смещениями и структурой соответствующего исходного сегмента. Байтовое смещение до конца символов восстановления в сегменте восстановления, соответствующем фрагменту i, может вычисляться как RB(i)=S*ceiling(R*B(i)/S). Количество байт в сегменте восстановления, соответствующем фрагменту i, тогда равно RB(i)-RB(i-1), и соответственно количество символов восстановления, соответствующих фрагменту i, вычисляется как NRS(i)=(RB(i)-RB(i-1))/S. Количество исходных символов, соответствующих фрагменту i, может вычисляться как NSS(i)=ceiling((B(i)-B(i-1))/S). Таким образом, в этом варианте осуществления, информация индексирования восстановления для блока восстановления в сегменте восстановления и соответствующая информация FEC могут в неявном виде выводиться из R, S и информации индексирования для соответствующего фрагмента соответствующего исходного сегмента.The recovery indexing information and the FEC information for the recovery segment are implicitly set by the indexing information for the corresponding source segment and from the values of R and S, as described herein. Temporal displacements and the fragment structure containing the recovery segment are determined by temporal displacements and the structure of the corresponding initial segment. The byte offset to the end of the recovery symbols in the recovery segment corresponding to fragment i can be calculated as RB (i) = S * ceiling (R * B (i) / S). The number of bytes in the recovery segment corresponding to fragment i is then equal to RB (i) -RB (i-1), and accordingly, the number of recovery symbols corresponding to fragment i is calculated as NRS (i) = (RB (i) -RB (i -1)) / S. The number of source symbols corresponding to fragment i can be calculated as NSS (i) = ceiling ((B (i) -B (i-1)) / S). Thus, in this embodiment, the recovery indexing information for the recovery unit in the recovery segment and the corresponding FEC information can be implicitly output from R, S and the indexing information for the corresponding fragment of the corresponding source segment.

В качестве примера рассмотрим пример, показанный на Фиг. 28, показывающий фрагмент 2, который начинается в байтовом смещении B(1)=6,410 и заканчивается в байтовом смещении B(2)=6,770. В этом примере размер символа S=64 байтам, и пунктирные вертикальные линии показывают байтовые смещения в исходном сегменте, которые соответствуют кратным числам S. Общий размер сегмента восстановления в качестве доли размера исходного сегмента устанавливается в R=0,5 в этом примере. Количество исходных символов в исходном блоке для фрагмента 2 вычисляется как NSS(2)=ceiling((6,770-6,410)/64)=ceil(5.625)=6, и эти 6 исходных символов имеют ESI 0, …, 5 соответственно, причем первый исходный символ является первыми 64 байтами фрагмента 2, который начинается в индексе байта 6,410 в исходном сегменте, второй исходный символ является следующими 64 байтами фрагмента 2, который начинается в индексе байта 6,474 в исходном сегменте, и т.д. Конечное байтовое смещение блока восстановления, соответствующего фрагменту 2, вычисляется как RB(2)=64*ceiling(0,5*6,770/64)=64*ceiling(52.8…)=64*53=3,392, а начальное байтовое смещение блока восстановления, соответствующего фрагменту 2, вычисляется как RB(1)=64*ceiling(0,5*6,410/64)=64*ceiling(50,07…)=64*51=3,264, и соответственно в этом примере имеются два символа восстановления в блоке восстановления, соответствующие фрагменту 2 с ESI 6 и 7 соответственно, начинающиеся в байтовом смещении 3,264 в сегменте восстановления и заканчивающиеся в байтовом смещении 3,392.As an example, consider the example shown in FIG. 28, showing fragment 2, which begins at the byte offset B (1) = 6,410 and ends at the byte offset B (2) = 6,770. In this example, the character size is S = 64 bytes, and the dashed vertical lines show the byte offsets in the source segment that correspond to multiple numbers S. The total size of the recovery segment as a fraction of the size of the source segment is set to R = 0.5 in this example. The number of source symbols in the source block for fragment 2 is calculated as NSS (2) = ceiling ((6,770-6,410) / 64) = ceil (5.625) = 6, and these 6 source symbols have ESI 0, ..., 5, respectively, with the first the source character is the first 64 bytes of fragment 2, which starts at the byte index of 6.410 in the source segment, the second source character is the next 64 bytes of fragment 2, which begins at the index of byte 6,474 in the source segment, etc. The final byte offset of the recovery unit corresponding to fragment 2 is calculated as RB (2) = 64 * ceiling (0.5 * 6.770 / 64) = 64 * ceiling (52.8 ...) = 64 * 53 = 3.392, and the initial byte offset of the recovery unit corresponding to fragment 2 is calculated as RB (1) = 64 * ceiling (0.5 * 6.410 / 64) = 64 * ceiling (50.07 ...) = 64 * 51 = 3.264, and accordingly in this example there are two recovery characters in the recovery block, corresponding to fragment 2 with ESI 6 and 7, respectively, starting at a byte offset of 3.264 in the recovery segment and ending at a byte offset of 3.392.

Отметим, что в показанном на Фиг. 28 примере, даже если R=0,5 и имеются 6 исходных символов, соответствующих фрагменту 2, количество символов восстановления не равно 3, как можно предположить, если просто использовать количество исходных символов для вычисления количества символов восстановления, а вместо этого получилось равным 2 в соответствии со способами, описанными в этом документе. В отличие от простого использования количества исходных символов фрагмента для определения количества символов восстановления, описанные выше варианты осуществления, позволяют вычислить позиционирование блока восстановления в сегменте восстановления исключительно из индексной информации, ассоциированной с соответствующим исходным блоком, соответствующим исходному сегменту. Кроме того, когда растет количество, K, исходных символов в исходном блоке, количество символов восстановления, KR, у соответствующего блока восстановления приблизительно выражается с помощью K*R, так как обычно KR не превышает ceil(K*R) и KR по меньшей мере равно floor((K-1)*R), где floor(x) является наибольшим целым числом не более x.Note that in the embodiment shown in FIG. In the 28th example, even if R = 0.5 and there are 6 source symbols corresponding to fragment 2, the number of recovery symbols is not equal to 3, as can be assumed if you simply use the number of source symbols to calculate the number of recovery symbols, but instead it turned out to be 2 in according to the methods described in this document. In contrast to simply using the number of source symbols of a fragment to determine the number of recovery symbols, the embodiments described above allow one to calculate the positioning of a recovery unit in a recovery segment solely from the index information associated with the corresponding source block corresponding to the source segment. In addition, when the number, K, of source characters in the source block increases, the number of recovery characters, KR, of the corresponding recovery block is approximately expressed with K * R, since usually KR does not exceed ceil (K * R) and KR at least equals floor ((K-1) * R), where floor (x) is the largest integer of at most x.

Существует много разновидностей вышеприведенных вариантов осуществления для формирования файловой структуры, которая может использоваться преимущественно клиентом, применяющим совместные способы HTTP/FEC, что признает специалист в данной области техники. В качестве примера альтернативного варианта осуществления, первоначальный сегмент для отображения может быть разделен на N>1 параллельных сегментов, где для i=1, …, N, заданная доля Fi исходного сегмента содержится в i-ом параллельном сегменте, и где сумма Fi для i=1, …, N равна 1. В этом варианте осуществления может быть одна главная карта сегмента, которая используется для получения карт сегментов для всех параллельных сегментов, аналогичному тому, как карта сегмента восстановления получается из карты исходного сегмента в описанном выше варианте осуществления. Например, главная карта сегмента может указывать структуру фрагмента, если все исходные мультимедийные данные не разделялись на параллельные сегменты, а вместо этого содержались в одном первоначальном сегменте, и тогда карту сегмента для i-ого параллельного сегмента можно получить из главной карты сегмента путем вычисления того, что если объем мультимедийных данных в первом префиксе фрагментов первоначального сегмента равен L байт, то общее количество байт этого префикса в агрегации среди первых i параллельных сегментов равно ceil(L*Gi), где Gi является суммой Fj по j=1, …, i. В качестве другого примера альтернативного варианта осуществления, сегменты могут состоять из сочетания исходных мультимедийных данных для каждого фрагмента с непосредственно следующими данными восстановления для того фрагмента, получая сегмент, который содержит смесь исходных мультимедийных данных и данных восстановления, сформированных с использованием кода FEC из тех исходных мультимедийных данных. В качестве другого примера альтернативного варианта осуществления сегмент, который содержит смесь исходных мультимедийных данных и данных восстановления, можно разделить на несколько параллельных сегментов, содержащих смесь исходных мультимедийных данных и данных восстановления.There are many variations of the above embodiments for generating a file structure that can be used primarily by a client using joint HTTP / FEC methods, as one skilled in the art will recognize. As an example of an alternative embodiment, the initial segment for display can be divided into N> 1 parallel segments, where for i = 1, ..., N, the given fraction Fi of the original segment is contained in the i-th parallel segment, and where the sum Fi for i = 1, ..., N is 1. In this embodiment, there can be one main segment map that is used to obtain segment maps for all parallel segments, similar to how the recovery segment map is obtained from the map of the original segment in the above embodiment e implementation. For example, the main segment map can indicate the fragment structure if all the original multimedia data was not divided into parallel segments, but instead was contained in the same initial segment, and then the segment map for the ith parallel segment can be obtained from the main segment map by calculating that if the amount of multimedia data in the first prefix of fragments of the initial segment is L bytes, then the total number of bytes of this prefix in the aggregation among the first i parallel segments is ceil (L * Gi), where Gi is the sum of F j for j = 1, ..., i. As another example of an alternative embodiment, the segments may consist of combining the source multimedia data for each fragment with the immediately following recovery data for that fragment, obtaining a segment that contains a mixture of the source multimedia data and the recovery data generated using the FEC code from those source multimedia data. As another example of an alternative embodiment, a segment that contains a mixture of source media and recovery data can be divided into several parallel segments containing a mixture of source media and recovery.

СПОСОБЫ ОБРАБОТКИ ПОТОКОВОЙ ПЕРЕДАЧИ С МАЛОЙ ЗАДЕРЖКОЙWAYS OF PROCESSING THE STREAM TRANSFER WITH A LOW DELAY

В некоторых сценариях развертывания, может быть желательной потоковая передача с малой задержкой для услуги прямой трансляции. Например, в случае локальной на месте дистрибуции события, например спортивного события или концерта, желательно, чтобы задержка между действием прямой трансляции и представлением услуги прямой трансляции на клиенте была как можно короче. Например, может быть желательной максимальная задержка в 1 секунду.In some deployment scenarios, low latency streaming for a live broadcast service may be desirable. For example, in the case of a local event at the place of distribution, such as a sporting event or concert, it is desirable that the delay between the live broadcast and the live broadcast service on the client be as short as possible. For example, a maximum delay of 1 second may be desirable.

Как описано выше, может быть полезным выполнять конфигурирование так, чтобы каждый файл, хранящий сегмент представления мультимедиа, начинался в точки произвольного доступа (RAP). Некоторые профили, в частности профиль прямой трансляции базового формата мультимедийного файла ISO, требуют чтобы каждый мультимедийный сегмент начинался в RAP.As described above, it may be useful to configure so that each file containing the media presentation segment starts at random access points (RAPs). Some profiles, in particular the live profile of the base ISO media file format, require each media segment to start in RAP.

Однако в условиях, где необходима передача с малой сквозной задержкой, длительность каждого сегмента должна быть короткой для минимизации задержки между действием прямой трансляции и представлением события прямой трансляции на клиенте. Желательно избежать вставки RAP в каждый сегмент, который нужно использовать для потоковой передачи с малой задержкой. Например, RAP в видео обычно реализуются кадрами IDR. Эффективность кодирования может быть улучшена избегая использования кадров IDR в коротких сегментах, желательных для потоковой передачи с малой задержкой.However, in conditions where transmission with a low end-to-end delay is required, the duration of each segment should be short to minimize the delay between the action of the live broadcast and the presentation of the live broadcast event on the client. It is advisable to avoid inserting RAP into each segment that you want to use for low latency streaming. For example, RAPs in a video are typically implemented by IDR frames. Coding efficiency can be improved by avoiding the use of IDR frames in short segments, desirable for low-latency streaming.

В соответствии с вариантом осуществления, формируется отображение совместимое с профилем прямой трансляции и отображение с малой задержкой представления мультимедиа. Отображение совместимое с профилем прямой трансляции имеет относительно большие длительности мультимедийных сегментов. Каждый мультимедийный сегмент отображения совместимого с профилем прямой трансляции имеет RAP в начале мультимедийного сегмента. Отображение с малой задержкой имеет относительно более короткие сегменты (которые могут называться «мультимедийными фрагментами»), которые могут не содержать RAP. Клиенты, поддерживающие потоковую передачу с малой задержкой, принимают мультимедийные фрагменты, сформированные для отображения с малой задержкой представления мультимедиа, тогда как клиенты, которые не поддерживают потоковую передачу с малой задержкой, могут иметь возможность приема мультимедийных сегментов, сформированных для отображения совместимого с профилем прямой передачи представления мультимедиа.According to an embodiment, a display compatible with the live profile and a low-delay display of the multimedia presentation are generated. Display compatible with the live profile has relatively long durations of multimedia segments. Each multimedia segment display compatible with the profile of the live broadcast has a RAP at the beginning of the multimedia segment. The low-latency display has relatively shorter segments (which may be referred to as “multimedia fragments”), which may not contain RAP. Clients that support low-latency streaming receive multimedia fragments formed to display low-latency multimedia presentations, while clients that do not support low-latency streaming may be able to receive multimedia segments configured to display a compatible forward profile multimedia presentations.

Фиг. 30 иллюстрирует отношения между мультимедийными фрагментами для потоковой передачи с малой задержкой и мультимедийными фрагментами. Мультимедийный сегмент 3002, сформированный для потоковой передачи профиля прямой трансляции, содержит RAP 3004 в начале мультимедийных данных («mdat»). В противоположность, из мультимедийных фрагментов 3004, 3306 и 3008, сформированных для потоковой передачи с малой задержкой, только мультимедийный фрагмент 3004 содержит RAP.FIG. 30 illustrates the relationship between multimedia fragments for low-latency streaming and multimedia fragments. A media segment 3002 configured to stream a live profile contains RAP 3004 at the beginning of the multimedia data (“mdat”). In contrast, of the multimedia fragments 3004, 3306, and 3008 formed for low-delay streaming, only the multimedia fragment 3004 contains an RAP.

Мультимедийные фрагменты формируются на лету и имеются в наличии для загрузки клиентами через HTTP. Мультимедийные фрагменты можно аккумулировать в мультимедийных сегментах совместимых с профилем прямой трансляции базового формата мультимедийного файла ISO, не требуя каких-либо модификаций в мультимедийных фрагментах. Например, мультимедийные фрагменты могут сцеплены в мультимедийные сегменты.Multimedia fragments are generated on the fly and are available for download by clients via HTTP. Multimedia fragments can be accumulated in multimedia segments compatible with the live profile of the basic format of the ISO multimedia file without requiring any modifications to the multimedia fragments. For example, multimedia fragments may be concatenated into multimedia segments.

Как мультимедийные сегменты, так и мультимедийные фрагменты могут формироваться с использованием одного и того же процесса кодирования. Таким образом, мультимедиа может эффективно кодироваться для потребления клиентами, работающими в окружениях, требующих малой сквозной задержки, и клиентами, использующими протокол, требующий RAP в каждом сегменте.Both multimedia segments and multimedia fragments can be formed using the same encoding process. In this way, multimedia can be efficiently encoded for consumption by clients working in environments requiring low end-to-end latency, and by clients using a protocol requiring RAP in each segment.

В некоторых вариантах осуществления, индекс сегмента (SIDX) формируется для каждого мультимедийного фрагмента. SIDX может включать в себя временной диапазон отображения в мультимедийном сегменте и соответствующий байтовый диапазон мультимедийного сегмента, занимаемый мультимедийным фрагментом. В некоторых вариантах осуществления, SIDX указывает на то, присутствует ли во фрагменте RAP. На Фиг. 30, поле contains_RAP блока SIDX мультимедийного фрагмента 3004 установлено равным 1, указывая на то, что мультимедийный фрагмент 3004 содержит RAP. Поле contains_RAP блока SIDX мультимедийных фрагментов 3006 и 3008 установлено равным 0, указывая на то, что мультимедийные фрагменты 3006 и 3008 не содержат RAP. SIDX может дополнительно указывать время представления первой RAP во фрагменте.In some embodiments, a segment index (SIDX) is generated for each media fragment. SIDX may include a display time range in a multimedia segment and a corresponding byte range of the multimedia segment occupied by the multimedia fragment. In some embodiments, SIDX indicates whether a RAP is present in the fragment. In FIG. 30, the contains_RAP field of the SIDX block of the multimedia fragment 3004 is set to 1, indicating that the multimedia fragment 3004 contains an RAP. The contains_RAP field of the SIDX block of multimedia fragments 3006 and 3008 is set to 0, indicating that the multimedia fragments 3006 and 3008 do not contain RAP. SIDX may optionally indicate the presentation time of the first RAP in the fragment.

В соответствии с вариантом осуществления, сервер мультимедиа может формировать фрагменты для потоковой передачи с малой задержкой и проталкивать фрагменты в кэш. Кэш может сцеплять фрагменты для формирования мультимедийных сегментов совместимых с профилем прямой трансляции. После того как мультимедийные сегменты сформированы, кэш может удалять мультимедийные фрагменты, которые были сцеплены для формирования мультимедийного сегмента.According to an embodiment, the media server can form fragments for streaming with a low delay and push the fragments into the cache. The cache can link fragments to form multimedia segments compatible with the live profile. After the multimedia segments are formed, the cache can remove the multimedia fragments that were linked to form the multimedia segment.

Одиночное описание представления мультимедиа (MPD) может хранить информацию о первом отображении с мультимедийными сегментами совместимыми с профилем прямой трансляции представления мультимедиа и втором отображении с мультимедийными фрагментами потока с малой задержкой. Отложенный просмотр может обеспечиваться с использованием мультимедийных сегментов для буферизации отложенного просмотра и мультимедийных фрагментов для обработки просмотра на границе близкой к прямой трансляции потока. Клиент может переключаться между этими отображениями, например, начиная в буфере отожженного просмотра и перемещаясь к границе прямой трансляции, проскакивая секции представления мультимедиа. Каждому отображению MOD может присваиваться атрибут для выражения массива отображений, имеющихся в наличии для одиночного представления мультимедиа.A single multimedia presentation description (MPD) may store information about a first display with multimedia segments compatible with a live view profile of a multimedia presentation and a second display with multimedia fragments of a low-delay stream. Deferred viewing can be provided using multimedia segments for buffering delayed viewing and multimedia fragments for processing viewing at a border close to the live stream. The client can switch between these displays, for example, starting in the annealed viewing buffer and moving to the border of the live stream, skipping sections of the multimedia presentation. Each MOD display can be assigned an attribute to express an array of mappings available for a single multimedia view.

В MPD, которое хранит информацию о первом отображении с мультимедийными сегментами и втором отображении с мультимедийными фрагментами, может быть полезно обеспечивать информацию, указывающую на то, какие мультимедийные фрагменты второго отображения начинаются с RAP. Например, MPD может включать в себя атрибут для указания частоты возникновения RAP во множестве мультимедийных фрагментов. В одном варианте осуществления, MPD включает в себя атрибут, указывающий частоту в единицах количества фрагментов (т.е. каждый x-ый мультимедийный фрагмент содержит RAP). В другом варианте осуществления, атрибут указывает частоту в единицах расстояния по времени между смежными RAP.In the MPD, which stores information about the first display with multimedia segments and the second display with multimedia fragments, it may be useful to provide information indicating which multimedia fragments of the second display begin with RAP. For example, an MPD may include an attribute for indicating the frequency of occurrence of RAP in a plurality of multimedia fragments. In one embodiment, the MPD includes an attribute indicating the frequency in units of the number of fragments (i.e., each x-th multimedia fragment contains RAP). In another embodiment, the attribute indicates the frequency in units of time distance between adjacent RAPs.

В качестве альтернативы, информация о мультимедийных фрагментах может храниться в первом MPD, а информация о мультимедийных сегментах сожжет храниться во втором MPD.Alternatively, information about multimedia fragments can be stored in the first MPD, and information about multimedia segments can be stored in the second MPD.

В некоторых вариантах осуществления, MPD может сигнализировать конкретные параметры, применимые к конкретному отображению, например максимальная длительность мультимедийного сегмента или мультимедийного фрагмента у отображения.In some embodiments, the MPD may signal specific parameters applicable to a particular display, for example, the maximum duration of a multimedia segment or a multimedia fragment of a display.

Дополнительные варианты осуществления может представить специалист в данной области техники после прочтения этого раскрытия. В других вариантах осуществления, могут быть сформированы преимущественно сочетания или суб-сочетания раскрытого выше изобретения. Примерные конфигурации компонентов показаны для целей иллюстрации, и следует понимать, что сочетания, добавления, переконфигурирования и подобное рассматриваются в альтернативных вариантах осуществления настоящего изобретения. Таким образом, хотя изобретение описано относительно примерных вариантов осуществления, специалист в данной области техники признает, что возможны многочисленные модификации.Additional embodiments may be provided by one of ordinary skill in the art after reading this disclosure. In other embodiments, predominantly combinations or sub-combinations of the invention disclosed above may be formed. Exemplary component configurations are shown for purposes of illustration, and it should be understood that combinations, additions, reconfigurations, and the like are contemplated in alternative embodiments of the present invention. Thus, although the invention has been described with respect to exemplary embodiments, one skilled in the art will recognize that numerous modifications are possible.

Например, описанные в этом документе процессы могут быть реализованы с использованием аппаратных компонентов, программных компонентов, и/или любого их сочетания. В некоторых случаях, программные компоненты могут быть обеспечены на материальных, постоянных носителях информации для исполнения на аппаратных средствах, которые обеспечены носителями информации, или они отделены от носителей информации. Описание изобретения и чертежи соответственно должны рассматриваться в пояснительном, а не ограничивающем смысле. Однако станет очевидно, что в них можно внести различные модификации и изменения не отступая от широкой сущности и объема изобретения, которые изложены в формуле изобретения, и что изобретение подразумевает охват всех модификаций и эквивалентов в рамках объема нижеследующей формулы изобретения.For example, the processes described herein may be implemented using hardware components, software components, and / or any combination thereof. In some cases, software components may be provided on tangible, permanent storage media for execution on hardware that is provided on storage media, or they are separate from the storage media. The description of the invention and the drawings, respectively, should be considered in an explanatory and not limiting sense. However, it will become apparent that various modifications and changes can be made to them without departing from the broad essence and scope of the invention as set forth in the claims, and that the invention is intended to encompass all modifications and equivalents within the scope of the following claims.

Claims (31)

1. Способ структурирования данных контента, подлежащего обслуживанию, с использованием сервера мультимедиа, содержащий этапы, на которых:1. A method of structuring data content to be serviced using a multimedia server, comprising the steps of: получают контент, подлежащий обслуживанию;receive content subject to service; формируют множество мультимедийных сегментов, представляющих контент, и кодированных в соответствии с протоколом кодирования, который включает в себя один или более кадров представления мультимедиа, кодированного в каждом мультимедийном сегменте, при этом в каждом мультимедийном сегменте имеется точка произвольного доступа; иgenerating a plurality of multimedia segments representing the content and encoded in accordance with an encoding protocol that includes one or more multimedia presentation frames encoded in each multimedia segment, wherein there is a random access point in each multimedia segment; and формируют множество мультимедийных фрагментов, кодированных в соответствии с протоколом кодирования, при этом мультимедийный сегмент включает в себя упомянутое множество мультимедийных фрагментов, и при этом по меньшей мере некоторые из множества мультимедийных фрагментов включают в себя точки произвольного доступа и по меньшей мере некоторые не включают в себя точки произвольного доступа, причем точка произвольного доступа включает в себя положение в сегменте, в котором декодер может декодировать фрагменты, которые являются последующими по отношению к упомянутой точке произвольного доступа, независимо от фрагментов, которые являются предшествующими по отношению к упомянутой точке произвольного доступа; иforming a plurality of multimedia fragments encoded in accordance with a coding protocol, wherein the multimedia segment includes the plurality of multimedia fragments, and at least some of the plurality of multimedia fragments include random access points and at least some do not include random access points, and the random access point includes a position in the segment at which the decoder can decode fragments that are the last with respect to said random access point, irrespective of fragments that are prior to said random access point; and формируют индекс сегмента для мультимедийного сегмента, причем индекс сегмента включает в себя временной диапазон представления для каждого мультимедийного фрагмента в мультимедийном сегменте, соответствующий байтовый диапазон в мультимедийном сегменте, занимаемый каждым мультимедийным фрагментом, и индикатор присутствия точки произвольного доступа, который указывает, присутствует ли точка произвольного доступа в каждом мультимедийном фрагменте.forming a segment index for a multimedia segment, wherein the segment index includes a presentation time range for each multimedia fragment in the multimedia segment, a corresponding byte range in the multimedia segment occupied by each multimedia fragment, and an indicator of the presence of a random access point that indicates whether a random access point is present access in each multimedia fragment. 2. Способ по п. 1, в котором мультимедийный сегмент формируется посредством объединения множества мультимедийных фрагментов.2. The method of claim 1, wherein the multimedia segment is formed by combining a plurality of multimedia fragments. 3. Способ по п. 2, дополнительно содержащий этап, на котором формируют мультимедийный сегмент в кэше, и при этом после того, как мультимедийный сегмент сформирован в кэше, множество мультимедийных фрагментов, использованных для формирования мультимедийного сегмента, удаляется из кэша.3. The method according to claim 2, further comprising the step of forming a media segment in the cache, and after the media segment is formed in the cache, a plurality of media fragments used to form the media segment are deleted from the cache. 4. Способ по п. 1, дополнительно содержащий этап, на котором формируют один файл описания представления мультимедиа (MPD), который хранит информацию о первом отображении представления мультимедиа, содержащем множество мультимедийных сегментов, и втором отображении представления мультимедиа, содержащем множество мультимедийных фрагментов.4. The method of claim 1, further comprising generating a single multimedia presentation description (MPD) file that stores information about a first multimedia presentation display containing a plurality of multimedia segments and a second multimedia presentation display display containing a plurality of multimedia fragments. 5. Способ по п. 4, в котором файл MPD содержит атрибут для указания частоты возникновения точек произвольного доступа во втором отображении.5. The method according to claim 4, in which the MPD file contains an attribute for indicating the frequency of occurrence of random access points in the second display. 6. Способ по п. 5, в котором частота является периодом времени.6. The method of claim 5, wherein the frequency is a period of time. 7. Способ по п. 5, в котором частота является количеством мультимедийных фрагментов.7. The method of claim 5, wherein the frequency is the number of multimedia fragments. 8. Способ по п. 1, дополнительно содержащий этап, на котором определяют положения для точек произвольного доступа среди множества мультимедийных фрагментов, причем точки произвольного доступа расположены в переменных не фиксированных точках среди множества мультимедийных фрагментов.8. The method of claim 1, further comprising determining the positions for the random access points among the plurality of multimedia fragments, the random access points being located at variable non-fixed points among the plurality of multimedia fragments. 9. Сервер мультимедиа, содержащий:9. A media server containing: процессор, выполненный с возможностью:a processor configured to: получения контента, подлежащего обслуживанию;receiving content to be serviced; формирования множества мультимедийных сегментов, представляющих контент, и кодированных в соответствии с протоколом кодирования, который включает в себя один или более кадров представления мультимедиа, кодированного в каждом мультимедийном сегменте, при этом в каждом мультимедийном сегменте имеется точка произвольного доступа; иforming a plurality of multimedia segments representing the content and encoded in accordance with an encoding protocol that includes one or more multimedia presentation frames encoded in each multimedia segment, wherein there is a random access point in each multimedia segment; and формирования множества мультимедийных фрагментов, кодированных в соответствии с протоколом кодирования, при этом мультимедийный сегмент включает в себя упомянутое множество мультимедийных фрагментов, и при этом по меньшей мере некоторые из множества мультимедийных фрагментов включают в себя точки произвольного доступа и по меньшей мере некоторые не включают в себя точки произвольного доступа, причем точка произвольного доступа включает в себя положение в сегменте, в котором декодер может декодировать фрагменты, которые являются последующими по отношению к упомянутой точке произвольного доступа, независимо от фрагментов, которые являются предшествующими по отношению к упомянутой точке произвольного доступа; иgenerating a plurality of multimedia fragments encoded in accordance with an encoding protocol, wherein the multimedia segment includes the plurality of multimedia fragments, and at least some of the multimedia fragments include random access points and at least some do not include random access points, and the random access point includes a position in the segment at which the decoder can decode fragments that are after exploring with respect to said random access point, irrespective of fragments that are preceding with respect to said random access point; and формирования индекса сегмента для мультимедийного сегмента, причем индекс сегмента включает в себя временной диапазон представления для каждого мультимедийного фрагмента в мультимедийном сегменте, соответствующий байтовый диапазон в мультимедийном сегменте, занимаемый каждым мультимедийным фрагментом, и индикатор присутствия точки произвольного доступа, который указывает, присутствует ли точка произвольного доступа в каждом мультимедийном фрагменте.generating a segment index for the multimedia segment, wherein the segment index includes a presentation time range for each multimedia fragment in the multimedia segment, a corresponding byte range in the multimedia segment occupied by each multimedia fragment, and an indicator of the presence of a random access point that indicates whether a random access point is present access in each multimedia fragment. 10. Сервер мультимедиа по п. 9, в котором мультимедийный сегмент формируется посредством объединения множества мультимедийных фрагментов.10. The multimedia server according to claim 9, in which the multimedia segment is formed by combining many multimedia fragments. 11. Сервер мультимедиа по п. 10, в котором процессор дополнительно выполнен с возможностью формирования мультимедийного сегмента в кэше, и при этом после того, как мультимедийный сегмент сформирован в кэше, множество мультимедийных фрагментов, использованных для формирования мультимедийного сегмента, удаляется из кэша.11. The multimedia server according to claim 10, wherein the processor is further configured to form a multimedia segment in the cache, and after the multimedia segment is formed in the cache, a plurality of multimedia fragments used to form the multimedia segment are deleted from the cache. 12. Сервер мультимедиа по п. 9, в котором процессор дополнительно выполнен с возможностью формирования одного файла описания представления мультимедиа (MPD), который хранит информацию о первом отображении представления мультимедиа, содержащем множество мультимедийных сегментов, и втором отображении представления мультимедиа, содержащем множество мультимедийных фрагментов.12. The multimedia server according to claim 9, wherein the processor is further configured to generate a single multimedia presentation description file (MPD) that stores information about a first multimedia presentation display containing a plurality of multimedia segments and a second multimedia presentation display display containing a plurality of multimedia fragments . 13. Сервер мультимедиа по п. 12, в котором файл MPD содержит атрибут для указания частоты возникновения точек произвольного доступа во втором отображении.13. The multimedia server according to claim 12, in which the MPD file contains an attribute for indicating the frequency of occurrence of random access points in the second display. 14. Сервер мультимедиа по п. 13, в котором частота является периодом времени.14. The multimedia server according to claim 13, in which the frequency is a period of time. 15. Сервер мультимедиа по п. 13, в котором частота является количеством мультимедийных фрагментов.15. The multimedia server according to claim 13, in which the frequency is the number of multimedia fragments. 16. Сервер мультимедиа по п. 9, в котором процессор дополнительно выполнен с возможностью определения положений для точек произвольного доступа среди множества мультимедийных фрагментов, причем точки произвольного доступа расположены в переменных не фиксированных точках среди множества мультимедийных фрагментов.16. The multimedia server according to claim 9, wherein the processor is further configured to determine positions for random access points among a plurality of multimedia fragments, wherein the random access points are located at variable non-fixed points among the plurality of multimedia fragments. 17. Постоянный машиночитаемый носитель, на котором сохранены машиноисполняемые инструкции, которые при исполнении одним или более вычислительными устройствами побуждают одно или более вычислительных устройств:17. A permanent computer-readable medium on which computer-executable instructions are stored that, when executed by one or more computing devices, cause one or more computing devices: получать контент, подлежащий обслуживанию;receive content subject to service; формировать множество мультимедийных сегментов, представляющих контент, и кодированных в соответствии с протоколом кодирования, который включает в себя один или более кадров представления мультимедиа, кодированного в каждом мультимедийном сегменте, при этом в каждом мультимедийном сегменте имеется точка произвольного доступа; иgenerate a plurality of multimedia segments representing the content and encoded in accordance with an encoding protocol that includes one or more multimedia presentation frames encoded in each multimedia segment, wherein there is a random access point in each multimedia segment; and формировать множество мультимедийных фрагментов, кодированных в соответствии с протоколом кодирования, при этом мультимедийный сегмент включает в себя упомянутое множество мультимедийных фрагментов, и при этом по меньшей мере некоторые из множества мультимедийных фрагментов включают в себя точки произвольного доступа и по меньшей мере некоторые не включают в себя точки произвольного доступа, причем точка произвольного доступа включает в себя положение в сегменте, в котором декодер может декодировать фрагменты, которые являются последующими по отношению к упомянутой точке произвольного доступа, независимо от фрагментов, которые являются предшествующими по отношению к упомянутой точке произвольного доступа; иto form a plurality of multimedia fragments encoded in accordance with an encoding protocol, wherein the multimedia segment includes said plurality of multimedia fragments, and at least some of the plurality of multimedia fragments include random access points and at least some do not include random access points, and the random access point includes a position in the segment at which the decoder can decode fragments that are the last traveling with respect to said random access point, regardless of fragments that are preceding with respect to said random access point; and формировать индекс сегмента для мультимедийного сегмента, причем индекс сегмента включает в себя временной диапазон представления для каждого мультимедийного фрагмента в мультимедийном сегменте, соответствующий байтовый диапазон в мультимедийном сегменте, занимаемый каждым мультимедийным фрагментом, и индикатор присутствия точки произвольного доступа, который указывает, присутствует ли точка произвольного доступа в каждом мультимедийном фрагменте.generate a segment index for the multimedia segment, wherein the segment index includes a presentation time range for each multimedia fragment in the multimedia segment, a corresponding byte range in the multimedia segment occupied by each multimedia fragment, and an indicator of the presence of a random access point that indicates whether a random access point is present access in each multimedia fragment. 18. Машиночитаемый носитель по п. 17, в котором инструкции при исполнении побуждают одно или более вычислительных устройств определять положения для точек произвольного доступа среди множества мультимедийных фрагментов, причем точки произвольного доступа расположены в переменных не фиксированных точках среди множества мультимедийных фрагментов.18. The computer-readable medium of claim 17, wherein the instructions upon execution cause one or more computing devices to determine positions for random access points among the plurality of multimedia fragments, wherein the random access points are located at variable non-fixed points among the plurality of multimedia fragments.
RU2014147463A 2012-04-26 2013-04-25 Improved blocks transmission steaming system on request for streaming processing with small delay RU2629001C2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/456,474 US9380096B2 (en) 2006-06-09 2012-04-26 Enhanced block-request streaming system for handling low-latency streaming
US13/456,474 2012-04-26
PCT/US2013/038247 WO2013163448A1 (en) 2012-04-26 2013-04-25 Enhanced block-request streaming system for handling low-latency streaming

Publications (2)

Publication Number Publication Date
RU2014147463A RU2014147463A (en) 2016-06-20
RU2629001C2 true RU2629001C2 (en) 2017-08-24

Family

ID=48471085

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2014147463A RU2629001C2 (en) 2012-04-26 2013-04-25 Improved blocks transmission steaming system on request for streaming processing with small delay

Country Status (13)

Country Link
EP (1) EP2842336A1 (en)
JP (1) JP6105717B2 (en)
KR (1) KR101741484B1 (en)
CN (1) CN104221390B (en)
BR (1) BR112014026741B1 (en)
CA (1) CA2869311C (en)
HK (1) HK1203015A1 (en)
IL (1) IL234872A (en)
MY (1) MY166917A (en)
PH (1) PH12014502203B1 (en)
RU (1) RU2629001C2 (en)
TW (1) TWI492598B (en)
WO (1) WO2013163448A1 (en)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10866952B2 (en) 2013-03-04 2020-12-15 Fisher-Rosemount Systems, Inc. Source-independent queries in distributed industrial system
US10678225B2 (en) 2013-03-04 2020-06-09 Fisher-Rosemount Systems, Inc. Data analytic services for distributed industrial performance monitoring
US9665088B2 (en) 2014-01-31 2017-05-30 Fisher-Rosemount Systems, Inc. Managing big data in process control systems
US10649424B2 (en) 2013-03-04 2020-05-12 Fisher-Rosemount Systems, Inc. Distributed industrial performance monitoring and analytics
US10909137B2 (en) 2014-10-06 2021-02-02 Fisher-Rosemount Systems, Inc. Streaming data for analytics in process control systems
US10649449B2 (en) 2013-03-04 2020-05-12 Fisher-Rosemount Systems, Inc. Distributed industrial performance monitoring and analytics
US9558220B2 (en) 2013-03-04 2017-01-31 Fisher-Rosemount Systems, Inc. Big data in process control systems
US10671028B2 (en) 2013-03-15 2020-06-02 Fisher-Rosemount Systems, Inc. Method and apparatus for managing a work flow in a process plant
CN105900434A (en) * 2013-11-27 2016-08-24 交互数字专利控股公司 Media presentation description
US9813474B2 (en) * 2014-03-07 2017-11-07 Ericsson Ab ABR video white spot coverage system and method
US10135890B2 (en) * 2015-03-06 2018-11-20 Sony Interactive Entertainment LLC Latency-dependent cloud input channel management
US10528345B2 (en) * 2015-03-27 2020-01-07 Intel Corporation Instructions and logic to provide atomic range modification operations
KR102367134B1 (en) 2015-06-25 2022-02-24 삼성전자주식회사 Method for controlling accelerator and accelerator thereof
CN106559677B (en) * 2015-09-30 2020-04-03 华为技术有限公司 Terminal, cache server and method and device for acquiring video fragments
KR102393158B1 (en) 2015-10-13 2022-05-02 삼성전자주식회사 A method and apparatus for service provisioning using a bitstream including metadata
CN105406913B (en) * 2015-10-27 2019-07-19 航天恒星科技有限公司 Signal processing method, device and China Mobile Multimedia Broadcasting system
US9426543B1 (en) * 2015-12-18 2016-08-23 Vuclip (Singapore) Pte. Ltd. Server-based video stitching
US10503483B2 (en) 2016-02-12 2019-12-10 Fisher-Rosemount Systems, Inc. Rule builder in a process control network
US10079884B2 (en) * 2016-03-14 2018-09-18 Adobe Systems Incorporated Streaming digital content synchronization
CN105915582B (en) * 2016-03-28 2019-04-02 深圳市双赢伟业科技股份有限公司 The method and router of router access webpage
WO2017207861A1 (en) * 2016-05-30 2017-12-07 Teleste Oyj An arrangement for media stream organization
CN107634930B (en) * 2016-07-18 2020-04-03 华为技术有限公司 Method and device for acquiring media data
US11617019B2 (en) * 2016-07-28 2023-03-28 Qualcomm Incorporated Retrieving and accessing segment chunks for media streaming
US20190222872A1 (en) * 2016-09-30 2019-07-18 Net Insight Intellectual Property Ab Playout buffering in a live content distribution system
WO2018087309A1 (en) * 2016-11-10 2018-05-17 Telefonaktiebolaget Lm Ericsson (Publ) Resource segmentation to improve delivery performance
US20200021867A1 (en) * 2017-03-22 2020-01-16 Lg Electronics Inc. Broadcast signal transmitting and receiving method and device
CN108668179B (en) * 2017-03-27 2021-05-14 华为技术有限公司 Transmission method of media index file and related equipment
CN109936715B (en) 2017-12-19 2021-09-03 华为技术有限公司 MP4 file processing method and related equipment thereof
CN110545492B (en) * 2018-09-05 2020-07-31 北京开广信息技术有限公司 Real-time delivery method and server of media stream
US11197052B2 (en) * 2019-07-12 2021-12-07 Apple Inc. Low latency streaming media
CN110324727A (en) * 2019-07-16 2019-10-11 浙江大华技术股份有限公司 Computer readable storage medium, server and its method for responding playing request
US20230031033A1 (en) * 2021-07-28 2023-02-02 Grass Valley Limited Virtual file system for dynamically providing media content

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2325686C2 (en) * 2003-08-01 2008-05-27 Майкрософт Корпорейшн Sparse caching for audio and visual information flow
WO2009054907A2 (en) * 2007-10-19 2009-04-30 Swarmcast, Inc. Media playback point seeking using data range requests
US20110239078A1 (en) * 2006-06-09 2011-09-29 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel http and forward error correction
US20120047280A1 (en) * 2010-08-19 2012-02-23 University-Industry Cooperation Group Of Kyung Hee University Method and apparatus for reducing deterioration of a quality of experience of a multimedia service in a multimedia system

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7594250B2 (en) 1992-04-02 2009-09-22 Debey Henry C Method and system of program transmission optimization using a redundant transmission sequence
US7516232B2 (en) 2003-10-10 2009-04-07 Microsoft Corporation Media organization for distributed sending of media data
US7805456B2 (en) * 2007-02-05 2010-09-28 Microsoft Corporation Query pattern to enable type flow of element types
TWI435612B (en) * 2007-02-23 2014-04-21 Nokia Corp Backward-compatible characterization of aggregated media data units
CN101146110B (en) * 2007-09-25 2011-06-29 深圳市迅雷网络技术有限公司 A method for playing stream media
TWI355168B (en) * 2007-12-07 2011-12-21 Univ Nat Chiao Tung Application classification method in network traff
CN101217553A (en) * 2008-01-15 2008-07-09 中兴通讯股份有限公司 A media flow random access treatment method
CN101222616B (en) * 2008-01-22 2011-08-10 中兴通讯股份有限公司 Transmission processing method for MPEG conveying stream in video-on-demand service
US20090257508A1 (en) * 2008-04-10 2009-10-15 Gaurav Aggarwal Method and system for enabling video trick modes
US8621044B2 (en) * 2009-03-16 2013-12-31 Microsoft Corporation Smooth, stateless client media streaming
US8909806B2 (en) * 2009-03-16 2014-12-09 Microsoft Corporation Delivering cacheable streaming media presentations
CN101989977B (en) * 2009-08-04 2013-08-07 华为技术有限公司 Method, device, server and system for implementing rich media real-time services
US9917874B2 (en) * 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2325686C2 (en) * 2003-08-01 2008-05-27 Майкрософт Корпорейшн Sparse caching for audio and visual information flow
US20110239078A1 (en) * 2006-06-09 2011-09-29 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel http and forward error correction
WO2009054907A2 (en) * 2007-10-19 2009-04-30 Swarmcast, Inc. Media playback point seeking using data range requests
US20120047280A1 (en) * 2010-08-19 2012-02-23 University-Industry Cooperation Group Of Kyung Hee University Method and apparatus for reducing deterioration of a quality of experience of a multimedia service in a multimedia system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS, Technologies under Consideration, 98. MPEG MEETING; Geneva; (MOTION PICTURE EXPERT GROUP OR ISO/IEC JTC1/SC29/WG11), no.N12330, 03 December 2011. *
ANONYMOUS, Text of ISO/IEC IS 23009-1 Media Presentation Description and Segment Formats, 98. MPEG MEETING; Geneva; (MOTION PICTURE EXPERT GROUP OR ISO/IEC JTC1/SC29/WG11), no.N12329, 06 January 2012. QUALCOMM INCORPORATED, MPD Profiling to Support DASH over MBMS, 3GPP TSG-SA4 Meeting #68, S4-120429, Tokyo, Japan, 16- 20 April 2012, найдено на http://www.3gpp.org/DynaReport/TDocExMtg--S4-68--29223.htm. *

Also Published As

Publication number Publication date
JP6105717B2 (en) 2017-03-29
KR101741484B1 (en) 2017-05-30
TWI492598B (en) 2015-07-11
BR112014026741A8 (en) 2021-06-22
KR20150003296A (en) 2015-01-08
MY166917A (en) 2018-07-24
BR112014026741A2 (en) 2017-06-27
IL234872A (en) 2017-05-29
CN104221390B (en) 2018-10-02
PH12014502203A1 (en) 2014-12-10
PH12014502203B1 (en) 2014-12-10
BR112014026741B1 (en) 2021-10-26
WO2013163448A1 (en) 2013-10-31
TW201408020A (en) 2014-02-16
HK1203015A1 (en) 2015-10-09
EP2842336A1 (en) 2015-03-04
CA2869311A1 (en) 2013-10-31
CA2869311C (en) 2018-02-13
JP2015519813A (en) 2015-07-09
CN104221390A (en) 2014-12-17
RU2014147463A (en) 2016-06-20

Similar Documents

Publication Publication Date Title
US11770432B2 (en) Enhanced block-request streaming system for handling low-latency streaming
US11743317B2 (en) Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
RU2629001C2 (en) Improved blocks transmission steaming system on request for streaming processing with small delay
RU2523918C2 (en) Enhanced block-request streaming using scalable encoding
RU2577473C2 (en) Enhanced block-request streaming using url templates and construction rules
JP6117151B2 (en) Extended block-request streaming with collaborative concurrent HTTP and forward error correction
US20130007223A1 (en) Enhanced block-request streaming system for handling low-latency streaming