BR112014003909B1 - Sistema de codificação de mídia e respectivo método implementado por computador - Google Patents

Sistema de codificação de mídia e respectivo método implementado por computador Download PDF

Info

Publication number
BR112014003909B1
BR112014003909B1 BR112014003909-7A BR112014003909A BR112014003909B1 BR 112014003909 B1 BR112014003909 B1 BR 112014003909B1 BR 112014003909 A BR112014003909 A BR 112014003909A BR 112014003909 B1 BR112014003909 B1 BR 112014003909B1
Authority
BR
Brazil
Prior art keywords
encoding
media
network
media stream
capacity
Prior art date
Application number
BR112014003909-7A
Other languages
English (en)
Other versions
BR112014003909A2 (pt
Inventor
Conrad Savio Jude Gomes
Gireesh Kumar M
Senthilkumar KRISHNADOSS
Original Assignee
Sling Media Pvt Ltd
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
Application filed by Sling Media Pvt Ltd filed Critical Sling Media Pvt Ltd
Publication of BR112014003909A2 publication Critical patent/BR112014003909A2/pt
Publication of BR112014003909B1 publication Critical patent/BR112014003909B1/pt

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/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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • 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/75Media network packet handling
    • H04L65/752Media network packet handling adapting media to network capabilities
    • 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/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • 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/80Responding to QoS
    • 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/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • 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/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • 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/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6377Control signals issued by the client directed to the server or network components directed to server
    • H04N21/6379Control signals issued by the client directed to the server or network components directed to server directed to encoder, e.g. for requesting a lower encoding rate
    • 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
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L65/607
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/164Feedback from the receiver or from the transmission channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

MÉTODO DE CODIFICAR FLUXO DE MÍDIA SEGMENTADO E SISTEMA DE CODIFICAÇÃO DE MÍDIA. Sistemas e métodos são descritos para fornecer um fluxo de mídia transmitido a partir de um sistema de codificação a um media player remotamente localizado que solicita segmentos do fluxo de mídia. O fluxo de mídia é codificado em segmentos conforme um parâmetro de codificação. Dados são reunidos sobre as condições atuais da rede e/ou o media player, e codificação do fluxo de mídia é ajustada durante a operação para adaptar a condições de mudança. O parâmetro de codificação é adequadamente ajustado em resposta a mudanças em largura de banda disponível e/ou tempo de transmissão de segmento, conforme apropriado.

Description

CAMPO TÉCNICO
[0001] A presente revelação geralmente refere-se a técnicas para controlar a codificação de um fluxo de bits segmentado, tal como um fluxo de mídia em HTML 5 ou formato semelhante, que é transmitido através de uma conexão de dados.
ANTECEDENTES
[0002] Dispositivos de mudança de lugar (place shifting) tipicamente empacotam conteúdo de mídia que pode ser transmitido através de uma rede área estendida ou local a um computador portátil, telefone celular, assistente pessoal digital, televisão remota ou outro dispositivo remoto capaz de reproduzir o fluxo de mídia em pacotes para o espectador. A mudança de lugar (place shifting), portanto, permite aos consumidores verem seu conteúdo de mídia a partir de localizações remotas, tais como outras salas, hotéis, escritórios, e/ou quaisquer outras localizações onde dispositivos tocadores de mídia portáteis podem ganhar acesso a uma rede sem fio ou outra rede comunicações.
[0003] Enquanto a mudança de lugar (place shifting) melhora muito a conveniência concedida ao espectador, desafios podem surgir na criação e transmissão efetiva do fluxo de mídia codificado. A variedade ambientes de rede (por exemplo, LAN, WAN, Internet, telefone sem fio, etc.) que pode ser suportada pode levar a variações significativas nos parâmetros de codificação ao longo do tempo. Além disso, redes digitais, particularmente aquelas baseadas em Ethernet e/ou protocolos do tipo TCP/IP, são inerentemente imprevisíveis, e as condições de rede podem mudar rapidamente mesmo quando o fluxo de mídia está sendo transmitido. O fluido e natureza imprevisível de comunicações de rede podem, portanto, levar a dificuldades em selecionar parâmetros de codificação particulares para serem usados na criação e transmissão do fluxo de mídia através de qualquer rede particular. Além disso, pode ser relativamente difícil manter parâmetros de codificação que são, ao mesmo tempo, eficientes e atuais. Isto é particularmente difícil com formatos de streaming segmentados tais como HTML 5 e similares.
[0004] É, portanto, desejável criar sistemas e métodos para controlar a codificação de um fluxo de mídia segmentado que é transmitido através de uma rede ou outra conexão de dados. Estes e outros recursos e características desejáveis se tornarão aparentes a partir da descrição detalhada subsequente e das Reivindicações em apêndice, tomadas em conjunto com os desenhos anexos e esta seção de antecedentes.
BREVE SUMÁRIO
[0005] Conforme várias modalidades exemplificativas, sistemas e métodos são descritos para fornecer um fluxo de mídia codificado que é composto de múltiplos segmentos. Em várias modalidades, um método de codificar um fluxo de mídia, fornecido a partir de um sistema de codificação para um media player remotamente localizado,adequadamente compreende codificar o fluxo de mídia no sistema de codificação conforme pelo menos um parâmetro de codificação, em que o fluxo de mídia compreende uma pluralidade segmentos que coletivamente compõem o fluxo de mídia. Uma solicitação para pelo menos uma da pluralidade segmentos é recebida a partir do media player remotamente localizado e um dos segmentos do fluxo de mídia codificado é transmitido ao media player remotamente localizado em resposta à solicitação. O pelo menos um parâmetro de codificação é ajustado em tempo real durante a codificação de segmentos subsequentes com base em um tempo de transmissão do pelo menos um dos segmentos.
[0006] Outras modalidades fornecem um sistema de codificação para fornecer um fluxo de mídia a um player remoto através de uma rede. O sistema de codificação de mídia adequadamente compreende um módulo de codificação de mídia configurado para receber um sinal de entrada e para codificar o fluxo de mídia conforme pelo menos um parâmetro de codificação, em que o fluxo de mídia compreende uma pluralidade segmentos sequenciais que compõem coletivamente o fluxo de mídia, uma interface de rede configurada recebe solicitações para os segmentos e para transmitir os segmentos de mídia codificados ao player remoto através da rede, e um módulo de controle configurado para ajustar o pelo menos um parâmetro de codificação para codificação de segmentos subsequentes com base em um tempo de transmissão de pelo menos um dos segmentos sequenciais.
[0007] Várias modalidades, aspectos e outros recursos estão descritos em mais detalhe abaixo.
BREVE DESCRIÇÃO DAS FIGURAS DE DESENHO
[0008] As modalidades exemplificativas irão doravante ser descritas em conjunto com as seguintes figuras de desenho, em que os números semelhantes denotam elementos semelhantes, e
[0009] A FIG. 1 é um diagrama de bloco de um sistema exemplificativo para codificar fluxos de mídia segmentados;
[0010] A FIG. 2 é um diagrama de bloco de um dispositivo de codificação de mídia exemplificativo;
[0011] A FIG. 3 é um diagrama de uma estrutura de categoria/ marca d'água exemplificativa, que pode ser útil na descrição de certas condições de buffer;
[0012] A FIG. 4 é um fluxograma de um processo exemplificativo para controlar a codificação de um fluxo de mídia segmentado;
[0013] A FIG. 5 é um diagrama de uma estrutura de codificação exemplificativa que considera tempos de transmissão do segmento.
DESCRIÇÃO DETALHADA
[0014] A seguinte descrição detalhada da invenção é meramente exemplificativa em natureza e não se destina a limitar a invenção ou a aplicação e usos da invenção. Além disso, não há intenção de ficar vinculado a nenhuma teoria apresentada nos antecedentes precedentes ou na seguinte descrição detalhada.
[0015] Conforme várias modalidades, a eficiência e eficácia dacodificação do fluxo de mídia podem ser muito melhoradas considerando tempos para transmitir segmentos anteriores do fluxo de mídia. Parâmetros de codificação (por exemplo, taxa de bits, resolução, taxa de quadros e/ou similares) podem ser ajustados no sentido ascendente ou no sentido descendente, conforme apropriado, para tirar vantagem da capacidade rede excedente, ou para evitar atrasos de transmissão que podem impactar a experiência do espectador. O tempo de transmissão do segmento pode ser considerado em lugar de ou em adição à ocupação de um buffer de transmissão, e/ou quaisquer outros fatores, conforme desejado. Ajustando a codificação dos segmentos subsequentes do fluxo de mídia tomando em consideração os tempos reais para transmitir segmentos precedentes, o comportamento do sistema e/ou a experiência do usuário podem ser significativamente melhorados.
[0016] Algumas técnicas de streaming agora usam solicitações controladas pelo cliente para controlar o fluxo de dados no fluxo de mídia. Isto é em contraste com muitas das implementações de streaming mais tradicionais, em que o servidor de mídia tipicamente reteve o controle primário sobre a entrega do fluxo de mídia. O padrão HTML5, por exemplo, permite ao cliente solicitar “segmentos” sequenciais ou outros arquivos que são reproduzidos em série para fornecer coletivamente o fluxo de mídia. A Patente US 7.818.444 descreve outro exemplo de streaming de vídeo, em que uma série de “streamlets” sequenciais é individualmente solicitada pelo cliente. Os segmentos ou outros arquivos menores são frequentemente recuperados usando protocolo de transporte de hipertexto (HTTP) convencional ou técnicas semelhantes, desse modo fornecendo um mecanismo de entrega muito conveniente que é prontamente roteado na maioria das redes convencionais.
[0017] Em muitas situações de mudança de lugar (place shifting), é frequentemente desejável (se não necessário) codificar o fluxo de mídia em relativo tempo real conforme o conteúdo é recebido. Se o usuário deseja ver um programa de televisão ao vivo, por exemplo, sinais representando o programa são tipicamente codificados (ou transcodificados) em formato transmissível por rede conforme o sinal é recebido pelo codificador. Mesmo se o espectador está assistindo a um fluxo de mídia com base em conteúdo previamente armazenado (por exemplo, um programa armazenado em um DVR ou mídia semelhante), o codificador tipicamente cria o fluxo passível de rotear por rede ao mesmo tempo que o fluxo é transmitido ao espectador. Uma desvantagem da codificação em tempo real é que recursos de computação e transmissão suficientes devem estar disponíveis para manter o fluxo em tempo real, ou a experiência do espectador pode ser degradada.
[0018] Por outro lado, a codificação em tempo real permite que a codificação seja ajustada para compensar por variações nas condições da rede, preferências do usuário, e outros fatores que podem surgir. A codificação pode ser ajustada no sentido ascendente ou no sentido descendente, por exemplo, para compensar por flutuações da largura de banda ou diferenças nas capacidades do player. Isto é, um fluxo de mídia com uma taxa de bits, taxa de quadros e/ou resolução mais baixas pode ser fornecido quando as capacidades do cliente ou a rede conseguem apenas suportar o fluxo de qualidade mais baixa, enquanto mantém a capacidade entregar um fluxo de qualidade mais alta (mas largura de banda mais alta), conforme as condições permitem. Um exemplo de tal sistema está descrito em Publicação de Patente US 2009/0103607. Nesse exemplo, a utilização do buffer de transmissão no dispositivo de mudança de lugar (place shifting) pode ser usada como uma estimativa de largura de banda de rede, e a qualidade do codificador pode ser ajustada em conformidade.
[0019] Durante uma sessão de streaming, em que o cliente sincronicamente solicita segmentos de um fluxo de mídia de um servidor, ajustes adicionais podem ser feitos para compensar por tempos de entrega de segmento e/ou outros fatores temporais. Se nenhuma solicitação de cliente está ativa durante um período de tempo síncrono, por exemplo, então largura de banda não usada pode estar disponível. A largura de banda pode também estar disponível quando uma solicitação particular está atrasada devido à latência de rede ou outros fatores. Em qualquer destes casos, um regime de qualidade que apenas considera largura de banda da rede pode concluir, de forma inadequada, que a qualidade do fluxo deve ser aprimorada para tirar vantagem da largura de banda disponível. Quando solicitações subsequentes chegam, entretanto, esta situação pode criar um gargalo se a largura de banda para acomodar o aprimoramento da qualidade não estiver, na realidade, disponível. Outras implementações que apenas consideram largura de banda poderiam concluir de forma inadequada que a qualidade fluxo deve ser rebaixada sob condições semelhantes porque a ocupação de buffer irá tipicamente aumentar se não há solicitação, ou se a solicitação está atrasada.
[0020] É, portanto, desejável considerar fatores outros que não a largura de banda durante modelos de streaming solicitação-resposta, e/ou em outras situações, conforme apropriado. Em vez de simplesmente regular a qualidade do codificador com base na largura de banda da rede, várias modalidades diferenciam adequadamente entre a largura de banda disponível causada por flutuações da rede e a largura de banda disponível causada pela falta de solicitações ativas para dados. No primeiro caso, a codificação pode ser ajustada conforme desejado; no último, pode ser desejável evitar fazer alterações que poderiam criar questões para futuras solicitações.
[0021] Além disso, pode ser desejável em algumas situações ajustar a codificação para compensar por atrasos de transmissão mesmo se as condições de largura de banda podem ditar que nenhum ajuste é de outro modo necessário. Uma largura de banda alta, mas conexão de dados de latência baixa, poderiam justificar qualidade codificação mais baixa do que estaria, de outro modo, disponível para assegurar tempos de trânsito de ida e volta suficientes para solicitações de segmento e entregas de segmento ao cliente.
[0022] Ainda adicionalmente, pode haver situações em que o buffer de transmissão está preenchido por razões não relacionadas com a largura de banda disponível. Como notado acima, o buffer pode encher porque nenhuma solicitação recente foi recebida. Nesta situação, pode ser desejável simplesmente manter parâmetros de codificação atuais em vez de “reduzir a marcha” ou degradar a qualidade do fluxo de mídia enquanto aguarda solicitações subsequentes chegarem, contanto que o buffer não esteja em risco de transbordamento.
[0023] É, portanto, desejável adaptar a codificação do fluxo de mídia tomando em consideração a natureza de solicitação-resposta de algumas técnicas de streaming. Parâmetros que podem ser considerados podem incluir, em várias modalidades, o tempo levado para enviar um ou mais segmentos na conexão de dados, o rendimento alcançado durante envios de segmento ativo na conexão de dados, a ocupação do buffer de transmissão em termos de duração em intervalos periódicos (ou semelhante), e/ou outros fatores conforme apropriado. Detalhe adicional de uma modalidade exemplificativa é proporcionado abaixo.
[0024] Voltando, agora, às figuras de desenho e com referência inicial à FIG. 1, um sistema de mudança de lugar (place shifting) exemplificativo 100 inclui adequadamente um sistema de codificador de mudança de lugar (place shifting) 102 que recebe conteúdo de mídia 122 de uma fonte de conteúdo 106, codifica o conteúdo recebido em um formato de streaming que inclui múltiplos segmentos 123, e então transmite os segmentos 123 de fluxo de mídia codificados 120 a um media player 104 através da rede 110. O media player 104 recebe adequadamente o fluxo codificado 120, decodifica o fluxo, e apresenta o conteúdo decodificado a um espectador em uma televisão ou outro mostrador 108. Em várias modalidades, um servidor 112 pode também ser fornecido para se comunicar com o sistema de codificador 102 e/ou player 104 através da rede 110 para auxiliar estes dispositivos a localizar um ao outro, mantendo a segurança, fornecendo ou recebendo conteúdo ou informação e/ou quaisquer outras características, conforme desejado. Esse recurso não é necessário em todas as modalidades, contudo, e os conceitos descritos nesse documento podem ser implantados em qualquer ambiente ou aplicação de streaming de dados, incluindo mudança de lugar (place shifting) mas também qualquer outra mídia ou outra situação de streaming de dados.
[0025] Sistema de codificador de mudança de lugar (place shifting) 102 é qualquer componente, hardware, software logic e/ou semelhantes capaz de transmitir um fluxo em pacotes de conteúdo de mídia através da rede 110. Em várias modalidades, o dispositivo de mudança de lugar (place shifting) 102 incorpora lógica de codificador e/ou transcodificador (coletivamente “codificador”) adequada para converter áudio/vídeo ou outros dados de mídia 122 em um formato em pacotes que pode ser transmitido através da rede 110. Os dados de mídia 122 podem ser recebidos em qualquer formato, e podem ser recebidos de qualquer fonte interna ou externa 106 tal como qualquer espécie de transmissão, fonte de programação de televisão por cabo ou satélite, um “vídeo sob demanda” ou fonte semelhante, um disco de vídeo digital (DVD) ou outra mídia removível, uma câmera de filmar, e/ou semelhantes. O sistema de codificador 102 codifica dados de mídia 122 para criar fluxo de mídia 120 de qualquer maneira. Em várias modalidades, o sistema de codificador 102 contém um buffer de transmissão 105 que temporariamente armazena dados codificados antes da transmissão em rede 110. Conforme o buffer 105 enche ou esvazia, um ou mais parâmetros de codificação (por exemplo, a taxa de bits de fluxo de mídia 120) podem ser ajustados para manter a qualidade da imagem desejável e o rendimento dos dados em vista do desempenho da rede então atual. Como descrito mais completamente abaixo, várias modalidades são capazes de calcular uma taxa de codificação atual com base em taxa de transferência de rede, tempos para transmitir segmentos, e/ou outros fatores, e ajustar a taxa de codificação conforme as condições de mudança garantem. Mudanças nos parâmetros de codificação podem ser desencadeadas por, por exemplo, mudanças na utilização do buffer de saída 105 ou mudanças em tempos de trânsito de segmento, conforme desejado.
[0026] Diversos exemplos de sistemas de codificação 102 podem ser implementados usando qualquer dos vários produtos SLINGBOX disponíveis a partir de Sling Media de Foster City, Califórnia, embora outros produtos possam ser usados em outras modalidades. Muitos tipos diferentes de sistemas de codificador 102 são geralmente capazes de receber conteúdo de mídia 122 de uma fonte externa 106 tal como qualquer espécie de gravador de vídeo digital (DVR), set top box (STB), fonte de programação por cabo ou satélite, DVD player, e/ou semelhantes. Em tais modalidades, o sistema de codificador 102 pode adicionalmente fornecer comandos 124 à fonte 106 para produzir sinais desejados 122. Tais comandos 124 podem ser fornecidos através de qualquer espécie de interface com fio ou sem fio, tal como um infravermelho ou outro transmissor sem fio que emula comandos de controle remoto passíveis de serem recebidos pela fonte 106. Outras modalidades, entretanto, particularmente aquelas que não envolvem de mudança de lugar (place shifting), podem modificar ou omitir este recurso inteiramente.
[0027] Em outras modalidades, o sistema de codificador 102 pode estar integrado com qualquer espécie de receptor de conteúdo ou outras capacidades tipicamente afiliadas com a fonte 106. O sistema de codificador 102 pode ser um STB híbrido ou outro receptor, por exemplo, que também fornece recursos de transcodificação e de mudança de lugar (place shifting). Tal dispositivo pode receber satélite, cabo, transmissão e/ou outros sinais que codificam programação de televisão ou outro conteúdo recebido de uma antena, modem, servidor e/ou outra fonte. O receptor pode ainda demodular ou, de outro modo, decodificar os sinais recebidos para extrair a programação que pode ser visualizada localmente e/ou deslocada de lugar para um player remoto 104, conforme apropriado. Tais dispositivos 102 podem também incluir um banco de dados de conteúdo armazenado em uma unidade disco rígido, memória, ou outro meio de armazenamento para suportar um recurso de gravador de vídeo pessoal ou digital (DVR) ou outra biblioteca de conteúdo, conforme apropriado. Por isso, em algumas modalidades, a fonte 106 e o sistema de codificador 102 podem estar fisicamente e/ou logicamente contidos dentro de um componente, invólucro ou chassi comum.
[0028] Em ainda outras modalidades, o sistema de codificador 102 é um programa de software, applet ou semelhante executando em um sistema de computação convencional (por exemplo, um computador pessoal). Em tais modalidades, o sistema de codificador 102 pode codificar, por exemplo, parte ou tudo de um mostrador de tela tipicamente fornecido a um usuário do sistema de computação para deslocar de lugar para uma localização remota. Um dispositivo capaz de fornecer tal funcionalidade é o produto SlingProjector disponível a partir da Sling Media de Foster City, Califórnia, que executa em um computador pessoal convencional, embora outros produtos possam ser utilizados também.
[0029] O media player 104 é qualquer dispositivo, componente, módulo, hardware, software e/ou semelhantes capaz de receber um fluxo de mídia 120 de um ou mais sistemas de codificador 102. Em várias modalidades, o player remoto 104 é um computador pessoal (por exemplo, um “laptop” ou computador similarmente portátil, embora computadores tipo desktop possam também ser usados), um telefone celular, um assistente pessoal digital, um media player pessoal ou semelhantes. Em muitas modalidades, o player remoto 104 é um dispositivo de computação para fins gerais que inclui um aplicativo de media player em software ou firmware que é capaz de se conectar com segurança a sistema de codificador de mudança de lugar (place shifting) 102, como descrito mais completamente abaixo, e de receber e apresentar conteúdo de mídia ao usuário do dispositivo, conforme apropriado. Em outras modalidades, entretanto, o media player 104 é um autônomo ou outro dispositivo de hardware separado, capaz de receber o fluxo de mídia 120 através de qualquer parte de rede 110 e decodificar o fluxo de mídia 120 para fornecer um sinal de saída 126 que é apresentado em uma televisão ou outro mostrador 108. Um exemplo de um receptor de mídia autônomo 104 é o produto SLINGCATCHER disponível a partir de Sling Media de Foster City, Califórnia, embora outros produtos possam ser equivalentemente usados.
[0030] A rede 110 é qualquer rede digital ou outra rede comunicações capaz de transmitir mensagens entre remetentes (por exemplo, sistema de codificador 102) e receptores (por exemplo, receptor 104). Em várias modalidades, a rede 110 inclui qualquer número de conexões de dados públicas ou privadas, ligações ou redes suportando qualquer número de protocolos de comunicações. A rede 110 pode incluir a Internet, por exemplo, ou qualquer outra rede com base em TCP/IP ou outros protocolos convencionais. Em várias modalidades, a rede 110 também incorpora uma rede telefone sem fio e/ou com fio, tal como uma rede comunicações de celular para se comunicar com telefones celulares, assistentes pessoais digitais, e/ou semelhantes. A rede 110 pode também incorporar qualquer espécie de redes de área local sem fio ou com fio, tal como uma ou mais redes IEEE 802.3 e/ou IEEE 802.11.
[0031] O sistema de codificador 102 e/ou player 104 são, portanto, capazes de se comunicar com player 104 de qualquer maneira (por exemplo, usando qualquer espécie de conexões de dados 128 e/ou 125, respectivamente). Tal comunicação pode ocorrer através de uma ligação de área estendida que inclui a Internet e/ou uma rede telefonia, por exemplo; em outras modalidades, as comunicações entre os dispositivos 102 e 104 podem ocorrer através de uma ou mais ligações de área local com fio ou sem fio que estão conceitualmente incorporadas dentro da rede 110. Em várias modalidades equivalentes, sistema de codificador 102 e receptor 104 podem ser diretamente conectados através de qualquer espécie de cabo (por exemplo, um cabo Ethernet ou semelhantes) com pequena ou nenhuma outra funcionalidade rede fornecida.
[0032] Muitos cenários de mudança de lugar (place shifting) diferentes podem ser formulados com base em recursos de computação e comunicações disponíveis, demanda do consumidor e/ou quaisquer outros fatores. Em várias modalidades, os consumidores podem desejar deslocar de lugar conteúdo dentro de uma casa, escritório ou outra estrutura, tal como de um sistema de codificador de mudança de lugar (place shifting) 102 a um computador de mesa ou portátil localizado em outra sala. Em tais modalidades, o fluxo de conteúdo será tipicamente fornecido através de uma rede área local com fio ou sem fio operando dentro da estrutura. Em outras modalidades, os consumidores podem desejar deslocar de lugar conteúdo através de uma banda larga ou conexão de rede semelhante de uma localização primária a um computador ou outro player remoto 104 localizado em uma segunda casa, escritório, hotel ou outra localização remota. Em ainda outras modalidades, os consumidores podem desejar deslocar de lugar o conteúdo a um telefone celular, assistente pessoal digital, media player, player de videogame, media player automotivo ou de outro veículo e/ou outro dispositivo através de uma ligação móvel (por exemplo, uma conexão GSM/EDGE ou CDMA/EVDO, qualquer espécie de 3G, 4G ou link de telefonia subsequente, um “Wi-fi” link IEEE 802.11, e/ou semelhantes). Diversos exemplos de aplicativos de mudança de lugar (place shifting) disponíveis para várias plataformas são fornecidos por Sling Media de Foster City, Califórnia, embora os conceitos descritos nesse documento possam ser usados em conjunto com produtos e serviços disponíveis a partir de qualquer fonte.
[0033] O sistema de codificador 102, então, geralmente cria um fluxo de mídia 120 que é passível de ser roteado em rede 110 com base em conteúdo 122 recebido da fonte de mídia 106. Como notado acima, o fluxo de mídia entregue ao cliente pode ser dividido em segmentos individuais que podem ser transmissíveis em um esquema baseado em arquivo (por exemplo, HTML ou semelhantes) para entrega a cliente de mídia 104. Cada segmento pode representar qualquer duração do conteúdo de vídeo, e os segmentos podem ser individualmente codificados a partir do sinal de entrada 122 usando quaisquer parâmetros apropriados, como descrito mais completamente abaixo. Em uma modalidade exemplificativa, segmentos podem representar partes do conteúdo na ordem de um ou mais milissegundos mais ou menos, embora outras modalidades possam usar segmentos de qualquer duração, incluindo segmentos duradouros na ordem de um segundo ou mais. Cada segmento é, então, transmitido como parte de fluxo de mídia 120 em resposta a uma solicitação pelo segmento que é recebida do cliente 104. Solicitações podem ser recebidas através de uma conexão de controle (por exemplo, conexão 125 na FIG. 1) ou semelhantes; em algumas modalidades, solicitações podem simplesmente ser instruções do tipo HTTP “GET” ou estruturas HTML-5 semelhantes que solicitam o segmento particular 123 de fluxo 120. Conforme a largura de banda e/ou tempo de transmissão de segmento mudam, a codificação de segmentos 123 futuros pode ser apropriadamente modificada, conforme pretendido. Em várias modalidades, o media player 104 pode auxiliar no relato de tempos de trânsito para segmentos 123 a codificador 102 através da conexão 125 ou semelhantes; em outras modalidades, o codificador 102 adequadamente estima tempos de transmissão com base nos tempos entre solicitações de segmento consecutivas recebidas a partir do media player 104, com base no tempo observado para o segmento 123 deixar o buffer 105, e/ou com base em qualquer outro fator.
[0034] Para esse fim, e com referência agora à FIG. 2, o sistema de codificador 102 tipicamente inclui um módulo de codificador 202, um buffer 105 e uma interface de rede 206 em conjunto com lógica de controle apropriada 205. Em operação, o módulo de codificador 202 tipicamente recebe conteúdo de mídia 122 de uma fonte interna ou externa 106, codifica uma parte do conteúdo recebido 122 como um segmento (ou em qualquer outro formato desejado) para fluxo de mídia 120 conforme é recebido, e armazena o segmento codificado em buffer 105. A interface de rede 206, então, recupera o segmento formatado a partir do buffer 105 para transmissão em rede 110 em resposta a uma solicitação recebida do media player 104. O módulo de controle 205 monitora e controla adequadamente a codificação e processos de transmissão de rede executados por módulo de codificação 202 e interface de rede 206, respectivamente, e pode executar outros recursos também. Sistema de codificador 102 pode também ter um módulo 208 ou outro recurso capaz de gerar e fornecer comandos 124 a uma fonte de mídia externa 106, como descrito acima.
[0035] Na modalidade exemplificativa mostrada na FIG. 2, os módulos 202, 105, 205, 206 e 208 podem ser implementados em software ou firmware residente em qualquer memória, armazenamento em massa ou outro meio de armazenamento dentro do sistema de codificador 102 em código-fonte, código-objeto e/ou qualquer outro formato. Essas características ser executadas em qualquer espécie de processador ou microcontrolador executando dentro do sistema de codificador 102. Em várias modalidades, o sistema de codificador 102 é implementado como um sistema em um sistema de tipo chip (SoC) com processamento, armazenamento e recursos de entrada/saída integrados. Várias implementações de hardware de SoC estão disponíveis a partir de Texas Instruments, Conexant Systems, Broadcom Inc., e outros fornecedores, conforme apropriado. Outras modalidades podem usar qualquer número de componentes de processamento discretos e/ou integrados, memórias, recursos de entrada/saída e/ou outros recursos, conforme desejado.
[0036] Como notado acima, a criação de um fluxo de mídia 120 tipicamente envolve codificar e/ou transcodificar um fluxo de mídia de entrada 122 recebido de uma fonte de mídia interna ou externa 106 em segmentos ou outro formato digital adequado que pode ser transmitido em rede 110. Geralmente, o fluxo de mídia 120 é colocado em um padrão ou outro formato conhecido (por exemplo, o formato WINDOWS MEDIA disponível a partir do Microsoft Corporation de Redmond, Washington, embora outros formatos tais como o formato FLASH, formato QUICKTIME, formato REALPLAYER, formato MPEG, e/ou semelhantes possam ser usados em quaisquer outras modalidades) que pode ser transmitido em rede 110. Esta codificação pode ocorrer, por exemplo, em qualquer espécie de módulo de codificação 202, conforme apropriado. Módulo de codificação 202 pode ser qualquer espécie de hardware (por exemplo, um processador de sinal digital ou outro circuito integrado usado para codificação de mídia), software (por exemplo, programação de sof tware ou firmware usada para codificação de mídia que executa no SoC ou outro processador descrito acima), ou semelhantes. O módulo de codificação 202 é, portanto, qualquer recurso que recebe dados de mídia 122 da fonte interna ou externa 106 (por exemplo, através de qualquer espécie de interface de hardware e/ou software) e codifica ou transcodifica os dados recebidos no formato desejado para transmissão em rede 110. Embora a FIG. 2 mostre um módulo de codificação único 202, na prática, o sistema 102 pode incluir qualquer número de módulos de codificação 202. Módulos de codificação diferentes 202 podem ser selecionados com base em preferência de player 104, condições de rede, e/ou semelhantes.
[0037] Em várias modalidades, o codificador 202 pode também aplicar outras modificações, transformadas e/ou filtros ao conteúdo recebido antes ou durante o processo de transcodificação. Os sinais de vídeo, por exemplo, podem ser redimensionados, cortados e/ou distorcidos. De modo semelhante, a cor, matiz e/ou saturação do sinal podem ser alterados, e/ou redução de ruído ou outra filtragem pode ser aplicada. Sinais de áudio podem ser modificados ajustando volume, taxa de amostragem, parâmetros mono/estéreo, redução de ruído, parâmetros de som de multi-canal e/ou semelhantes. Codificação e/ou decodificação de gerenciamento de direitos digitais pode também ser aplicada em algumas modalidades, e/ou outros recursos podem ser aplicados, conforme desejado.
[0038] Como notado acima, um ou mais parâmetros do processo de codificação (por exemplo, a taxa de bits, taxa de quadros, resolução da imagem e/ou outros parâmetros) podem ser ajustados durante o processo de codificação para produzir um fluxo de mídia 120 que é modificado ou sintonizado com as condições então vigentes de rede 110 e/ou media player 104. A taxa de bits de codificação, por exemplo, pode ser ajustada em resposta a uma capacidade medida de rede 110 e/ou tempos de transmissão do segmento, conforme desejado. Isto é, a taxa de bits pode ser aumentada quando as condições são capazes de acomodar a taxa mais alta; por outro lado, a taxa de bits pode ser diminuída quando as condições são menos capazes de acomodar as maiores demandas. Ajustando a taxa de bits do processo de codificação em resposta ao desempenho da rede, a experiência do usuário pode ser muito melhorada. Modalidades equivalentes podem ajustar a taxa de quadros, resolução e/ou outros parâmetros além da, ou em lugar da, taxa de bits, conforme apropriado.
[0039] A interface de rede 206 refere-se a qualquer hardware, software e/ou firmware que permite ao sistema de codificação 102 se comunicar em rede 11. Em várias modalidades, a interface de rede 206 inclui programação de pilha de rede adequada e outros recursos e/ou hardware de interface de rede convencional (NIC) tal como qualquer interface com fio ou sem fio, conforme desejado.
[0040] Em várias modalidades, o módulo de controle 205 monitora e controla a codificação e processos de transmissão executados por módulo de codificação 202 e interface de rede 206, respectivamente. Para esse fim, módulo de controle 205 é qualquer hardware, software, firmware ou combinação dos mesmos capaz de executar tais recursos. Em várias modalidades, o módulo de controle 205 processa ainda comandos recebidos do player remoto através de interface de rede 206 (por exemplo, enviando comandos 124 à fonte de mídia 106 através de um módulo de comando 208 ou semelhantes). O módulo de controle 205 pode também transmitir comandos ao player remoto 104 através da interface de rede 206 e/ou pode controlar ou, de outro modo, efetuar quaisquer outras operações do sistema de codificador 102. Em várias modalidades, o módulo de controle 205 implementa os recursos de controle usados para monitorar e ajustar a operação de codificador 202 e/ou interface de rede 106 para fornecer eficientemente o fluxo de mídia a player remoto 104.
[0041] Como notado acima, várias técnicas para monitorar a capacidade rede 110 envolvem monitorar a plenitude e/ou utilização de um buffer 105 no sistema de codificador 102 bem como as taxas em que o buffer 105 enche e esvazia. Essa informação de utilização de buffer pode ser complementada, em algumas modalidades, com informação de cronometragem de segmento, conforme desejado. O buffer 105 é tipicamente qualquer espécie de recurso de hardware e/ou software capaz de armazenar temporariamente dados codificados antes da transmissão em rede 110. Tipicamente, o buffer 105 é implementado em uma parte da memória ou armazenamento em massa associado com o codificador 101. Se o buffer 105 permanece relativamente vazio, então a taxa de transmissão de dados pode ser deduzida para ser relativamente bem combinada com a taxa de codificação de dados. Isto é, dados estão sendo transmitidos em aproximadamente a mesma taxa que está sendo codificada. Se o buffer 105 está enchendo, entretanto, isto indica que o codificador está gerando dados mais rápido do que a rede 110 pode transmitir os dados.
[0042] A FIG. 3 mostra um exemplo de uma estrutura de categoria/marca d'água que pode ser útil para descrever certas condições de buffer 105, e que pode ser usada para ajustar a codificação de segmentos futuros em fluxo de mídia 120. Na modalidade exemplificativa da FIG.3, o topo do buffer 105 representa um estado vazio com pouco ou nenhum dado em buffer presente, e o fundo do buffer 105 representa um estado cheio com relativamente pouco ou nenhum espaço disponível para armazenar em buffer dados adicionais. Como notado na FIG. 3, a quantidade espaço disponível em buffer 105 pode ser representada por vários estados exemplificativos 302 (“Bônus”), 304 (“Verde”), 306 (“Amarelo”), 308 (“Vermelho”) e 310 (“Cheio”). Outras modalidades podem usar qualquer número de estados tendo diferentes tamanhos relativos, descritores ou outros recursos. No exemplo da FIG. 3, um estado “Bônus” 302 pode ser considerado para ser um estado de vazio de buffer relativo (por exemplo, menos do que cerca de 15% mais ou menos) quando parâmetros relativamente agressivos podem ser usados. O estado “Verde” 304 pode representar alguns dados em buffer 105 (por exemplo, cerca de 15-30% mais ou menos), mas com uma parte substancial do buffer permanecendo disponível para uso. O estado “Amarelo” 306 pode representar um pouco mais de enchimento de buffer 105 (por exemplo, cerca de 30-70% mais ou menos), com o estado “Vermelho” representando uma condição de plenitude buffer relativa (por exemplo, cerca de 70-85% mais ou menos). O estado “cheio” pode representar condições em que o buffer é simplesmente descarregado (por exemplo, dados são descartados) para evitar transbordamento. Esta condição pode criar lacunas no fluxo de conteúdo apresentado ao espectador, contudo. Como notado acima, outras modalidades podem usar qualquer número de estados amplamente variados 302-310 para descrever buffer 105, com qualquer estado ou combinação de estados tendo qualquer tamanho, limite superior ou inferior ou outros parâmetros, conforme desejado.
[0043] Em um ambiente convencional, os limites entre vários estados 302-310 podem representar “marcas d'água” que indicam pontos de transição em que o parâmetro de codificação é ajustado no sentido ascendente e/ou no sentido descendente. Conforme a utilização do buffer move-se do estado “amarelo” 306 ao estado “verde” 304, por exemplo, a qualidade da codificação pode ser aumentada para tirar vantagem da capacidade excedente. Da mesma forma, a qualidade pode ser diminuída conforme a utilização do buffer viola uma marca d'água do topo (como mostrado na FIG. 3) em direção ao fundo da figura.
[0044] Em várias modalidades, este conceito amplo de marcas d'água pode ser expandido para melhorar ainda mais o desempenho. Em vez de limitar alterações de parâmetro a ocorrências de violações de marca d'água, por exemplo, ajustes podem ser feitos dentro de categorias (ou de outro modo) com base nos valores medidos/observados reais da taxa do codificador, capacidade do buffer e/ou tempos de transmissão de segmento. Por exemplo, a codificação pode ser ajustada com base em uma quantidade específica que é adaptada às condições reais, em vez de simplesmente ajustar de acordo com uma quantidade predeterminada que foi, empiricamente ou de outra forma, determinada em um momento diferente. Além disso, ações diferentes podem ser tomadas em diferentes níveis de operação. Codificação mais agressiva (por exemplo, aumentando a qualidade do segmento), por exemplo, pode ser executada nos níveis mais elevados (por exemplo, nível “bônus” 302 ou nível “verde” 304) em comparação com os níveis mais baixos. Assim, pode ser possível e desejável aumentar a qualidade do segmento durante a operação “verde” mesmo se uma marca d'água não foi cruzada. Da mesma forma, pode ser desejável manter a qualidade em um nível mais baixo durante a operação “vermelha” ou “amarela”, mesmo seguindo uma transição de marca d'água, para deixar o buffer vazio um pouco antes de fazer alterações de parâmetro mais agressivas. Em vez de simplesmente ajustar a codificação no sentido ascendente ou no sentido descendente em resposta a transições de marca d'água, então, processamento mais avançado pode ser usado para obter melhor desempenho e/ou melhor utilização de ativos. Detalhes adicionais de uma implementação exemplificativa são estabelecidos abaixo.
[0045] Algumas modalidades podem ainda reter o uso de estruturas de marca d'água (tal como a estrutura 300 mostrada na FIG. 3) por conveniência, compatibilidade com versões anteriores, compensação por medição, computação ou outras tolerâncias, e/ou semelhantes. Em várias modalidades, os níveis particulares representados por uma ou mais marcas d’água podem ser ajustados no sentido ascendente ou no sentido descendente durante a operação, conforme desejado, para refletir o estado atual de codificação e transmissão. Geralmente, as marcas d’água podem ser variadas como uma função de quaisquer parâmetros conhecidos e mensuráveis, tais como capacidade rede, taxa de bits de codificador, tempo de transmissão de segmento, largura & altura de vídeo, e/ou outros fatores conforme apropriado.
[0046] Voltando agora à FIG. 4, um método exemplificativo 400 para controlar a codificação de um fluxo de mídia segmentado 120 adequadamente inclui as amplas etapas de reunião de dados (etapa 406), processamento dos dados reunidos (etapa 408), ajuste de um ou mais parâmetros de codificação (etapas 412, 415) em momentos apropriados (etapas 410, 414, 416), e ajuste da qualidade da codificação em momentos apropriados (etapas 402, 404). de um modo geral, as várias etapas de método 400 podem ser executadas com qualquer espécie de lógica de hardware, software e/ou firmware dentro do sistema de codificador 102. O método 400 pode ser executado, por exemplo, por lógica de controle 205 (FIG. 2) operando em conjunto com a lógica do codificador 202, buffer 105 e interface de rede 206, conforme apropriado. Em várias modalidades, as várias etapas de método 400 são executadas em resposta às instruções de software ou firmware armazenadas em uma memória, ou em uma unidade disco e/ou outro armazenamento associado com o sistema de codificador 102. Tais instruções podem ser executadas por qualquer processador e/ou outros recursos de processamento dentro do sistema de codificador 102 ou semelhante. Os meios particulares usados para implementar cada uma das várias funções mostradas na FIG. 4, então, podem ser qualquer espécie de hardware de processamento (tal como controlador 205 da FIG. 2) executando lógica de software convencional em qualquer formato.
[0047] De um modo geral, a qualidade pode ser ajustada em qualquer base regular ou irregular (etapa 402). Em várias modalidades, a configuração da qualidade é recalculada (etapa 404) em qualquer base temporal regular (por exemplo, cada segundo mais ou menos), qualquer base lógica irregular (por exemplo, cada n-ésima iteração de método 400, tal como cada décima iteração mais ou menos), ou em qualquer outra base, conforme desejado. Em uma modalidade exemplificativa, o método 400 repete em uma frequência de cerca de a cada 100 ms mais ou menos (outras modalidades podem variar), com configurações de qualidade sendo recalculadas em cada décima iteração mais ou menos, desse modo resultando em recálculo aproximadamente a cada segundo. Outras modalidades podem usar outros parâmetros, e/ou podem considerar outros fatores, conforme desejado. Por exemplo, configurações de qualidade podem ser recalculadas em algumas modalidades quando é sabido que o parâmetro de codificação foi ajustado; por outro lado, algumas modalidades podem omitir recálculo quando é sabido que o parâmetro de codificação não foi ajustado desde o último recálculo. Outras modalidades podem complementar ou modificar a etapa 402 de qualquer maneira.
[0048] As configurações de qualidade são calculadas conforme quaisquer parâmetros, restrições ou técnicas adequados (etapa 404). de um modo geral, as configurações de qualidade são calculadas com base no valor então atual do parâmetro ajustado (por exemplo, taxa de bits, taxa de quadros, resolução e/ou semelhantes). Em várias modalidades, uma média (ou média ponderada) de valores de parâmetro atuais e antigos pode ser usada na determinação das novas configurações de qualidade, conforme apropriado. A quantidade dados históricos usados na criação da média podem ser determinados de qualquer maneira, e dados históricos podem ser ponderados conforme desejado (por exemplo, de modo que aos dados mais antigos é dado menos peso).
[0049] Os dados são reunidos em qualquer base apropriada (etapa 406). Em várias modalidades, dados são reunidos em uma base temporal relativamente regular (por exemplo, a cada 100 ms mais ou menos), embora outras modalidades possam reunir dados em uma base mais irregular ou outra. Os dados reunidos na etapa 406 são qualquer informação que permite a computação da capacidade rede, taxa de bits de codificador, tempos de transmissão de segmento e/ou outros fatores, conforme apropriado. Em várias modalidades, dados são reunidos em relação a quantidade tráfego de rede (por exemplo, número de bytes ou milissegundos de conteúdo) transferido desde a última iteração da etapa 406, a quantidade dados codificados (por exemplo, em bytes ou milissegundos) gerados desde a última iteração da etapa 406, e/ou o nível de ocupação do buffer atual (por exemplo, expresso em bytes ou milissegundos de dados, e/ou como uma percentagem da capacidade do buffer total). Outros fatores ou parâmetros podem ser coletados em qualquer número de modalidades alternativas.
[0050] Os dados reunidos são então processados para chegar em uma estimativa de capacidade rede, uma taxa de codificador calculada (etapa 408), e/ou quaisquer outros valores, conforme desejado. Em várias modalidades, os valores reunidos na etapa 406 podem ter sua média calculada durante qualquer período de tempo apropriado (por exemplo, um segundo mais ou menos) para reduzir os efeitos de transientes de relativamente curta duração que podem ocorrer. A capacidade rede pode ser calculada com base na quantidade média de tráfego de rede transferido durante algum período de tempo recente apropriado (por exemplo, um segundo mais ou menos), por exemplo. A taxa de codificador pode ser calculada de forma semelhante com base em taxas de codificador salvas reais e/ou médias durante um período de tempo relevante (por exemplo, um segundo mais ou menos). Assim, rastreando as taxas pelas quais o buffer 105 é enchido (por exemplo, a taxa de codificador) e esvaziado (por exemplo, a taxa de transmissão de rede), quaisquer discrepâncias entre as duas podem ser prontamente identificadas. Da mesma forma, a ocupação do buffer média durante um período de tempo relativamente recente pode ser usada para estimar a zona atual de operação. Em várias modalidades, a zona de operação pode ser ajustada com base em uma média de menos amostras (por exemplo, representando um período de tempo mais curto, tal como cerca de 0,5 seg mais ou menos) do que a janela de tempo médio usada para os outros cálculos executados. As médias usadas para computar os vários valores podem mudar com cada iteração do método 400, de modo que as médias são efetivamente médias “corrediças”, conforme apropriado. A carga do processador do sistema pode também ser considerada de qualquer maneira. Em várias modalidades, o processador sobre e/ou sob utilização pode ser rastreado e compensado de qualquer maneira.
[0051] As mudanças no parâmetro de codificação podem ser feitas de qualquer maneira (etapas 410 e 412). Em várias modalidades, o parâmetro de codificação é avaliado a cada iteração do método 400 (por exemplo, na ordem de cada 100ms mais ou menos) conforme vários critérios. Na modalidade exemplificativa mostrada na FIG. 4, o parâmetro de codificação é ajustado quando ocorre mudança na utilização do buffer e/ou tempo de transmissão de segmento, conforme apropriado (etapa 410). Conforme a utilização do buffer aumenta ou diminui a um novo estado 302-310 (FIG.3), por exemplo, a taxa pode ser ajustada para refletir o mais novo estado. Tempos de transmissão de segmento podem também ser considerados de qualquer maneira. Algumas modalidades podem considerar tempos de transmissão de segmento vis a vis a duração do segmento, ou qualquer outro valor limiar. Se o tempo de transmissão de segmento é menor que uma percentagem relevante da duração do segmento, por exemplo, então uma configuração mais alta pode ser garantida. Por outro lado, se o tempo de transmissão de segmento é maior do que uma certa percentagem da duração do segmento, então uma configuração de codificador mais baixa pode ser garantida. Valores limiares diferentes podem ser derivados, calculados ou de outra forma formulados com base em observação e/ou desempenho desejado, conforme apropriado. Além disso, as marcas d'água ou limites de estado particulares usados podem variar de iteração à iteração do método 400 devido a recálculos na etapa 404.
[0052] Em algumas modalidades, apenas certas mudanças em utilização do buffer e/ou tempo de transmissão de segmento irão desencadear mudanças ao parâmetro de codificação. Como notado acima, o parâmetro de codificação pode não ser ajustado quando, por exemplo, a operação atravessar o limite do estado separando a operação “vermelha” de “amarelo” (e/ou “amarelo” de “verde”) para evitar excesso de enchimento do buffer 105, para permitir ao buffer 105 esvaziar, e/ou por qualquer outra razão. Outras regras podem ser aplicadas conforme desejado de modo que ajustes de parâmetro não são necessariamente executados em resposta a todas as transições de estado. Além disso, ajustes podem ser executados mesmo quando nenhuma transição de estado ocorreu. Ajustes podem ser apropriados para “ajustar” operação dentro de um estado de funcionamento, por exemplo, ou ajustes podem ser feitos baseado unicamente nas taxas de enchimento e esvaziamento de buffer relativas, o valor de utilização de buffer global e/ou os tempos de transmissão de segmento sem considerar se uma marca d'água particular foi violada ou outra transição de estado ocorreu.
[0053] Se um ajuste de qualidade é garantido, o parâmetro de codificação particular pode ser ajustado no sentido ascendente ou no sentido descendente, conforme desejado (etapa 412). Taxa de bits de codificação, por exemplo, pode ser aumentada ou diminuída para refletir capacidade rede ou tempo de transmissão aumentado ou diminuído, por exemplo. A quantidade particular de mudança dependerá da modalidade particular e vários outros fatores. Por exemplo, mudanças da taxa de bits podem aumentar de forma mais agressiva quando o buffer 105 está relativamente vazio e/ou o tempo de transmissão de segmento está relativamente baixo, uma vez que o espaço de buffer está disponível para compensar por qualquer excesso de agressividade. Por outro lado, aumentos da taxa podem ser aplicados muito mais conservadoramente quando o buffer 105 está relativamente cheio e/ou os tempos de segmento são relativamente longos para evitar acúmulo. Tempos de transmissão podem ajustar essas considerações de outras maneiras, como notado nesse documento, e outros fatores podem ser considerados conforme apropriado.
[0054] Em muitas modalidades, pode ser indesejável fazer mudanças demasiado frequentes ao parâmetro de codificação. A manutenção de pelo menos algum intervalo de tempo entre mudanças de parâmetro pode permitir utilização de buffer eficaz, e pode reduzir quaisquer efeitos transitórios de mudanças de curta duração em capacidade rede e/ou carga de processador, desse modo melhorando a experiência do usuário. Esse atraso em mudanças de tempo é refletido em um parâmetro de “intervalo de tempo” na FIG. 4 que pode ser ajustado conforme desejado (etapas 413 e 415). Pode ser benéfico, por exemplo, impedir mudanças de parâmetro subsequentes por um meio segundo mais ou menos (ou por diversos segundos, conforme apropriado) após qualquer mudança de modo que os efeitos da mudança podem ser mais cuidadosamente considerados. Em algumas modalidades, a quantidade atraso seguindo uma diminuição em qualidade codificação pode ser menor do que o atraso seguindo um aumento. Em várias modalidades, o parâmetro de intervalo de tempo estabelecido na etapa 415 pode ser considerado em um ponto posterior (por exemplo, etapa 414) para determinar se ajustes à qualidade codificação são permitidos.
[0055] Além de permitir mudanças no parâmetro de codificação em resposta a mudanças na utilização do buffer e/ou tempos de transmissão de segmento, várias modalidades ainda ajustam os parâmetros de codificação quando as condições de outro modo garantem (etapa 416). Ajustes de qualidade podem incluir quaisquer mudanças à taxa de bits, taxa de quadros, resolução da imagem, qualidade áudio ou vídeo, ou quaisquer outros parâmetros ou recursos conforme desejados. Por exemplo, o parâmetro de codificação pode ser ajustado para corresponder aos cálculos de capacidade rede feitos na etapa 408. Se a taxa de rede é significativamente maior ou menor do que a taxa de codificação, por exemplo, a taxa de codificação pode ser ajustada para corresponder à capacidade da rede mesmo se a utilização do buffer não indica uma transição de zona/violação da marca d'água.
[0056] Ajustando a qualidade da codificação em resposta às condições reais, o desempenho do sistema de codificação 102 pode ser substancialmente melhorado. Medindo e manipulando as taxas de enchimento e/ou esvaziamento de buffer 105, (por exemplo, para adaptar as taxas de enchimento e esvaziamento uma a outra tão próximo quanto possível) e/ou considerando os efeitos de tempos de transmissão de segmento, a experiência do usuário pode ser significativamente melhorada. Além disso, considerando a utilização do processador no ajuste dos parâmetros de codificação, o processador pode ser mais efetivamente utilizado, desse modo evitando questões que podem resultar de desequilíbrio.
[0057] As técnicas particulares usadas para ajustar um ou mais parâmetros de codificação podem variar significativamente de modalidade a modalidade usando os conceitos gerais estabelecidos nesse documento. Uma implementação detalhada é apresentada abaixo que é concebida como um exemplo das espécies de recursos que podem ser implementados em um sistema ou técnica de codificação exemplificativo. Os vários parâmetros e valores usados neste exemplo, entretanto, são estritamente para fins de ilustração, e não são concebidos como sendo exclusivos ou, de outro modo, limitantes.
[0058] A FIG. 5 mostra um exemplo de uma série de determinações de qualidade codificador 502-518 que pode ser usada em uma configuração de mudança de lugar (place shifting) ou semelhantes em que um HTML 5 ou outro fluxo de mídia segmentado é codificado em resposta a condições de rede em tempo real. Cada uma destas determinações pode ser processada como parte da função 408 acima, ou de qualquer outra maneira. Muitas modalidades alternativas, mas equivalentes, diferentes podem mudar qualquer dos vários parâmetros mostrados na tabela como desejados para criar qualquer número de diferentes restrições, parâmetros e/ou níveis de operação com base em quaisquer restrições. A FIG. 5 não se destina a ser limitante, mas sim a fornecer um exemplo de uma implementação real que considera ambos utilização de buffer e tempos de transmissão de segmento na codificação de um fluxo de mídia segmentado para de mudança de lugar (place shifting) ou outros fins.
[0059] Em cada parte da FIG. 5, um ou mais fatores reunidos a partir da função 406 acima são avaliados (ver funções 408, 410, 414, 416 acima) para determinar e ajustar as configurações de codificador para um fluxo de mídia segmentado. Os fatores considerados neste exemplo podem incluir, sem limitação: uma estimativa de rendimento de rede periódica (“NET”), uma estimativa de rendimento de rede durante o segmento ativo (“ACTIVENET”), um valor configurado ou de outro modo estabelecido para o parâmetro de codificador (“SET”), um valor de SET de codificador máximo alcançado na conexão de dados (“PEAKSET”, que pode ser a média de múltiplas amostras), o tempo levado para enviar um segmento (“NsendT”, por exemplo, em milissegundos ou outras unidades de medida), a duração armazenada em buffer atual de dados (“Cbuf”, por exemplo, em milissegundos ou outras unidades de medida), a duração armazenada em buffer anterior (“Pbuf”, por exemplo, em milissegundos ou outras unidades de medida), e/ou a duração configurada de cada segmento (“SEGDURATION”, por exemplo, em milissegundos). Outras modalidades podem considerar fatores alternativos ou adicionais, conforme desejado.
[0060] Como mostrado na FIG. 5, a determinação 501 mostra que a qualidade do codificador pode ser definida para um valor particular (por exemplo, 50% de capacidade máxima no exemplo da FIG. 5) se a estimativa de rendimento da rede (NET) exceder o rendimento do codificador configurado (SET), e se a configuração de rendimento atual ainda não alcançou 50% (mais ou menos) de sua configuração máxima. Isso permite a ramp-up relativamente rápida operar a capacidade quando quantidades substanciais de largura de banda estão disponíveis. Note que “configuração máxima” neste contexto pode se relacionar com a capacidade máxima do codificador, ou a capacidade máxima alcançada durante operação recente, ou qualquer outro valor “máximo” conforme desejado. Esta determinação 501 pode ser executada tão frequentemente quanto desejado neste exemplo; modalidades alternativas podem usar outros parâmetros.
[0061] A determinação 502 define a qualidade do codificador para o menor de um valor por default (por exemplo, 300 kbps neste exemplo) ou 120% de seu valor então atual quando a estimativa de rendimento da rede é maior do que a configuração do codificador configurada e a configuração atual é menor do que 80% (mais ou menos) de sua capacidade máxima. Novamente, isto permite a um ramp-up mais rápido operar a velocidade quando largura de banda substancial está disponível. Neste exemplo, a determinação 502 é executada depois de cerca de 2 segundos terem decorrido desde o ajuste anterior; outras modalidades podem usar outros parâmetros conforme desejado.
[0062] A determinação 503 aumenta o parâmetro de codificação ao menor de um valor por default (novamente, 300 kbps neste exemplo) ou 110% da taxa então atual quando a largura de banda excedente existe e o tempo para enviar o segmento é menor do que um valor apropriado (por exemplo, 500 ms neste exemplo). Isto reflete que tempo de transmissão excedente e largura de banda excedente estão ambas disponíveis, assim a qualidade da codificação pode ser aumentada sob tais condições.
[0063] A determinação 504, de forma semelhante, aumenta o parâmetro de codificação quando a largura de banda excedente está disponível e o tempo para enviar o segmento armazenado em buffer é menor do que 80% da duração do segmento. Esta verificação é apenas executada em intervalos de 5 segundos mais ou menos neste exemplo para evitar ajuste em excesso, embora outras modalidades possam usar outros parâmetros. Note que a consideração do intervalo de segmento é em adição à consideração da utilização do buffer, desse modo permitindo aos dados das transmissões de segmento anteriores afetarem a codificação de segmentos subsequentes.
[0064] A determinação 505 “reduz a marcha“ inversamente para degradar o parâmetro de codificação por uma quantidade relativamente pequena (por exemplo, 10% mais ou menos) quando a capacidade da rede é menos do que a capacidade do codificador atual, o buffer está enchendo (por exemplo, a duração de buffer atual Cbuff excede a duração de buffer prévia Pbuff), e o tempo para enviar o segmento é maior do que 70% da duração do segmento. Na tabela mostrada na FIG. 5, a determinação 505 levaria a operação para fora da marca d'água “bônus” e para dentro da marca d'água “verde” sob tais condições. A determinação 506 pode forma semelhante degradar a configuração da qualidade por outro 10% se condições semelhantes persistem, desse modo permitindo aos tempos de transmissão de segmento afetarem a codificação de segmentos subsequentes. As determinações 507-509 continuam a reduzir a configuração da qualidade conforme a largura de banda da rede excede a configuração de codificador atual e o buffer continua a encher. A determinação 507 neste exemplo reduz a configuração de codificador a 70% durante a operação “amarelo” e a determinação 508 reduz a configuração do codificador a 60% de seu valor atual durante a operação “vermelho”. A determinação 509 mostra o codificador definido para 50% de seu valor atual quando o buffer descarrega. Novamente, qualquer número de diferentes determinações 501-509 pode ser formulado em outras modalidades, cada uma considerando qualquer número de parâmetros alternativos ou adicionais.
[0065] Considerando os tempos para transmitir segmentos anteriores que compõem um fluxo de mídia, a codificação de segmentos subsequentes pode ser ajustada em tempo real para responder a mudanças em condições da rede. A natureza única de formatos de streaming segmentados (por exemplo, HTML 5 e semelhantes) pode, portanto, ser explorada para fornecer desempenho substancialmente melhorado e capacidade configuração que simplesmente não foi possível com outros formatos de streaming.
[0066] Como notado acima, os ajustes, transições, parâmetros de transição, parâmetros de cronometragem e outros recursos específicos do exemplo precedente particulares se destinam unicamente para fins de ilustração, e não foram feitos para serem limitantes. Outras modalidades podem fornecer sistemas e técnicas de ajuste de taxa de parâmetro que variam significativamente daqueles descritos nesse documento, e que usam qualquer número de parâmetros alternativos ou adicionais e valores de parâmetro.
[0067] O termo “exemplificativo” é usado nesse documento para representar um exemplo, caso ou ilustração que pode ter qualquer número de alternativas. Qualquer implementação descrita nesse documento como exemplificativa não deve necessariamente ser interpretada como preferida ou vantajosa sobre outras implementações. Enquanto diversas modalidades exemplificativas foram apresentadas na descrição detalhada acima mencionada, deve ser observado que um vasto número de variações alternativas, mas equivalentes, existem, e os exemplos apresentados nesse documento não se destinam a limitar o escopo, aplicabilidade, ou configuração da invenção de qualquer maneira. Pelo contrário, várias mudanças podem ser feitas na função e arranjo de elementos descritos sem se afastar do escopo das Reivindicações e seus equivalentes legais.

Claims (6)

1. Método Implementado por Computador Executado por Sistema de Codificação, para executar codificação adaptativa em tempo real para produzir fluxo de mídia segmentado, que é composto coletivamente por segmentos sequenciais tendo uma duração, em que os segmentos são solicitados cada um individualmente por um media player remotamente localizado, caracterizado por que compreende: codificar os segmentos sequenciais do fluxo de mídia pelo sistema de codificação, conforme pelo menos um parâmetro de codificação, que determina uma qualidade do fluxo de mídia; receber, pelo sistema de codificação, uma solicitação para pelo menos um dos segmentos sequenciais a partir do media player localizado remotamente; em resposta à solicitação, transmitir um dos segmentos sequenciais do fluxo de mídia codificado a partir do sistema de codificação para o media player remotamente localizado; e ajustar pelo menos um parâmetro de codificação pelo sistema de codificação durante a codificação de segmentos subsequentes em tempo real com base numa comparação de uma capacidade de codificador atual do sistema de codificação com uma capacidade de rede atual da rede e mediante um tempo de transmissão de um dos segmentos sequenciais transmitidos, em que a comparação é representativa da largura de banda disponível e em que o tempo de transmissão é o tempo necessário para enviar o segmento transmitido anteriormente, de modo que a qualidade do fluxo de mídia seja adaptada em tempo real com base na largura de banda disponível e no tempo de transmissão para enviar o segmento transmitido anteriormente, em que o parâmetro de codificação é ajustado de modo que a qualidade do fluxo de mídia é aumentado, quando a capacidade atual da rede excede a capacidade atual do codificador e o tempo de trânsito é inferior a 80% da duração do segmento transmitido anteriormente, quando um buffer (105) do sistema de codificação é inferior a 15% cheio, e em que um tempo desde uma comparação anterior de uma capacidade de codificador atual do sistema de codificação com uma capacidade de rede atual da rede e uma determinação prévia do tempo de transmissão excede cinco segundos e em que o parâmetro de codificação é ajustado de modo que a qualidade do fluxo de mídia seja diminuída, quando a capacidade da rede for menor que a capacidade atual do codificador, o buffer (105) do sistema de codificação está entre 15% e 30% cheio e está enchendo e em que o tempo desde uma comparação anterior de uma capacidade de codificador atual do sistema de codificação com uma capacidade de rede atual da rede e uma determinação anterior do tempo de transmissão excede quinhentos milissegundos e o tempo de trânsito é superior a 70% da duração do segmento transmitido anteriormente.
2. Método Implementado por Computador Executado por Sistema de Codificação, de acordo com a Reivindicação 1, caracterizado por que o fluxo de mídia é um fluxo de mídia HTML 5.
3. Método Implementado por Computador Executado por Sistema de Codificação, de acordo com a Reivindicação 1, caracterizado por que cada um dos segmentos sequenciais é um arquivo de mídia separado que é independentemente passível de solicitação pelo media player.
4. Sistema de Codificação de Mídia, para proporcionar um fluxo de mídia para um player remoto numa rede, caracterizado por que o sistema de codificação de mídia compreende: um módulo de codificação de mídia configurado para receber um sinal de entrada e para codificar o sinal de entrada para produzir o fluxo de mídia, conforme pelo menos um parâmetro de codificação que determina uma qualidade do fluxo de mídia, em que o fluxo de mídia compreende segmentos sequenciais que coletivamente compõem o fluxo de mídia; uma interface de rede configurada para receber solicitações para os segmentos e para transmitir os segmentos de mídia codificados ao player remoto através da rede; um módulo de controle configurado para ajustar pelo menos um parâmetro de codificação para codificação de segmentos subsequentes em tempo real com base em um tempo de transmissão de pelo menos um dos segmentos, em que o tempo de transmissão é o tempo levado para enviar o segmento previamente transmitido, de modo que a qualidade do fluxo de mídia é adaptada em tempo real com base no tempo de transmissão para enviar o segmento previamente transmitido; e um buffer de transmissão configurado para ser preenchido pelo módulo de codificação de mídia e esvaziado pela interface de rede, em que o módulo de controle é configurado ainda para ajustar ainda pelo menos um parâmetro de codificação com base na utilização do buffer de transmissão de modo que a qualidade do fluxo de mídia é adaptado em tempo real com base na utilização do buffer de transmissão e no tempo de transmissão para enviar o segmento transmitido anteriormente, em que pelo menos um parâmetro de codificação é ajustado de modo que a qualidade do fluxo de mídia seja aumentada quando a capacidade de rede atual exceder uma capacidade atual do codificador e o tempo de trânsito é inferior a 80% da duração do segmento transmitido anteriormente, quando o buffer de transmissão do sistema de codificação é inferior a 15% cheio e em que um tempo desde uma comparação anterior de uma capacidade atual do codificador do sistema de codificação para uma capacidade de rede atual da rede e uma determinação prévia do tempo de transmissão excede cinco segundos e em que pelo menos um parâmetro de codificação é ajustado de modo que a qualidade do fluxo de mídia seja diminuída quando a capacidade da rede for menor que a capacidade atual do codificador, o buffer de transmissão do sistema de codificação está entre 15% e 30% cheio e está enchendo e em que o tempo desde uma comparação anterior de uma capacidade atual do codificador do sistema de codificação com uma capacidade de rede atual da rede e uma determinação anterior do tempo de transmissão excede quinhentos milissegundos e o tempo de trânsito é superior a 70% da duração do segmento transmitido anteriormente.
5. Sistema de Codificação de Mídia, de acordo com a Reivindicação 4, caracterizado por que o fluxo de mídia é um fluxo de mídia HTML 5.
6. Sistema de Codificação de Mídia, de acordo com a Reivindicação 4, caracterizado por que cada um dos segmentos sequenciais é um arquivo de mídia separado que é independentemente passível de solicitação pelo media player e que tem uma duração.
BR112014003909-7A 2011-08-29 2012-08-29 Sistema de codificação de mídia e respectivo método implementado por computador BR112014003909B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN2974CH2011 2011-08-29
IN2974/CHE/2011 2011-08-29
PCT/IN2012/000574 WO2013030852A2 (en) 2011-08-29 2012-08-29 Systems and methods for controlling the encoding of a segmented media stream using segment transmit times

Publications (2)

Publication Number Publication Date
BR112014003909A2 BR112014003909A2 (pt) 2017-03-21
BR112014003909B1 true BR112014003909B1 (pt) 2022-10-18

Family

ID=47756999

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014003909-7A BR112014003909B1 (pt) 2011-08-29 2012-08-29 Sistema de codificação de mídia e respectivo método implementado por computador

Country Status (6)

Country Link
US (2) US9560106B2 (pt)
EP (1) EP2752002B1 (pt)
BR (1) BR112014003909B1 (pt)
CA (1) CA2847081C (pt)
MX (1) MX336608B (pt)
WO (1) WO2013030852A2 (pt)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9088453B2 (en) 2011-06-01 2015-07-21 Echostar Technologies L.L.C. Apparatus, systems and methods for monitoring the transmission of media content events
JP6369043B2 (ja) 2013-03-15 2018-08-08 株式会社リコー 配信制御システム、配信システム、配信制御方法、及びプログラム
US9338210B2 (en) * 2013-03-15 2016-05-10 Rhapsody International Inc. Distributing content items to users
JP6398215B2 (ja) * 2013-03-15 2018-10-03 株式会社リコー 配信制御システム、配信システム、配信制御方法、及びプログラム
US9532043B2 (en) * 2013-08-02 2016-12-27 Blackberry Limited Wireless transmission of real-time media
US9525714B2 (en) * 2013-08-02 2016-12-20 Blackberry Limited Wireless transmission of real-time media
US10779035B2 (en) * 2014-01-09 2020-09-15 Samsung Electronics Co., Ltd. Method and apparatus of transmitting media data related information in multimedia transmission system
US9635077B2 (en) * 2014-03-14 2017-04-25 Adobe Systems Incorporated Low latency live video streaming
US9838455B2 (en) * 2014-09-19 2017-12-05 Mobitv, Inc. Fast encoding of live streaming media content
EP3016394A1 (en) * 2014-10-30 2016-05-04 Alcatel Lucent Apparatus, user equipment, adaptation server, method and computer program for determining information related to a presentation time of buffered media data
US20160191594A1 (en) * 2014-12-24 2016-06-30 Intel Corporation Context aware streaming media technologies, devices, systems, and methods utilizing the same
CN106713948B (zh) * 2015-11-13 2019-10-11 北京国双科技有限公司 视频分段加载方法和装置
CN110199505B (zh) 2016-12-21 2022-11-18 英国电讯有限公司 确定通信链路的带宽
CN110192394B (zh) 2016-12-21 2023-10-20 英国电讯有限公司 通过网络传送媒体内容的方法和服务器
US11711553B2 (en) * 2016-12-29 2023-07-25 British Telecommunications Public Limited Company Transmission parameter control for segment delivery
US10645437B2 (en) * 2017-04-03 2020-05-05 Sling Media Pvt Ltd Systems and methods for achieving optimal network bitrate
JP2019056971A (ja) * 2017-09-19 2019-04-11 株式会社東芝 データ転送回路、データ転送方法及びプログラム
US10652589B2 (en) 2017-12-08 2020-05-12 Sling Media Pvt Ltd Systems and methods for selecting an initial streaming bitrate
US10834475B1 (en) * 2018-03-15 2020-11-10 Amazon Technologies, Inc. Managing encoding parameters
CN111193684B (zh) * 2018-11-14 2021-12-21 北京开广信息技术有限公司 媒体流的实时递送方法及服务器
US10999588B2 (en) 2019-01-10 2021-05-04 Comcast Cable Communications, Llc Seamless content encoding and transmission
US11272227B1 (en) * 2019-03-25 2022-03-08 Amazon Technologies, Inc. Buffer recovery in segmented media delivery applications

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2001245575A1 (en) * 2000-03-09 2001-09-17 Videoshare, Inc. Sharing a streaming video
US6697996B2 (en) * 2001-05-18 2004-02-24 Lockheed Martin Corp. Multi-dimensional packet recovery system and method
JP2004023732A (ja) * 2002-06-20 2004-01-22 Matsushita Electric Ind Co Ltd データ送信装置、データ受信装置、データ送信方法及びデータ受信方法
US8099755B2 (en) * 2004-06-07 2012-01-17 Sling Media Pvt. Ltd. Systems and methods for controlling the encoding of a media stream
CN103037254B (zh) 2004-06-07 2016-07-13 斯灵媒体公司 个人媒体广播系统
KR101330631B1 (ko) * 2006-08-21 2013-11-18 삼성전자주식회사 통신 환경에 대한 정보를 이용한 데이터 전송 방법 및 장치
CN101578884B (zh) * 2007-01-08 2015-03-04 诺基亚公司 提供和使用译码的媒体流的互操作点的预定信令的系统和方法
US9826197B2 (en) * 2007-01-12 2017-11-21 Activevideo Networks, Inc. Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device
US9191610B2 (en) * 2008-11-26 2015-11-17 Sling Media Pvt Ltd. Systems and methods for creating logical media streams for media storage and playback
WO2010111261A1 (en) * 2009-03-23 2010-09-30 Azuki Systems, Inc. Method and system for efficient streaming video dynamic rate adaptation
US20110035466A1 (en) * 2009-08-10 2011-02-10 Sling Media Pvt Ltd Home media aggregator system and method
US9137551B2 (en) * 2011-08-16 2015-09-15 Vantrix Corporation Dynamic bit rate adaptation over bandwidth varying connection

Also Published As

Publication number Publication date
MX336608B (es) 2016-01-25
WO2013030852A3 (en) 2013-04-25
US10587664B2 (en) 2020-03-10
CA2847081C (en) 2017-05-09
MX2014001889A (es) 2014-05-30
US20180219934A1 (en) 2018-08-02
US9560106B2 (en) 2017-01-31
CA2847081A1 (en) 2013-03-07
EP2752002A2 (en) 2014-07-09
EP2752002B1 (en) 2020-09-23
US20140297813A1 (en) 2014-10-02
BR112014003909A2 (pt) 2017-03-21
EP2752002A4 (en) 2015-03-25
WO2013030852A2 (en) 2013-03-07

Similar Documents

Publication Publication Date Title
BR112014003909B1 (pt) Sistema de codificação de mídia e respectivo método implementado por computador
US11206431B2 (en) Systems and methods for selecting an initial streaming bitrate
TWI423681B (zh) 控制媒體串流編碼的方法及系統
JP6054427B2 (ja) プレイバックレート選択を伴う改良されたdashクライアントおよび受信機
US20180270285A1 (en) Methods and devices for efficient adaptive bitrate streaming
JP5690399B2 (ja) 余剰ネットワーク容量を使用するプログレッシブダウンロードのためのシステムおよび方法
AU2012207151B2 (en) Variable bit video streams for adaptive streaming
US10178037B2 (en) Deadline driven content delivery
WO2019038735A1 (en) SYSTEM AND METHOD FOR PERFORMING SELECTIVE ABR SEGMENT DISTRIBUTION FOR ABR BANDWIDTH WIDTH CONTROL
WO2019038738A1 (en) SYSTEM AND METHOD FOR PROVIDING RAPID ABR START WITH SELECTIVE ABR SEGMENT DISTRIBUTION
JP2015511782A (ja) ダウンロードレートエスティメータを備えた改良されたdashクライアントおよび受信機
JP2015515173A (ja) マルチプルなtcp接続を介したソースと受信機との間のhttpストリーミングの制御
JP2015513840A5 (pt)
CN111886875B (zh) 一种通过网络传送媒体内容的方法及服务器
US20230140250A1 (en) Selective multiple-instance encoding of video frames to provide target frame rate during network transmission

Legal Events

Date Code Title Description
B15K Others concerning applications: alteration of classification

Ipc: H04L 29/06 (2006.01), H04N 19/132 (2014.01), H04N

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 29/08/2012, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO.