“MÉTODO E SISTEMA PARA INSERÇÃO DE ANÚNCIO EM ENTREGA DE MÍDIA AO VIVO OVER THE TOP” [0001] Dividido do pedido de patente de invenção BR 11 2014 032829 3, depositado em 28 de junho de 2013.
CAMPO DA INVENÇÃO [0002] Esta invenção refere-se em geral à entrega de mídia over the top (OTT) e mais especificamente à substituição de anúncio alvo para mídia de streaming próximo ao tempo real.
FUNDAMENTOS DA INVENÇÃO [0003] Os protocolos de entrega próximos ao tempo real são populares para entrega de mídia OTT devido à sua simplicidade, sua capacidade de se adaptar a várias condições de rede através do uso de adaptação de taxa, e o baixo custo de implantação usando infraestruturas de entrega HTTP básicas. A entrega de mídia OTT tipicamente conta com um paradigma de recuperação baseado em segmento usando o protocolo HTTP. O streaming adaptativo a HTTP usa múltiplas codificações (cada uma codificada em uma taxa de bits diferente, resolução, e/ou taxa de quadro), permitindo que o cliente selecione uma codificação apropriada para suas condições de rede local. Arquivos de manifesto são usados para conduzir a informação de codificação a clientes. Os arquivos de manifesto são também usados para indicar localizações de recuperação de segmento. Para conteúdo em tempo real (ao vivo), os segmentos e arquivos de manifesto são produzidos e recuperados por clientes em tempo real.
SUMÁRIO DA INVENÇÃO [0004] Um aspecto geral da entrega de mídia, se usando técnicas de transmissão tradicionais ou técnicas OTT mais recentes, é necessário inserir anúncios em mídia sendo entregues a consumidores como parte de um modelo de operação de negócios suportados por anúncios. A televisão linear tradicional tipicamente insere anúncios em uma base regional e então transmite o fluxo resultante a todos os espectadores na região. Entretanto, a natureza de difusão ponto a ponto de entrega baseada em HTTP permite a entrega de anúncios mais personalizada. Os anúncios
2/38 alvo em entrega OTT exigem paradigmas de inserção de anúncio alternativos.
[0005] Métodos e aparelhos são descritos para executar substituição de anúncio alvo em entrega de mídia over the top (OTT). Um sistema de entrega OTT descrito inclui um processador de fluxo ao vivo, um cliente HTTP, e um proxy de segmento de anúncio que incluem coletivamente uma variedade de mecanismos utilizáveis em diferentes formas para substituição de anúncio.
[0006] Em um aspecto, um método é fornecido para inserir dinamicamente metadados de anúncio em segmentos e arquivos de manifesto sendo gerados em tempo real, para habilitar a substituição de anúncios alvo. O método pode ser executado em parte por um processador de fluxo ao vivo usado para criar segmentos de mídia para entrega OTT via uma rede de entrega de conteúdo (CDN). Em uma modalidade, o fluxo de entrada em tempo real é um feed de televisão linear. Em uma modalidade, o feed de televisão linear contém tons de localização que indicam pods (grupos) de anúncios de chegada (comerciais), o início de cada grupo de anúncios, e o final de cada grupo de anúncios. Em uma modalidade, os tons de localização estão de acordo com a especificação da Society of Cable Telecommunications Engineers (SCTE) Digital Video Subcommitee SCTE-35 Digital Program Insertion Cueing Message for Cable. Em uma modalidade, os descritos de programa SCTE-35 descrevem a estrutura (isto é, o número de anúncios e duração de cada anúncio) dos grupos de anúncios. Em outra modalidade, convocações são usadas para determinar a estrutura (isto é, o número de anúncios e a duração de cada anúncio) do grupo de anúncios. Em uma modalidade, as mensagens de convocação estão de acordo com a especificação da Society of Cable Telecommunications Engineers (SCTE) Digital Video Subcommitee SCTE-130 Digital Program Insertion - Advertising Systems.
[0007] Em outra modalidade, os grupos de anúncios (comerciais) são definidos antecipadamente e especificados fora de banda usando marcadores de tempo (por exemplo, correspondentes à hora de transmissão ou tempo de apresentação de quadros MPEG-TS, ou deslocamento no tempo a partir do início do programa). Em uma modalidade, a estrutura (isto é, o número de anúncios e a duração de cada anúncio) dos grupos de anúncios é também incluída com a informação de desloca
3/38 mento de grupo de anúncios fora de banda. Em uma modalidade, uma Lista de reprodução de múltiplos anúncios de vídeo (VMAP) é usada para especificar a informação de grupo de anúncios fora de banda. Em outra modalidade, um formato XML padrão é usado para especificar a informação de grupo de anúncios fora de banda. Há numerosos métodos e protocolos disponíveis para fornecer informação de grupo de anúncios fora de banda como deveria ser conhecido pelos versados na técnica. Dever-se-ia entender que qualquer tal método seria adequado para uso com a presente invenção.
[0008] As estruturas de grupos de anúncios são usadas para definir limites de anúncios dentro do fluxo em tempo real. Os segmentos são então criados em limites de anúncios e metadados são inseridos nos segmentos e arquivos de manifesto para indicar o início e o fim dos anúncios. Os metadados indicando os anúncios de chegada são inseridos em segmentos e arquivos de manifesto levando aos limites de anúncios. Em uma modalidade, o servidor de decisão de anúncio, identificador de programa, e informação de ponto de anúncio (localização) é incluída nos metadados para habilitar os clientes e intermediários a emitir solicitações de colocação de anúncio alvo.
[0009] Em uma modalidade, as solicitações de colocação de anúncio são emitidas para um servidor de decisão de anúncio para uma ou mais das oportunidades de inserção de anúncio especificadas no grupo de anúncios. Em uma modalidade, o servidor de decisão de anúncio também funciona como um servidor SCTE-130 usado para determinar a estrutura de grupo de anúncios. Em uma modalidade, os segmentos dentro dos limites de programa de anúncio gerados a partir do fluxo de entrada em tempo real são substituídos por segmentos especificados na resposta de colocação de anúncio. Em uma modalidade, os segmentos de anúncio de colocação são transferidos para substituir os segmentos reais. Em outra modalidade, as URLs de segmento associadas com os anúncios (isto é, segmentos dentro dos limites de anúncio) são substituídas no arquivo de manifesto com URLs apontando para os segmentos especificados na resposta de colocação de anúncio. Em outra modalidade, as URLs de segmento associadas com os anúncios (isto é, segmentos dentro de
4/38 limites de anúncio) são substituídas no arquivo de manifesto com URLs apontando para um servidor proxy de segmento de anúncio. Em uma modalidade, as URLs de servidor proxy de anúncio contêm números de sequência exclusivos para habilitar a identificação e correlação de múltiplos segmentos a partir do mesmo anúncio. Em uma modalidade, as URLs de servidor proxy de anúncio contêm identificadores de programa exclusivos para habilitar o direcionamento de anúncios baseado em conteúdo.
[0010] Em outro aspecto, um método é fornecido para extrair dinamicamente metadados de anúncios a partir de segmentos e arquivos de manifesto sendo renderizados em tempo real, para habilitar a substituição de anúncio direcionada. Em uma modalidade, um cliente realiza proxy de solicitações de arquivo de manifesto a partir de um reprodutor de mídia local e extrai metadados de anúncio a partir de um manifesto recebido antes de encaminhá-los para o reprodutor de mídia (por exemplo, extraindo comentários a partir de um manifesto m3u8). Em outra modalidade, o cliente realiza proxy de solicitações de segmento a partir do reprodutor de mídia e extrai metadados de anúncio a partir do segmento antes de encaminhá-los para o reprodutor de mídia (por exemplo, extraindo cabeçalhos proprietários ou canais de dados alternados a partir de fluxos RTP ou MPEG-TS). Em outra modalidade, o cliente monitora chamadas a partir do reprodutor de mídia contendo metadados de anúncio (por exemplo, tags ID3 inseridas nos segmentos MPEG-TS).
[0011] Em uma modalidade, o cliente responde aos metadados que foram inseridos em um fluxo de mídia para indicar os limites de anúncio de chegada. Em uma modalidade, o servidor de decisão de anúncio, identificador de programa, e/ou informação de ponto (colocação) de anúncio é incluída com os metadados de notificação de limite de anúncio de chegada. O cliente pode então tentar realizar a prébusca de um anúncio para usar como uma substituição para o anúncio em fluxo. O cliente emite uma solicitação de colocação de anúncio para um servidor de decisão de anúncio fornecendo o identificador de programa e/ou informação de ponto de anúncio. Em uma modalidade, o cliente também fornece identificador de assinante e/ou usuário, localização (por exemplo, coordenadas GPS, endereço de IP, código
5/38 postal, código de área, código do país, área de comercialização designada (DMA), etc.), e/ou informação demográfica (por exemplo, sexo, idade, etc.) ao servidor de decisão de anúncio, para ajudar na personalização do anúncio.
[0012] Em uma modalidade, os metadados são inseridos em um fluxo de mídia para indicar o início exato do anúncio, isto é, o limite de início do anúncio. Em uma modalidade, o limite de início de anúncio se alinha exatamente com um limite de segmento permitindo substituição de anúncio sem emendas usando substituição de segmento. Em uma modalidade, os metadados são inseridos em um fluxo de mídia para indicar o fim exato do anúncio, isto é, o limite de fim do anúncio. Em uma modalidade, o limite de fim do anúncio é especificado explicitamente fornecendo a duração exata do anúncio. Em outra modalidade, o limite de fim do anúncio é especificado implicitamente pelo limite de início do próximo programa subsequente (que pode ser o início de um novo anúncio ou o reinicio do programa principal). Em uma modalidade, os metadados são inseridos para indicar exigências de relatório para reprodução de anúncio (por exemplo, uma URL a qual mensagens de sinalização deveríam ser postadas, bem como informação de autenticação e/ou o formato da mensagem de sinalização).
[0013] Em uma modalidade, o cliente somente aceita anúncios que casam exatamente a duração especificada do anúncio em fluxo, de modo que a substituição de anúncios não rompa o período do fluxo ao vivo. Em outra modalidade, o cliente insere qualquer anúncio, mas precisa monitorar o fluxo ao vivo para determinar quando reiniciar o fluxo ao vivo. Em uma modalidade, se o anúncio de substituição é mais curto do que o anúncio em fluxo, o cliente pode readerir ao fluxo ao vivo e reproduzir o restante do anúncio em fluxo. Em outra modalidade, se o anúncio de substituição é mais curto do que o anúncio em fluxo, o cliente pode exibir uma mensagem intersticial ou imagem pelo restante da duração do anúncio em fluxo e somente readerir ao fluxo ao vivo uma vez que o anúncio em fluxo esteja completo. Em uma modalidade, se o anúncio de substituição é mais longo do que o anúncio em fluxo, o cliente pode retornar para o fluxo ao vivo sem reproduzir o anúncio de substituição até a conclusão, para impedir que o usuário perca o conteúdo de fluxo ao vivo.
6/38 [0014] Em uma modalidade, o cliente executa a substituição de anúncio realizando proxy de solicitações de arquivo de manifesto a partir do reprodutor de mídia e mudando a URL de segmento (e quaisquer URLs chave de criptografia e/ou metadados de chave de criptografia associados com os segmentos de anúncio) no arquivo de manifesto que é apresentado ao reprodutor de mídia. Em outra modalidade, o cliente executa substituição de anúncio realizando proxy de transparentemente solicitações de segmento a partir do reprodutor de mídia (isto é, terminando a conexão a partir do reprodutor de mídia, emitindo uma solicitação para um segmento alternativo, e retomando esses dados ao reprodutor de mídia). Em outra modalidade, o cliente executa substituição de anúncio realizando proxy de solicitações de segmento a partir do reprodutor de mídia e redirecionando o reprodutor de mídia para um segmento alternativo (por exemplo, usando um redirecionamento HTTP 302).
[0015] Em uma modalidade, quando o cliente executa substituição de anúncio, o cliente somente seleciona uma codificação (isto é, taxa de bits, taxa de quadro, resolução, etc.) para o anúncio que corresponde à codificação (isto é, taxa de bits, taxa de quadro, resolução, etc.) do fluxo ao vivo atualmente sendo assistido. Em outra modalidade, se uma correspondência exata de codificação não existe para segmentos de anúncio, o cliente seleciona a codificação de correspondência mais próxima, favorecendo a maior codificação (isto é, taxa de bits, taxa de quadro, resolução, etc.) que não excedeu a codificação (isto é, taxa de bits, taxa de quadro, resolução, etc.) do fluxo ao vivo atualmente sendo assistido, isto é, a codificação com a maior taxa de bits que não excedeu a taxa de bits do fluxo ao vivo atualmente sendo usada, a maior taxa de quadro que não excedeu a taxa de quadro do fluxo ao vivo atualmente sendo usada, e a maior resolução que não excedeu a resolução do fluxo ao vivo atualmente sendo assistido, etc. Em uma modalidade, o cliente pode escolher uma codificação menor (isto é, taxa de bits, taxa de quadro, resolução mais baixa, etc.) para segmentos de anúncio para acomodar (isto é, compensar) latência mais alta em restaurar segmentos de anúncio. Em outra modalidade, o cliente pode escolher uma codificação maior (isto é, taxa de bits, taxa de quadro, resolução mais alta, etc.) para segmentos de anúncio para maximizar a qualidade do anúncio e geração de
7/38 lucro de anúncio. As técnicas para seleção dinâmica de diferentes codificações são descritas no pedido de patente PCT PCT/US2010/060317 de Ma e outros, publicado sob o pedido PCT No. WO/2011/139305.
[0016] Em outro aspecto, um método é fornecido para realizando proxy dinamicamente de solicitações de segmento de anúncio, para suportar substituição de anúncio alvo em tempo real. O método é adequado para uso em um proxy no lado de cliente como descrito acima, ou em um proxy baseado em rede. Em uma modalidade, um proxy de rede executa substituição de anúncio realizando proxy de solicitações de arquivo de manifesto a partir do reprodutor de mídia e alterando a URL de segmento (e quaisquer URLs de chave de criptografia e/ou metadados de chave de criptografia associados com os segmentos de anúncio) no arquivo de manifesto que é apresentado ao reprodutor de mídia. Em outra modalidade, um proxy de rede executa substituição de anúncio realizando proxy de transparentemente solicitações de segmento a partir do cliente (ou a partir do reprodutor de mídia de cliente ou proxy no lado de cliente), isto é, terminando a conexão a partir do cliente, emitindo uma solicitação por um segmento alternativo, e retornando esses dados ao cliente. Em outra modalidade, o proxy de rede executa substituição de anúncio realizando proxy de solicitações de segmentos a partir do cliente (ou a partir do reprodutor de mídia de cliente ou proxy no lado de cliente) e redirecionando o cliente para um segmento alternativo (por exemplo, usando um redirecionamento HTTP 302).
[0017] Em uma modalidade, o servidor de decisão de anúncio, identificador de programa, e/ou informação de ponto (colocação) de anúncio são incluídos na solicitação de segmento de anúncio. Em uma modalidade, o cliente também fornece identidade de assinante e/ou usuário, localização, e/ou informação demográfica na solicitação de segmento de anúncio. O proxy de rede emite uma solicitação de colocação de anúncio ao servidor de decisão de anúncio fornecendo o identificador de programa e/ou informação de colocação de anúncio. Em uma modalidade, o proxy de rede extrai identidade de assinante e/ou usuário, localização, e/ou informação demográfica a partir das solicitações de segmento e inclui essa informação na solicitação de colocação de anúncio, para possibilitar seleção de anúncio mais personalizada.
8/38 [0018] Em uma modalidade, quando um proxy de rede executa substituição de anúncio, o proxy de rede somente seleciona uma codificação (isto é, taxa de bits, taxa de quadro, resolução, etc.) para o anúncio que corresponde à codificação (isto é, taxa de bits, taxa de quadro, resolução, etc.) do fluxo ao vivo atualmente sendo assistido Em outra modalidade, se uma correspondência exata de codificação não existe para segmentos de anúncio, o proxy de rede seleciona a codificação de correspondência mais próxima, favorecendo a codificação maior (isto é, taxa de bits, taxa de quadro, resolução, etc.) que não excedeu a codificação (isto é, taxa de bits, taxa de quadro, resolução, etc.) do fluxo ao vivo atualmente sendo assistido, isto é, a codificação com a maior taxa de bits que não excedeu a taxa de bits de fluxo ao vivo atualmente sendo usada, a maior taxa de quadro que não excedeu a taxa de quadro de fluxo ao vivo atualmente sendo usada, a maior resolução que não excedeu a resolução de fluxo ao vivo atualmente sendo assistida, etc.). Em uma modalidade, um proxy de rede pode escolher uma menor codificação (isto é, taxa de bits, taxa de quadro, resolução menor, etc.) para segmentos de anúncio para acomodar (isto é, compensar) latência mais alta em restaurar segmentos de anúncio. Em outra modalidade, um proxy de rede pode escolher uma codificação maior (isto é, taxa de bits, taxa de quadro, resolução maior, etc.) para segmentos de anúncio para maximizar a qualidade de anúncio e a geração de lucro de anúncio. As técnicas para seleção dinâmica de diferentes codificações são descritas no pedido de patente PCT/US2010/060317 de Ma e outros, publicado sob a Publicação PCT No. WO/2011/139305.
[0019] Em uma modalidade, os segmentos de anúncio são criptografados com diferentes chaves de criptografia a partir dos segmentos correspondentes que eles estão substituindo no fluxo ao vivo e um proxy de cliente ou de rede precisa modificar o manifesto para refletir a URL de chave de criptografia e/ou metadados associados com o segmento de anúncio usado para substituir o segmento de fluxo ao vivo correspondente. Em outra modalidade, os segmentos de anúncio são criptografados com as mesmas chaves de criptografia dos segmentos correspondentes que estão substituindo no fluxo ao vivo e nenhuma manipulação de manifesto da URL de cha
9/38 ve de criptografia e/ou metadados é exigida. Em outra modalidade, os segmentos de anúncio são criptografados com diferentes chaves de criptografia a partir dos segmentos correspondentes que eles estão substituindo no fluxo ao vivo e a informação de chave está contida no cabeçalho de arquivo de segmento e nenhuma manipulação de manifesto da URL de chave de criptografia e/ou metadados é exigida. Em outra modalidade, os segmentos de anúncio são criptografados com diferentes chaves de criptografia a partir dos segmentos correspondentes que eles estão substituindo no fluxo ao vivo e um proxy de cliente ou de rede precisa descriptografar o segmento de anúncio e recriptografar o segmento de anúncio usando a chave de criptografia que corresponde ao segmento de fluxo ao vivo sendo substituído. Em outra modalidade, os segmentos de anúncio são criptografados com diferentes chaves de criptografia a partir dos segmentos correspondentes que eles estão substituindo no fluxo ao vivo, mas todos os dados são apresentados ao reprodutor de mídia em texto claro, assim um proxy de cliente ou de rede precisa descriptografar o segmento de anúncio antes de apresenta-lo ao reprodutor de mídia. Há muitas formas de apresentar a informação de chave de criptografia e/ou conteúdo ao reprodutor de mídia de modo que o reprodutor de mídia possa entender e renderizar o conteúdo, como deveria ser conhecido pelos versados na técnica. Em geral, qualquer método para reconciliar diferenças de chave de criptografia pode ser aceitável.
[0020] Um sistema é também descrito para implementar uma infraestrutura de cliente e servidor de acordo com as provisões desses métodos. O sistema inclui um processador de fluxo ao vivo para preparar conteúdo em tempo real e inserir metadados de anúncio, um cliente de streaming adaptativo para extrair metadados de anúncio e executar substituição de anúncio alvo, e um proxy de segmento de anúncio para executar substituição de anúncio alvo.
[0021] A presente descrição foca principalmente na substituição de anúncios no contexto de streaming ao vivo, no qual a entrada (por exemplo, um feed de TV) já tem anúncios nela (por exemplo, anúncios nacionais) que estão sendo substituídos por outros anúncios tal como anúncios locais ou anúncios personalizados. Estará claro que as técnicas descritas podem ser prontamente adaptadas para uso em in
10/38 serção de anúncio no qual os anúncios estão sendo adicionados a um fluxo de entrada, por exemplo, em aplicações de demanda sob demanda (VOD).
BREVE DESCRIÇÃO DOS DESENHOS [0022] As provisões acima junto com as várias provisões e características auxiliares que se tomarão claras para os versados na técnica à medida que a seguinte descrição prossegue são conseguidas por dispositivos, conjuntos, sistemas e métodos de modalidades da presente invenção, várias modalidades desses são mostradas com relação aos desenhos em anexo, a título de exemplo somente, onde:
[0023] A Figura 1 é um diagrama de blocos de um sistema que é capaz de conduzir entrega de conteúdo extremidade a extremidade e procedimentos de substituição de anúncio alvo, de acordo com várias modalidades da invenção.
[0024] A Figura 2 é um diagrama de blocos de um sistema que é capaz de conduzir procedimentos de inserção de metadados de anúncio, de acordo com várias modalidades da invenção.
[0025] A Figura 3 é um diagrama de blocos de um cliente que é capaz de conduzir procedimentos de substituição de anúncio alvo, de acordo com várias modalidades da invenção.
[0026] A Figura 4 é um diagrama de blocos de um proxy de rede que é capaz de conduzir procedimentos de substituição de anúncio alvo, de acordo com várias modalidades da invenção.
[0027] A Figura 5 é um fluxograma que mostra um método para executar inserção de metadados de anúncio, de acordo com uma modalidade da presente invenção.
[0028] A Figura 6 é um fluxograma que mostra um método para executar substituição de anúncio alvo no lado de cliente, de acordo com uma modalidade da presente invenção.
[0029] A Figura 7, consistindo de partes 7A e 7B, é um fluxograma que mostra um método para executar substituição de anúncio alvo baseada em proxy de rede, de acordo com uma modalidade da presente invenção.
DESCRIÇÃO DETALHADA DA INVENÇÃO
11/38 [0030] Na descrição fornecida aqui para modalidades da presente invenção, numerosos detalhes específicos são fornecidos, tal como exemplos de componentes e/ou métodos, para fornecer um entendimento completo de modalidades da presente invenção. Um versado na técnica reconhecerá, entretanto, que uma modalidade da invenção pode ser praticada sem um ou mais dos detalhes específicos, ou com outros aparelhos, sistemas, conjuntos, métodos, componentes, materiais, partes e/ou similares. Em outros casos, estruturas bem conhecidas, materiais ou operações não são especificamente mostrados ou descritos em detalhes para evitar ocultar aspectos de modalidades da presente invenção.
[0031] Na presente descrição, o termo “limites de programa” refere-se tanto a limites interprograma, isto é, limites entre o fim de um programa e o início de outro programa, e limites intraprograma que são tipicamente limites de anúncio (isto é, comerciais em um programa onde anúncios são inseridos). Estará claro que o limite interprograma é também tipicamente um limite de anúncio. O termo mais amplo “limite de programa” é usado para acomodar modalidades nas quais pode haver limites que podem ser usados para propósitos que não a inserção de anúncios.
[0032] A Figura 1 é um diagrama de blocos de um sistema 100 para uma modalidade da presente invenção. O sistema inclui um processador de fluxo ao vivo 102, rede de entrega de conteúdo (CDN) 104, servidor de decisão de anúncio (ADS) 108, proxy de segmento de anúncio 106 (também chamado aqui de um proxy de rede 106), e cliente 110. O processo de fluxo ao vivo 102 adquire e processa conteúdo de áudio/vídeo em tempo real, detecta oportunidades de substituição/inserção de anúncio e executa métodos de inserção e substituição de anúncio. A CDN 104 distribui o conteúdo processado do processador de fluxo ao vivo 102. O cliente 110 restaura e renderiza conteúdo a partir da CDN 104 e executa métodos de substituição e inserção de anúncio. O proxy de rede 106 realiza proxy de certas solicitações de conteúdo a partir do cliente 110 e executa métodos de substituição e inserção de anúncio. O ADS 108 executa processamento de colocação de anúncio alvo em tempo real para o processador de fluxo ao vivo 102, proxy de rede 106, e cliente 110.
[0033] O processador de fluxo ao vivo 102, CDN 104, ADS 108, proxy de rede
12/38
106, e cliente 110 podem ser realizados como um ou mais dispositivos computadorizados, cada um tendo memória armazenando instruções de programa de computador, um ou mais processadores para executar as instruções, circuito l/O conectando o dispositivo computadorizado a dispositivos externos, e circuito de interconexão tal como um ou mais barramentos de alta velocidade conectando a memória, processadores) e circuito l/O juntos. Tal coleção de elementos pode também adicionalmente ser chamada aqui de “circuito de processamento”. Vários componentes constituintes dos itens mostrados na Figura 1 são mostrados nas figuras adicionais e descritos abaixo, e entende-se que os componentes podem ser realizados como circuito de processamento executando instruções de elementos de software correspondentes. Por exemplo, um “analisador” pode ser realizado como circuito de processamento de computador executando instruções de um programa analisador, etc.
[0034] O processador de fluxo ao vivo 102 é responsável por adquirir conteúdo fonte a partir de um feed ao vivo e preparar o conteúdo para distribuição. Em uma modalidade, a preparação inclui transcodificar áudio e vídeo em uma pluralidade de codificações usando codecs diferentes, taxas de bits, taxas de quadros, taxas de amostra, e resoluções. O conteúdo transcodifiçado é então escrito em uma pluralidade de arquivos de saída. Em uma modalidade, uma pluralidade de arquivos de saída contém o mesmo conteúdo transcodificado encapsulado em diferentes formatos de recipiente (por exemplo, 3GP, MP4, MPEG-TS, WMV, MOV, etc.). Em uma modalidade, os arquivos de saída preparados são segmentos em arquivos de segmento de duração fixa (por exemplo, segmentos MPEG-TS, segmentos MP4 fragmentados, segmentos 3GP DASH, etc.). Em uma modalidade, os arquivos de saída, tanto segmentados quando não segmentados, são criptografados usando protocolos de criptografia padrão (por exemplo, AES-128, HC-128, RC4, etc.). Em uma modalidade, o processador de fluxo ao vivo 102 gera arquivos de manifesto indicando localizações de restauração de segmento para cada codificação (por exemplo, HLS m3u8, DASH MPD, etc.).
[0035] Em uma modalidade, o processador de fluxo ao vivo 102 detecta comerciais de anúncio no feed ao vivo. Em uma modalidade, o feed ao vivo é um feed de
13/38 televisão linear. Em uma modalidade, o feed ao vivo contém tons de localização SCTE-35 que indicam grupos de anúncios de chegada (comerciais), o início de cada grupo de anúncios, e o final de cada grupo de anúncios. Em uma modalidade, os descritores de programa SCTE-35 descrevem a estrutura (isto é, o número de anúncios e duração de cada anúncio) dos grupos de anúncios. Em outra modalidade, o processador de fluxo ao vivo 102 emite solicitações SCTE-130 a um ADS 108 para determinar a estrutura (isto é, o número de anúncios e a duração de cada anúncio) dos grupos de anúncios.
[0036] Em uma modalidade, o processador de fluxo ao vivo 102 cria segmentos a partir da entrada de fluxo ao vivo usando segmentos de duração fixa. Em uma modalidade, o processador de fluxo ao vivo 102 usa informação de estrutura de grupo de anúncios para criar dinamicamente limites de segmento nos limites de anúncio. Como um exemplo, dado o grupo de anúncios com dois anúncios, o primeiro com uma duração de 15 segundos e o segundo com uma duração de 25 segundos, onde o grupo de anúncios começaria 7 segundos em um dado segmento N, os segmentos de duração fixa feriam o anúncio 1 começando 7 segundos no segmento N, o anúncio 2 começando 3 segundos no segmento N+2, e o programa principal iniciando 7 segundos no segmento N+3:
10 |
10 |
10 |
10 |
10 |
10 |
+—
1 |
N |
— + —
1 |
N+1 |
---μ--
1 |
N+2 |
--Ί---
1 |
N+2 |
--Ί---
1 |
N+3 |
-- + —
1 |
N+4 |
-- +
1 |
+— |
|
---1--- |
|
---μ-- |
|
--+— |
|
--+— |
|
--+— |
|
--+ |
adi AD2 Programa [0037] Com limites de segmento dinâmicos, o mesmo cenário de um grupo de anúncios com dois anúncios, o primeiro com uma duração de 15 segundos e o segundo com uma duração de 25 segundos, onde o grupo de anúncios começaria 7 segundos em um dado segmento N, os segmentos de duração fixa feriam o segmento N truncado em 7 segundos, o anúncio 1 começando em um novo limite de segmento (isto é, o início do segmento N+1), o segmento N+2 truncado em 5 se
14/38 gundos, o anúncio 2 começando em um novo limite de segmento (isto é, o início do segmento N+3), o segmento N+5 truncado em 5 segundos, e o programa principal iniciando em um novo limite de segmento (isto é, o início do segmento N+6):
7 |
10 |
5 |
10 |
10 |
5 |
10 |
+--
I |
N |
--+—
I |
N+l |
-- + -
1 |
N+2 |
-+—
1 |
N+3 |
---1---
1 |
N+4 |
--+-
1 |
N+5 |
-+ —
1 |
N+6 |
-- +
1 |
+-- |
|
--+— |
|
--+ |
|
-+— |
|
---1--- |
|
|
|
-+ — |
|
-- + |
ADI AD2 Programa [0038] Em uma modalidade, o processador de fluxo ao vivo 102 emite solicitações de colocação de anúncio para o ADS 108 para uma ou mais das oportunidades de inserção de anúncio especificadas no grupo de anúncios. Em uma modalidade, o ADS 108 é o mesmo servidor SCTE-130 usado para determinar a estrutura de grupo de anúncios. Em uma modalidade, o processador de fluxo ao vivo 102 substitui os segmentos dentro dos limites de programa de anúncio gerados a partir do feed ao vivo com segmentos especificados na resposta de colocação de anúncio. Em uma modalidade, o processador de fluxo ao vivo 102 transmite os segmentos de substituição de anúncio para substituir os segmentos reais. Em outra modalidade, o processador ao vivo 102 substitui as URLs de segmento associadas com os anúncios (isto é, segmentos dentro dos limites de anúncio) no arquivo de manifesto com URLs apontando para os segmentos especificados na resposta de colocação de anúncio. Em uma modalidade, o processador de fluxo ao vivo 102 armazena em cache a resposta de colocação de anúncio para uso em oportunidades de substituição de anúncio futuras. Em uma modalidade, o processador de fluxo ao vivo 102 também processa o conteúdo de fonte de anúncio para assegurar que as codificações disponíveis para o anúncio correspondem às codificações sendo usadas para o processamento do fluxo ao vivo.
[0039] Em uma modalidade, o processador de fluxo ao vivo 102 insere metadados nos segmentos para indicar ao cliente 110 limites de anúncio de chegada, bem como o início e o fim real de cada anúncio. Em uma modalidade, os metadados são
15/38 inseridos usando o formato de recipiente de metadados facto padrão ID3 versão 2 (chamado aqui de tags ID3) em segmentos MPEG-TS. Em outra modalidade, os metadados são inseridos em canais de dados proprietários em segmentos RTP. Em outra modalidade, os metadados são inseridos em cabeçalhos DASH proprietários. Há muitos formatos de segmento e muitas formas de inserir metadados padrão em um dado formato de segmento como deveria ser conhecido pelos versados na técnica. Qualquer método para inserir metadados em um segmento seria adequado para metadados de limite de anúncio.
[0040] Em uma modalidade, o processador de fluxo ao vivo 102 insere metadados nos arquivos de manifesto para indicar ao cliente 110 limites de anúncio de chegada, bem como o início e o fim reais de cada anúncio. Em uma modalidade, o processador de fluxo ao vivo 102 insere metadados de estrutura de grupo de anúncios nos arquivos de manifesto para indicar ao cliente 110 o anúncio dentro do grupo ao qual cada segmento pertence. Em uma modalidade, o processador de fluxo ao vivo 102 insere metadados de deslocamento de segmento de anúncio nos arquivos de manifesto para indicar ao cliente 110 os números de sequência dos segmentos dentro de cada anúncio e dentro do grupo de anúncios. Em uma modalidade, os metadados são inseridos como comentários em um arquivo de manifesto m3u8. Em outra modalidade, os metadados são inseridos como etiquetas padrão em um arquivo de manifesto DASH MPD. Há muitos formatos de arquivo de manifesto e muitas formas de inserir metadados padrão em um dado formato de arquivo de manifesto como deveria ser conhecido pelos versados na técnica. Qualquer método para inserir metadados em um arquivo de manifesto seria adequado para metadados de limite de anúncio.
[0041] Em uma modalidade, as URLs de segmento inseridas no arquivo de manifesto apontam para um proxy de segmento de anúncio 106, ao invés de para os segmentos reais na CDN 104. Em uma modalidade, os metadados de anúncio incluem a duração de cada anúncio. Em uma modalidade, os metadados de anúncio incluem a duração do grupo de anúncios. Em uma modalidade, os metadados de anúncio incluem informação de endereço para o ADS 108. Em uma modalidade, os
16/38 metadados de anúncio incluem informação de ponto (colocação) para cada anúncio. Em uma modalidade, os metadados de anúncio incluem identificadores de programa, tempo de transmissão de programa original, restrições de anúncio, e informação demográfica de programa a serem usados no tom de localização de decisão de anúncio alvo. Em uma modalidade, os metadados para o fim do anúncio final no grupo de anúncios são incluídos como metadados indicando o reinicio do programa principal.
[0042] Em uma modalidade, o processador de fluxo ao vivo 102 carrega os arquivos de segmento e arquivos de manifesto em uma CDN 104 a partir da qual eles são restaurados pelo cliente 110. Em uma modalidade, o cliente 110 restaura arquivos de segmento e de manifesto diretamente a partir do processador de fluxo ao vivo 102. Em outra modalidade, o cliente 110 restaura arquivos de manifesto a partir do processador de fluxo ao vivo 102 e arquivos de segmento a partir da CDN 104. Em uma modalidade, o cliente 110 detecta os metadados de anúncio e executa substituição de anúncio alvo. Em uma modalidade, o cliente 110 detecta metadados de anúncio realizando proxy de solicitações de arquivo de manifesto a partir de seu reprodutor de mídia (ver descrição mais detalhada abaixo) e analisando o arquivo de manifesto (por exemplo, detectando comentários padrão em um HLS m3u8, ou etiquetas padrão em um DASH MPD). Em outra modalidade, o cliente 110 detecta metadados de anúncio realizando proxy de solicitações de segmento a partir do reprodutor de mídia e analisando os dados de segmento (por exemplo, detectando canais RTP de metadados padrão). Em outra modalidade, o cliente 110 detecta metadados de anúncio monitorando chamadas a partir do reprodutor de mídia (por exemplo, recebendo chamadas ID3).
[0043] Em uma modalidade, as URLs para segmento de anúncio apontam para um proxy de rede 106, como especificado pelo processador de fluxo ao vivo 102. Em uma modalidade, o cliente 110 aumenta as solicitações de segmento com identidade de assinante e/ou usuário, localização, e/ou informação demográfica. O proxy de rede 106 recebe a solicitação de segmento, extrai a informação de colocação de anúncio, e qualquer informação de programa fornecida pelo processador de fluxo ao
17/38 vivo 102, bem como qualquer identidade de assinante e/ou usuário, localização, e/ou informação demográfica fornecida pelo cliente 110, e emite uma solicitação de colocação de anúncio ao ADS 108 com essa informação. O ADS 108 seleciona um anúncio de substituição alvo e notifica o proxy de rede 106. Em uma modalidade, o proxy de rede realiza proxy transparente o segmento de anúncio a partir da CDN 104 para o cliente 110. Em outra modalidade, o proxy de rede redireciona o cliente 110 para o segmento de anúncio na CDN 104 (por exemplo, usando um redirecionamento de HTTP 302). Em uma modalidade, o proxy de rede 106 armazena em cache a resposta de colocação de anúncio para uso em oportunidades de substituição de anúncio futuras.
[0044] Em outra modalidade, o cliente 110 executa substituição de anúncio alvo contatando o ADS 108 diretamente. O cliente 110 extrai a informação de colocação de anúncio, e qualquer informação de programa fornecida pelo processador de fluxo ao vivo 102, e emite uma solicitação de colocação de anúncio para o ADS 108 com essa informação. Em uma modalidade, o cliente 110 aumenta as solicitações de colocação de anúncio com identidade de assinante e/ou usuário, localização, e/ou informação demográfica. Em uma modalidade, o cliente 110 executa substituição de anúncio realizando proxy de solicitações de arquivo de manifesto a partir do reprodutor de mídia e alterando a URL de segmento no arquivo de manifesto que é apresentado ao reprodutor de mídia. Em outra modalidade, o cliente 110 executa substituição de anúncio realizando proxy de solicitações de segmento a partir do reprodutor de mídia e realizando proxy de transparentemente a solicitação de segmento (isto é, terminando a conexão a partir do reprodutor de mídia, emitindo uma solicitação por um segmento alternativo, e retomando esses dados para o reprodutor de mídia). Em outra modalidade, o cliente 110 executa substituição de anúncio realizando proxy de solicitações de segmento a partir do reprodutor de mídia e redirecionando o reprodutor de mídia para um segmento alternativo (usando um redirecionamento de HTTP 302). Em uma modalidade, o cliente 110 armazena em cache a resposta de substituição de anúncio para uso em oportunidades de substituição anúncio futuras.
[0045] A Figura 2 é um diagrama de blocoss de um processador de fluxo ao vivo
18/38
102 para uma modalidade da presente invenção para implementar um processador de fluxo ao vivo 102. O processador de fluxo ao vivo 102 inclui múltiplos componentes, incluindo um gravador de fluxo ao vivo 202 que grava conteúdo de áudio/vídeo fonte, um transcodificador multitaxa de bits 204 que transcodifica o conteúdo fonte em diferentes codificações de taxa de bits, um segmentador multitaxa de bits 206 que cria arquivos de segmento a partir de conteúdo transcodificado, um módulo de inserção de metadados em linha 210 que insere metadados em arquivos de segmento, um criptografador de segmento 212 que criptografa segmentos antes de carregá-los em uma CDN 104, um gerador de manifesto 208 que cria arquivos de manifesto para descrever conteúdo segmentado, e um módulo de inserção de metadados de manifesto 218 que insere metadados em arquivos de manifesto antes de carregalos em uma CDN 104. O processador de fluxo ao vivo 102 também contém um analisador de tom de localização 214 que monitora conteúdo fonte e detecta limites de anúncio e de programa, bem como um resolvedor de grupo de anúncios que determina a estrutura dos grupos de anúncios (comerciais).
[0046] O gravador de fluxo ao vivo 202 é responsável por acoplar o feed ao vivo usando vários protocolos (por exemplo, MPEG-TS de difusão ponto a ponto, MPEGTS de multidifusão, RTP de difusão ponto a ponto, RTP de multidifusão, HLS, DASH, RTMP, etc.). O gravador de fluxo ao vivo 202 passa os dados de fluxo para o transcodificador multitaxa de bits 204 que transforma o conteúdo em uma pluralidade de codificações usando diferentes codecs, taxas de bits, taxas de quadros, taxas de amostragem, e resoluções. O gravador de fluxo ao vivo 202 também passa tons de localização SCTE-35, bem como informação de relógio atual e estampa de tempo de programa, ao analisador de tom de localização 214 que extrai informação de grupo de anúncios de chegada, incluindo início de grupo de anúncios, e informação de fim de grupo de anúncios. O analisador de tom de localização 214 então passa a informação de grupo de anúncios para o resolvedor de grupo de anúncios 216.
[0047] O resolvedor de grupo de anúncios 216 determina a estrutura do grupo de anúncios (isto é, o número de anúncios e a duração de cada anúncio). Em uma modalidade, o resolvedor de grupo de anúncios 216 usa informação de tom de localiza
19/38 ção SCTE-35 para determinar a estrutura do grupo de anúncios. Em outra modalidade, o resolvedor de grupo de anúncios 216 emite solicitações SCTE-130 para o ADS 108 para determinar a estrutura do grupo de anúncios. Em uma modalidade, a solicitação SCTE-130 inclui identificador de programa e tempo de relógio de programa correlacionado (isto é, o tempo de relógio gravado pelo gravador de fluxo ao vivo 202 correspondente à estampa de tempo de programa referenciada pelo tom de localização, calculada como um deslocamento relativo a partir do início do programa). Há muitos protocolos de notificação de estrutura de grupo de anúncios e tom de localização de anúncio além de SCTE-35 e SCTE-130 (por exemplo, IAB Video Multiple Ad Playlist (VMAP) ou outros protocolos proprietários baseados em XML), tanto em banda quanto fora de banda, como deveria ser conhecido pelos versados na técnica. Dever-se-ia entender que o analisador de tom de localização 214 e o resolvedor de grupo de anúncios 216 são flexíveis o bastante para suportar quaisquer protocolos de notificação de estrutura de grupo e/ou tom de localização de anúncio válidos.
[0048] Em uma modalidade, o resolvedor de grupo de anúncios 216 emite solicitações de colocação de anúncios ao ADS 108 para uma ou mais oportunidades de inserção de anúncios especificadas no grupo de anúncios. Em uma modalidade, o ADS 108 é o mesmo servidor SCTE-130 usado para determinar a estrutura de grupo de anúncios. Em uma modalidade, o resolvedor de grupo de anúncios 216 armazena em cache respostas de colocação de anúncios para uso em oportunidades de substituição de anúncio futuras.
[0049] O transcodificador multitaxas de bits 204 encaminha as várias codificações para o segmentador multitaxas de bits 206. O resolvedor de grupo de anúncios 206 encaminha as notificações de grupo de anúncios de chegada e a informação de estrutura de grupo de anúncios para o segmentador multitaxas de bits 206. O segmentador multitaxas de bits 206 é responsável por gerar limites de segmento dinâmicos com base na estrutura de grupo de anúncios, de modo que cada anúncio começa em um novo limite de segmento e o reinicio do programa principal também começa em um novo limite de segmento. Em uma modalidade, o segmentador multi
20/38 taxas de bits 206 transfere os segmentos de substituição de anúncio especificados na resposta de colocação de anúncio, substituindo os segmentos gerados com os segmentos transferidos.
[0050] O segmentador multitaxas de bits 206 encaminha a informação de limite de segmento para o gerador de manifesto 208. O gerador de manifesto 208 cria arquivos de manifesto em tempo real atualizados, com metadados indicando comerciais de anúncios de chegada bem como o início e o fim real de cada anúncio. O gerador de manifesto 208 então encaminha o manifesto para o módulo de inserção de metadados de manifesto 218. O módulo de inserção de metadados de manifesto 218 é responsável por inserir metadados adicionais no manifesto (por exemplo, informação de localização de ADS 108, identificadores de programa, tempo de transmissão de programa original, restrições de anúncio de programa, informação demográfica de programa, etc.). O módulo de inserção de metadados de manifesto 218 é também responsável por executar reescrita de URL de segmento. Em uma modalidade, as URLs de segmento de anúncio são reescritas para apontar para os segmentos de anúncios de substituição especificados na resposta de colocação de anúncio. Em uma modalidade, as URLs de segmento de anúncio são reescritas para apontar para o ADS 108. Há múltiplos formatos de manifesto (por exemplo, HLS m3u8, DASH MPD, etc.) como deveria ser conhecido pelos versados na técnica. Dever-se-ia entender que o gerador de manifesto 208 e o módulo de inserção de metadados de manifesto 218 são flexíveis o bastante para suportar gerar e modificar qualquer formato de arquivo de manifesto válido, respectivamente. O módulo de inserção de metadados de manifesto carrega o manifesto final na CDN 104.
[0051] O segmentador multitaxas de bits 206 encaminha segmentos para o módulo de inserção de metadados em linha 210. O módulo de inserção de metadados em linha 210 é responsável por inserir notificações de comercial de anúncio de chegada e notificação de início e fim de anúncio exatos nos segmentos. Em uma modalidade, o módulo de inserção de metadados 210 também insere informação de endereço de rede para o ADS 108, bem como identificador de programa, tempo de transmissão de programa original, restrições de anúncio de programa, e informação
21/38 demográfica de programa.
[0052] Há múltiplos formatos de arquivo de segmento (por exemplo, MPEG-TS, DASH, RTP, etc.), bem como múltiplos métodos de inserção de metadados para cada formato (por exemplo, tags ID3, cabeçalhos e metadados padrão, canais de dados alternativos, etc.), como seria conhecido pelos versados na técnica. Dever-se-ia entender que o módulo de inserção de metadados em linha 210 é flexível o bastante para suportar a modificação de qualquer formato de arquivo de segmento válido usando qualquer método de inserção de metadados válido. O módulo d inserção de metadados em linha 210 então encaminha os segmentos para o criptografador de segmento 212 que criptografa os segmentos usando protocolos de criptografia padrão (por exemplo, AES-128, HC-128, RC4, etc.). O criptografador de segmento 212 carrega os segmentos finais na CDN 104.
[0053] A Figura 3 é um diagrama de blocoss para uma modalidade da presente invenção para implementar um cliente de streaming adaptativo HTTP 110. O cliente 110 inclui um reprodutor de mídia 306 que renderiza conteúdo, um proxy de manifesto 304 que realiza proxy transparente de solicitações de manifesto a partir do reprodutor de mídia 306, e um proxy de segmento 310 que realiza proxy transparente de solicitações de segmento a partir do reprodutor de mídia 306 e redireciona solicitações de segmento para substituir anúncios. O cliente 110 também contém um analisador de segmento 308 que extrai metadados de arquivos de segmentos, bem como analisador de manifesto 302 que extrai metadados dos arquivos de manifesto e reescreve arquivos de manifesto para substituir anúncios.
[0054] Em uma modalidade, o reprodutor de mídia 306 inicia reprodução solicitando um arquivo de manifesto a partir do proxy de manifesto 304. Em uma modalidade, o proxy de manifesto 304 restaura o manifesto a partir da CDN 104. Em outra modalidade, o proxy de manifesto 304 restaura o manifesto diretamente a partir do processador de fluxo ao vivo 102. O proxy de manifesto 304 fornece o manifesto para o analisador de manifesto 302 que detecta comerciais de anúncio de chegada, detecta o início e o fim de anúncios, e extrai metadados de anúncio a partir do arquivo de manifesto. Há múltiplos formatos de manifesto (por exemplo, HLS m3u8,
22/38
DASH MPD, etc.) como deveria ser conhecido pelos versados na técnica. Dever-seia entender que o proxy de manifesto 304 e o analisador de manifesto 302 são flexíveis o bastante para suportar gerar e modificar qualquer formato de arquivo de manifesto válido.
[0055] Em uma modalidade, o analisador de manifesto 302, mediante detecção de um comercial de anúncio de chegada, extrai informação de endereço de rede para o ADS 108 bem como qualquer identificação de programa, tempo de transmissão de programa original, restrição de anúncio, e/ou informação demográfica de programa e emite uma solicitação de colocação para o ADS 108. Em uma modalidade, o analisador de manifesto 302 inclui identidade de assinante e/ou usuário, localização, e/ou informação demográfica na solicitação de colocação de anúncio. Em uma modalidade, o ADS 108 responde com um arquivo de manifesto ou uma URL apontando para um arquivo de manifesto especificando os segmentos para o anúncio de substituição. Em outra modalidade, o ADS 108 responde com um identificador de mídia de anúncio a ser usado para procurar informação de segmento de anúncio. Em outra modalidade, o ADS 108 responde com uma URL apontando para um arquivo autônomo, não adequado para inserção em um manifesto de streaming adaptativo a HTTP.
[0056] Em uma modalidade, se o ADS 108 retorna uma URL apontando para um arquivo autônomo, não adequado para inserção em um manifesto de streaming adaptativo a HTTP, o cliente 110 usará uma abordagem de dois reprodutores onde um reprodutor de mídia 306 é parado ou pausado e um segundo reprodutor de mídia (não mostrado) é criado para reproduzir o anúncio, antes de reiniciar a reprodução no primeiro reprodutor de mídia 306. Em outra modalidade, quando o ADS 108 retorna um arquivo de manifesto ou uma URL apontando para um arquivo de manifesto especificando os segmentos para o anúncio de substituição, o analisador de manifesto 302 modificará o manifesto apresentado ao reprodutor de mídia 306, substituindo as URLs de segmento de anúncio em fluxo (e quaisquer URLs de chave de criptografia associadas e/ou metadados de chave de criptografia) com as URLs de segmento de substituição de anúncio (e quaisquer URLs de chave de criptografia
23/38 associadas e/ou metadados de chave de criptografia) fornecidas pelo ADS 108. O analisador de manifesto 302 pré-busca a informação de substituição de anúncio mediante a detecção de um comercial de anúncio de chegada e espera pelo início real do comercial de anúncio para substituir as URLs de segmento de anúncio. Em outra modalidade, quando o ADS 108 retoma um identificador de mídia de anúncio, o analisador de manifesto 302 primeiro consulta a informação de localização de segmento para o dado identificador de mídia de anúncio, antes de modificar o manifesto apresentado ao reprodutor de mídia 306, substituindo as URLs de segmento de anúncio em fluxo pelas URLs de segmento de substituição de anúncio (e quaisquer URLs de chave de criptografia associadas e/ou metadados de chave de criptografia) encontradas na consulta.
[0057] Em uma modalidade, se o anúncio de substituição é mais curto do que o anúncio em fluxo, o analisador de manifesto 302 pode escolher para somente substituir um subconjunto das URLs de segmento de anúncio em fluxo, permitindo que o reprodutor de mídia 306 desempenhe o restante do anúncio em fluxo. Em outra modalidade, se o anúncio de substituição é mais curto o que o anúncio em fluxo, o analisador de manifesto 302 pode escolher exibir uma mensagem ou imagem intersticial pelo restante da duração do anúncio em fluxo e somente permitir que o reprodutor de mídia 306 reintegre o fluxo ao vivo uma vez que o anúncio em fluxo esteja completo. Em uma modalidade, se o anúncio de substituição é mais longo do que o anúncio em fluxo, o analisador de manifesto 302 pode usar somente um subconjunto dos segmentos de substituição de anúncio permitindo que o reprodutor de mídia 306 retorne para o fluxo ao vivo sem completar o anúncio de substituição inteiro, para impedir que o usuário perca o conteúdo de fluxo ao vivo. Em uma modalidade, o analisador de manifesto 302 detecta o término da reprodução de anúncio com base na solicitação consistente por arquivos de manifesto incluindo todos os segmentos para um dado anúncio bem como uma solicitação por um manifesto contendo segmentos de não anúncio subsequentes. Em uma modalidade, o analisador de manifesto 302 emite uma mensagem de sinalização ao ADS 108 para informá-lo da reprodução de anúncio completa e gravar a impressão de anúncio. Em uma modalida
24/38 de, o analisador de manifesto 302 emite sinalizadores para cada solicitação de manifesto correspondente a um subsequente segmento de anúncio para fornecer informação de impressão de anúncio progressiva ao ADS 108.
[0058] Em uma modalidade, se o anúncio de substituição não suporta uma codificação idêntica a do segmento de fluxo ao vivo sendo substituído, o analisador de manifesto 302 pode escolher a partir de qualquer das codificações disponíveis. Em uma modalidade, o analisador de manifesto 302 pode estimar uma codificação menor (isto é, taxa de bits menor, taxa de quadros, resolução, etc.) para acomodar (isto é, compensar) maior latência em restaurar segmentos de anúncio. Em outra modalidade, o analisador de manifesto 302 pode estimar uma codificação maior (isto é, taxa de bits maior, taxa de quadro, resolução, etc.) para maximizar a qualidade do anúncio e a geração de lucros de anúncio. Em outra modalidade, o analisador de manifesto 302 pode escolher exibir uma mensagem ou imagem intersticial pela duração do anúncio em fluxo ao invés de selecionar uma codificação que não corresponde exatamente.
[0059] Em uma modalidade, o reprodutor de mídia 306, mediante o recebimento de um arquivo de manifesto, emite solicitações por arquivos de segmento para o proxy de segmento 310. Em uma modalidade, o proxy de segmento 310 detecta as solicitações por segmentos de anúncio com base na estrutura de URL do segmento. Há múltiplas formas de codificar metadados em uma URL (por exemplo, estrutura de URL, argumentos de cadeia de consulta, etc.), como deveria ser conhecido pelos versados na técnica. Dever-se-ia entender que o proxy de segmento 310 é flexível o bastante para suportar a detecção de solicitações de segmento de anúncio usando qualquer método de codificação de metadados baseado em URL válida. Em uma modalidade, segmentos de não anúncio são restaurados a partir da CDN 104. Em outra modalidade, os segmentos de não anúncio são restaurados diretamente a partir do processador de fluxo ao vivo 102.
[0060] O proxy de segmento 310 encaminha segmentos de não anúncio para o analisador de segmento 308. Em uma modalidade, o analisador de segmento 308 detecta notificações de comercial de anúncio de chegada embutidas nos segmentos
25/38 e extrai informação de endereço de rede para o ADS 108, bem como qualquer informação de programa, tempo de transmissão de programa original, restrição de anúncio, e/ou informação demográfica de programa. Há múltiplos formatos de arquivo de segmento (por exemplo, MPEG-TS, DASH, RTP, etc.), bem como múltiplos métodos de inserção de metadados para cada formato (por exemplo, tags ID3, cabeçalhos de metadados padrão, canais de dados alternativos, etc.), como deveria ser conhecido pelos versados na técnica. Dever-se-ia entender que o analisador de segmento 308 é flexível o bastante para suportar analisar e detectar metadados em qualquer formato de arquivo e segmento válido usando qualquer método de inserção de metadados válido. Em uma modalidade, o analisador de segmento 308 fornece notificações de comercial de anúncio de chegada ao analisador de manifesto 302. Em uma modalidade, o analisador de segmento 308 também fornece notificações de comercial de anúncio de chegada ao proxy de segmento 310. O analisador de segmento 308 responde ao reprodutor de mídia 306 com o segmento.
[0061] Em uma modalidade, o proxy de segmento 310, mediante o recebimento da notificação de um comercial de anúncio de chegada, emite uma solicitação de colocação de anúncio para o ADS 108 incluindo qualquer identificação de programa, tempo de transmissão de programa original, restrição de anúncio, e/ou informação demográfica de programa. Em uma modalidade, o proxy de segmento 310 inclui identidade de assinante e/ou de usuário, localização, e/ou informação demográfica na solicitação de colocação de anúncio. Em uma modalidade, o ADS 108 responde com um arquivo de manifesto ou uma URL apontando para um arquivo de manifesto especificando os segmentos para o anúncio de substituição. Em uma modalidade, quando o proxy de segmento 310 detecta uma solicitação pelo primeiro segmento de anúncio, ele substitui o anúncio com o fornecido pelo ADS 108. Em uma modalidade, a resposta de colocação de anúncio e arquivo de manifesto é armazenada em cache para uso em oportunidades de substituição de anúncio futuras. Em uma modalidade, o proxy de segmento 310 transfere os segmentos de anúncio alternativos e os fornece ao analisador de segmento 308. O analisador de segmento 308 responde ao reprodutor de mídia 306 com o segmento alternativo. Em uma modalidade, o ana
26/38 lisador de segmento 308 descriptografa o segmento de anúncio e recriptografa o segmento de anúncio usando a mesma chave de criptografia do segmento de fluxo ao vivo sendo substituído antes de enviá-lo ao reprodutor de mídia 306.
[0062] Em uma modalidade, se o anúncio de substituição é mais curto do que o anúncio em fluxo, o proxy de segmento 310 pode escolher somente substituir um subconjunto das URLs de segmento de anúncio em fluxo, permitindo que o reprodutor de mídia 306 desempenhe o restante do anúncio em fluxo. Em outra modalidade, se o anúncio de substituição é mais curto do que o anúncio em fluxo, o proxy de segmento 310 pode escolher exibir um anúncio intersticial pelo restante da duração do anúncio em fluxo e somente permitir que o reprodutor de mídia 306 reintegre o fluxo ao vivo uma vez que o anúncio em fluxo esteja completo. Em uma modalidade, se o anúncio de substituição é mais longo do que o anúncio em fluxo, o proxy de segmento 310 pode usar somente um subconjunto dos segmentos de substituição de anúncio permitindo que o reprodutor de mídia 306 retome para o fluxo ao vivo sem reproduzir o anúncio de substituição inteiro até o fim, para impedir que o usuário perca o conteúdo de fluxo ao vivo.
[0063] Em uma modalidade, se o anúncio de substituição não suporta uma codificação idêntica ao segmento de fluxo ao vivo sendo substituído, o proxy de segmento 310 pode escolher a partir de quaisquer das codificações disponíveis. Em uma modalidade, o proxy de segmento 310 pode estimar uma codificação menor (isto é, taxa de bits menor, taxa de quadro, resolução, etc.) para acomodar (isto é, compensar) latência maior em restaurar segmentos de anúncio. Em outra modalidade, o proxy de segmento 310 pode estimar uma codificação maior (isto é, taxa de bits maior, taxa de quadro, resolução, etc.) para maximizar a qualidade de anúncio e a geração de lucro de anúncio. Em outra modalidade, o proxy de segmento 310 pode escolher exibir uma mensagem ou imagem intersticial pela duração do anúncio em fluxo ao invés de selecionar uma codificação que não corresponde exatamente.
[0064] Em uma modalidade, o proxy de segmento 310 detecta o último segmento para um anúncio e notifica o analisador de segmento 308 de que o segmento restaurado é o último para o anúncio atual. O analisador de segmento 308 extrai metada
27/38 dos de mensagem de sinalização de anúncio (por exemplo, uma URL à qual mensagens de sinalização deveríam ser postadas, informação de autenticação, e/ou o formato da mensagem sinalização) a partir do segmento. Em uma modalidade, o analisador de segmento 308 notifica o analisador de manifesto 302 quando o reprodutor de mídia 306 completa a recuperação do último segmento para o anúncio. Em outra modalidade, o analisador de segmento emite uma mensagem de sinalização para o ADS 108 para notificar o ADS 108 de que o reprodutor de mídia 306 completou a recuperação do último segmento para o dado anúncio e gravar a impressão de anúncio. Em uma modalidade, o analisador de segmento 308 emite sinalizadores para cada segmento de anúncio entregue ao reprodutor de mídia 306 para fornecer informação de impressão de anúncio progressiva para o ADS 108.
[0065] A Figura 4 é um diagrama de blocoss para uma modalidade da presente invenção para implementar um proxy de segmento de anúncio (proxy de rede) 106. O proxy de rede 106 inclui um analisador de solicitação de HTTP 402 que manipula e extrai metadados a partir de solicitações de restauração de manifesto e/ou segmento baseado em HHTP a partir de clientes 110, um módulo de seleção de anúncio 404 que seleciona anúncios de substituição e mapeia solicitações individuais para segmentos específicos, um módulo de entrega de segmento 408 que responde a clientes 110 com dados de segmentos armazenados em cache ou redirecionamentos de localização de segmento, e uma cache 406 para armazenar informação de colocação de anúncio, bem como segmentos de anúncio.
[0066] Em uma modalidade, o analisador de solicitação de HTTP 402 recebe uma solicitação de manifesto a partir do cliente 110. O analisador de solicitação de HTTP 402 restaura o manifesto atual a partir da CDN 104 e analisa os números de sequência de segmento de anúncio, identificadores de colocação, identificadores de programa, tempo de transmissão de programa original, restrições de anúncio, informação demográfica de programa, informação de assinante, e/ou identidade de usuário, localização, e/ou informação demográfica e os encaminha para o módulo de seleção de anúncio 404. Se o segmento mais novo (mais recentemente gerado) listado no manifesto é o primeiro segmento de um anúncio, o módulo de seleção de anúncio
28/38
404 emite uma solicitação de colocação de anúncio ao ADS 108 incluindo a informação extraída. Em uma modalidade, o módulo de seleção de anúncio 404 pode usar respostas de colocação de anúncio armazenadas em cache para solicitações de cliente 110 demograficamente similar. Em uma modalidade, o ADS 108 responde com um arquivo de manifesto ou uma URL apontando para um arquivo de manifesto especificando os segmentos para o anúncio de substituição. Em outra modalidade, o ADS 108 responde com um identificador de mídia de anúncio usado para consultar informação de manifesto e/ou de segmento para o anúncio selecionado. Em uma modalidade, o módulo de seleção de anúncio 404 armazena a resposta de colocação de anúncio na cache 406. Se o manifesto contém múltiplos segmentos para o anúncio, o módulo de seleção de anúncio 404 restaura a informação de segmento para cada um dos segmentos de anúncio listados no manifesto, com base no número de sequência de segmento de anúncio a partir da cache 406. O módulo de seleção de anúncio 404 então encaminha o manifesto atualizado para o módulo de entrega de HTTP 408 que encaminha o manifesto modificado para o cliente 110.
[0067] Em uma modalidade, o analisador de solicitação de HTTP 402 recebe uma solicitação de segmento de anúncio a partir do cliente 110. O analisador de solicitação de HTTP 402 analisa os números de sequência de segmento de anúncio, identificadores de colocação, identificadores de programa, tempo de transmissão de programa original, restrições de anúncio, informação demográfica de programa, informação de assinante, e/ou identidade de usuário, localização, e/ou informação demográfica e os encaminha para o módulo de seleção de anúncio 404. Se a solicitação é para o primeiro segmento no anúncio, o módulo de seleção de anúncio 404 emite uma solicitação de colocação de anúncio para o ADS 108 incluindo a informação extraída. Em uma modalidade, o módulo de seleção de anúncio 404 pode usar respostas de colocação de anúncio armazenadas em cache para solicitações de cliente 110 demograficamente similar. Em uma modalidade, o ADS 108 responde com um arquivo de manifesto ou uma URL apontando para um arquivo de manifesto especificando os segmentos para o anúncio de substituição. Em outra modalidade, o ADS 108 responde com um identificador de mídia de anúncio usado para consultar
29/38 informação de manifesto e/ou de segmento para o anúncio selecionado. Em uma modalidade, o módulo de seleção de anúncio 404 armazena a resposta de colocação de anúncio na cache 406. Se a solicitação é por um segmento que não o primeiro segmento no anúncio, o módulo de seleção de anúncio 404 restaura a informação de segmento para o segmento atual, com base no número de sequência de segmento de anúncio a partir da cache 406. O módulo de seleção de anúncio 404 então encaminha a informação de segmento para o módulo de entrega de HTTP 408. Em uma modalidade, o módulo de entrega de HTTP 408 realiza proxy da solicitação de segmento restaurando o segmento real da CDN 104 e encaminha os dados para o cliente 110. Em uma modalidade, o módulo de entrega de segmento 408 armazena o segmento restaurado na cache 406. Em uma modalidade, o módulo de entrega de segmento 408 usa os segmentos armazenados em cache a partir da cache 406 para responde aos clientes 110 diretamente. Em outra modalidade, o módulo de entrega de segmento 408 redireciona o cliente 110 para a localização do segmento na CDN 104 (por exemplo, usando redirecionamentos de HTTP 302). Em uma modalidade, o módulo de entrega de HTTP 408 descriptografa o segmento de anúncio e recriptografa o segmento de anúncio usando a mesma chave de criptografia do segmento de fluxo ao vivo sendo substituindo antes de enviá-lo para o cliente 110.
[0068] Em uma modalidade, se o anúncio de substituição não suporta uma codificação idêntica a do segmento de fluxo ao vivo sendo substituído, o módulo de seleção de anúncio 404 pode escolher dentre qualquer uma das codificações disponíveis. Em uma modalidade, o módulo de seleção de anúncio 404 pode estimar uma codificação maior (isto é, maior taxa de bits, taxa de quadro, resolução, etc.) para maximizar a qualidade do anúncio e a geração de lucros de anúncio. Em outra modalidade, o módulo de seleção de anúncio 404 pode escolher não substituir o anúncio no fluxo ao vivo se ele for incapaz de selecionar uma codificação que correspondente exatamente.
[0069] A Figura 5 é um fluxograma que descreve um processo 500 do processador de fluxo ao vivo 102 para executar segmentação baseada em limite de anúncio e inserção de metadados de anúncio. Na etapa 502, o processador de fluxo ao vivo
30/38
102 começa a gravar dados de feed ao vivo e analisar dados de tom de localização (por exemplo, identificadores de programa, programa atual e informação de estampa de tempo de relógio, etc.). O tempo de relógio atual está correlacionado com a estampa de tempo de programa e armazenado como o tempo de transmissão original. Em uma modalidade, o tempo de relógio atual e a estampa de tempo de programa são gravados como o início do processamento de fluxo ao vivo, e todos os tempos de relógio futuros são calculados como um deslocamento a partir do início do processamento de fluxo ao vivo, isto é, dado um tempo de relógio inicial W e uma estampa de tempo de programa inicial P, e uma razão de conversão de estampa de tempo de programa para tempo de relógio R, o tempo de relógio atual C pode ser calculado a partir da estampa de tempo de programa atual T como C = W + (T - P) * R. Os dados de feed ao vivo são alimentados no transcodificador na etapa 504, onde o fluxo de entrada é transcodificado em uma pluralidade de codificações usando diferentes codecs, taxas de bits, taxas de quadros, taxas de amostragem, e resoluções.
[0070] Na etapa 506-510, o processador de fluxo ao vivo 102 verifica e responde os dados no fluxo ao vivo. Em uma modalidade, o feed ao vivo contém tons de localização SCTE-35 que indicam grupos de anúncios de chegada (comerciais), o início de cada grupo de anúncios, e o fim de cada grupo de anúncios. Esses tons de localização são usados para processamento seletivo como agora descrito em detalhes. Em outra modalidade, os grupos de anúncios (comerciais) são definidos a priori e fornecidos fora de banda.
[0071] Na etapa 506, se os localizados indicam o início de um novo anúncio, o processamento prossegue para a etapa 520 onde o segmento atual é truncado e um novo segmento é iniciado de modo que o início do anúncio se alinhará com um limite de segmento. Os metadados de início de anúncio são inseridos no novo segmento. O processamento então prossegue para a etapa 516 onde o segmento truncado é criptografado e carregado na CDN 104. O processamento então prossegue para a etapa 518 onde o arquivo de manifesto é atualizado com a informação de segmento truncado e os metadados de início de anúncio para o segmento subsequente são
31/38 carregados na CDN 104. O processamento então prossegue de volta para a etapa 502 onde o processamento do feed ao vivo continua.
[0072] Na etapa 506, se os localizadores não indicam o início de um anúncio, o processamento continua para a etapa 508. Na etapa 508, se os localizadores indicam o fim de um anúncio, o processamento prossegue para a etapa 522 onde o segmento atual é truncado e um novo segmento é iniciado de modo que o início do próximo programa (seja ele um anúncio ou o programa principal) se alinhará com um limite de segmento. Os metadados de mensagem de sinalização de anúncio são inseridos no segmento truncado. O processamento então prossegue para a etapa 516 onde o segmento truncado é criptografado e carregado na CDN 104. O processamento então prossegue para a etapa 518 onde o arquivo de manifesto é atualizado com a informação de segmento truncado e tanto os metadados de fim de anúncio quanto os metadados de mensagem de sinalização de anúncio são carregados na CDN 104. O processamento então prossegue de volta para a etapa 502 onde o processamento do feed ao vivo continua.
[0073] Na etapa 508, se os localizadores não indicam o fim de um anúncio, o processamento continua para a etapa 510. Na etapa 510, se os localizadores não indicam um comercial de anúncio de chegada, o processamento prossegue diretamente para a etapa 512. Na etapa 510, se os localizadores indicam um comercial de anúncio de chegada, o processamento prossegue para a etapa 526 na qual os metadados são inseridos no segmento atual especificando o comercial de anúncio de chegada, bem como o identificador de programa, tempo de transmissão de programa original, restrições de anúncio de programa, e metadados de informação demográfica de programa. Os metadados de comercial de anúncio, bem como identificador de programa, tempo de transmissão de programa original, restrições de anúncio de programa, e metadados de informação demográfica de programa são também inseridos no arquivo de manifesto. Em uma modalidade, os descritores de programa SCTE-35 descrevem a estrutura (isto é, o número de anúncios e a duração de cada anúncio) do grupo de anúncios. Em outra modalidade, na etapa 526, o processador de fluxo ao vivo 102 emite uma solicitação SCTE-130 para o ADS 108 para determi
32/38 nar a estrutura (isto é, o número de anúncios e a duração de cada anúncio) do grupo de anúncios. Em uma modalidade, a solicitação SCTE-130 inclui o identificador de programa e o tempo de relógio de programa correlacionado C para o ponto de localização. Os dados de localização para o grupo de anúncios atual são atualizados com a informação de estrutura de grupo de anúncios retomada pelo ADS 108. O processamento então prossegue para a etapa 512.
[0074] Na etapa 512, uma verificação é executada para ver se o segmento está completo (em termos da duração do segmento). Sob circunstâncias normais, os segmentos são considerados completos quando sua duração é maior ou igual à duração do segmento alvo fixa. Em uma modalidade, as durações dos segmentos são um múltiplo fixo da duração de GOP (grupo de imagens). Segmentos mais curtos podem ser criados nas etapas 520 e 522 se truncagem é exigida para alinhar apropriadamente inícios de segmento a limites de programa. De outra forma, os segmentos são criados em limites de duração na etapa 512. Se o segmento não está ainda completo, o processamento prossegue de volta para a etapa 502 onde o processamento de fluxo ao vivo continua. Se o segmento está completo, o processamento prossegue para a etapa 514 onde o segmento atual é fechado e um novo segmento é iniciado. O processamento prossegue para a etapa 516 onde o segmento completo é criptografado e carregado na CDN 104. O processamento então prossegue para a etapa 518 onde o manifesto é atualizado com a informação de segmento completa e carregado na CDN 104. Em uma modalidade, o processo mantém estado com relação a se ou não o segmento atual sendo processado é parte de um anúncio (isto é, mantendo rastreio do início e fim de tons de localização) e metadados adicionais são adicionados ao manifesto, incluindo números de sequência de segmento de anúncio. O processamento então prossegue de volta para a etapa 502 onde o processamento do feed ao vivo continua.
[0075] A Figura 6 é um fluxograma que descreve um processo 600 para executar substituição de anúncio alvo no lado do cliente. O processo é dividido em duas partes: realizando proxy de manifesto nas etapas 602 a 620 e realizando proxy de de segmento nas etapas 652 a 666. Os dois processos poderíam ser usados indepen
33/38 dentemente, ou em conjunto. Apesar de solicitações de colocação de anúncio serem especificadas em ambos os processos, se os dois processos são usados juntos, não há necessidade de emitir duas solicitações de colocação de anúncio.
[0076] No realizando proxy de manifesto começando na etapa 602, o proxy de manifesto 304 recebe uma solicitação de manifesto a partir do reprodutor de mídia 306. O proxy de manifesto 304 restaura um manifesto atualizado a partir da CDN 104 e analisa metadados de anúncio inseridos pelo processador de fluxo ao vivo 102. Na etapa 604, uma verificação é executada para ver se um novo início de anúncio é indicado no manifesto. Se um novo início de anúncio é indicado na etapa 604, o processamento prossegue para a etapa 606 onde o sinalizador de substituição de anúncio é configurado, indicando ao analisador de manifesto 302 que a reescrita de manifesto deveria ocorrer. O processamento então prossegue para a etapa 608. Se um novo início de anúncio não é indicado, o processamento prossegue a partir da etapa 604 diretamente para a etapa 608.
[0077] Na etapa 608, uma verificação é executada para ver se o fim do anúncio atual é indicado no manifesto. Se o fim do anúncio é indicado, o processamento prossegue para a etapa 610 onde o sinalizador de substituição de anúncio é desconfigurado, indicando ao analisador de manifesto 302 que a reescrita de manifesto deveria parar. Uma mensagem de sinalização é também enviada para o ADS 108 para indicar o término da reprodução de anúncio. O processamento então prossegue para a etapa 612. Se o fim do anúncio não é indicado, o processamento prossegue da etapa 608 diretamente para a etapa 612.
[0078] Na etapa 612, uma verificação é executada para ver se um comercial de anúncio de chegada é indicado no manifesto. Se um comercial de anúncio de chegada é indicado, o processamento prossegue para a etapa 614 onde uma solicitação de colocação de anúncio é emitida para o ADS 108. Em uma modalidade, o ADS 108 retoma um arquivo de manifesto ou URL apontando para um arquivo de manifesto especificando os segmentos para o anúncio de substituição. Em outra modalidade, o ADS 108 retorna um identificador de mídia de anúncio usado para consultar a informação de localização de manifesto e/ou segmento para o anúncio seleciona
34/38 do. O manifesto é salvo para uso futuro na substituição de segmento de anúncio. O processamento então prossegue para a etapa 616. Se um novo início de anúncio não é indicado, o processamento prossegue da etapa 612 diretamente para a etapa 616.
[0079] Na etapa 616, uma verificação é executada para ver se a substituição de anúncio está atualmente em progresso, pela etapa 606. Se a substituição de anúncio está ativa, o processamento prossegue para a etapa 618 onde a reescrita de manifesto ocorre. O analisador de manifesto 302 seleciona o próximo segmento de substituição de anúncio sequencial e insere sua URL (junto com a URL de chave de criptografia associada e/ou metadados de chave de criptografia) no manifesto. O processamento então prossegue para a etapa 620. Se um novo início de anúncio não é indicado, o processamento prossegue da etapa 616 diretamente para a etapa 620. Na etapa 620, o manifesto é retomado para o reprodutor de mídia 306.
[0080] Ao realizar proxy de segmento começando na etapa 652, o proxy de segmento 310 recebe uma solicitação de segmento a partir do reprodutor de mídia 306.
[0081] Na etapa 654, uma verificação é executada para ver se a solicitação é pelo primeiro segmento de um anúncio. Se a solicitação é pelo primeiro segmento de um anúncio, o processamento prossegue para a etapa 656 onde uma solicitação de colocação de anúncio é emitida para o ADS 108. Em uma modalidade, o ADS 108 retoma um arquivo de manifesto ou uma URL apontando para um arquivo de manifesto especificando os segmentos para o anúncio de substituição. Em outra modalidade, o ADS 108 retoma um identificador de mídia de anúncio usado para consultar a informação de localização de manifesto e/ou segmento para o anúncio selecionado. O manifesto é salvo para uso na substituição de segmentos de anúncio subsequentes para o anúncio selecionado. Em uma modalidade, a resposta de colocação de anúncio e o arquivo de manifesto são armazenados em cache para uso em futuras oportunidades de substituição de anúncio. O primeiro segmento do anúncio de substituição é selecionado e restaurado. O processamento então prossegue para a etapa 658. Se a solicitação não é pelo primeiro segmento de um anúncio, o pro
35/38 cessamento prossegue da etapa 654 diretamente para a etapa 658.
[0082] Na etapa 658, uma verificação é executada para ver se a solicitação é pelo último segmento do anúncio atual. Se a solicitação é pelo último segmento do anúncio atual, o processamento prossegue para a etapa 660 onde uma mensagem de sinalização é enviada para o ADS 108 para indicar o término da reprodução de anúncio. O processamento então prossegue para a etapa 662. Se a solicitação é agora pelo último segmento do anúncio atual, o processamento prossegue da etapa 658 diretamente para a etapa 662.
[0083] Na etapa 662, uma verificação é executada para ver se a substituição de anúncio está atualmente em progresso, pela etapa 656. Se a substituição de anúncio está ativa, o processamento prossegue para a etapa 664 onde o segmento de substituição de anúncio atual é retomado para o reprodutor de mídia 306. Em uma modalidade, o analisador de segmento 308 descriptografa o segmento de anúncio e recriptografa o segmento de anúncio usando a mesma chave de criptografia do segmento de fluxo ao vivo sendo substituído antes de enviá-lo para o reprodutor de mídia 306. Se a substituição de anúncio não está ativa, o processamento prossegue da etapa 662 diretamente para a etapa 666. Na etapa 666, o segmento de fluxo solicitado é retomado para o reprodutor de mídia 306.
[0084] A Figura 7 é um fluxograma que descreve os processos do proxy de rede 106 para executar substituição de anúncio alvo baseado em proxy de rede. Há dois subprocessos: realizando proxy de segmento no subprocesso 700A tendo as etapas 702-718 (Figura 7A), e realizando proxy de manifesto no subprocesso 700B tendo as etapas 752-764 (Figura 7B). Os dois processos poderíam ser usados independentemente ou em conjunto. Apesar de solicitações de colocação de anúncio serem especificadas em ambos os processos, se os dois processos são usados juntos, não há necessidade de emitir duas solicitações de colocação de anúncio.
[0085] Começando com o subprocesso de realizando proxy de segmento 700A, na etapa 702, o proxy de rede 106 recebe e analisa uma solicitação de segmento de anúncio a partir do cliente 110. Na etapa 704, uma verificação é executada para ver se esse é o primeiro segmento de um novo anúncio. Se a solicitação é por um novo
36/38 anúncio, o processamento prossegue para a etapa 706 onde metadados de anúncio, incluindo ponto (colocação) de anúncio, identificador de programa, tempo de transmissão de programa original, restrições de colocação de anúncio, e informação demográfica de programa, bem como identidade de assinante e/ou de usuário, localização, e/ou informação demográfica é extraído da solicitação. Uma solicitação de colocação de anúncio é então emitida ao ADS 108. Em uma modalidade, o ADS 108 retorna um arquivo de manifesto ou uma URL apontando para um arquivo de manifesto especificando os segmentos para o anúncio de substituição. Em outra modalidade, o ADS 108 retorna um identificador de mídia de anúncio usado para consultar a informação de localização de manifesto e/ou segmento para o anúncio selecionado. O proxy de rede 106 armazena a resposta de colocação de anúncio bem como um mapeamento entre a solicitação de anúncio de cliente atual 110 à resposta de colocação de anúncio de modo que as subsequentes solicitações de segmento de anúncio possam ser apropriadamente mapeadas para continuação do anúncio selecionado. Em uma modalidade, a resposta de colocação de anúncio e o arquivo de manifesto são armazenadas em cache para uso em futuras oportunidades de substituição de anúncio. Na etapa 704, se a solicitação não foi por um novo anúncio, o processamento prossegue para a etapa 708, onde a solicitação de anúncio de cliente 110 é mapeada para uma resposta de colocação de anúncio, e o próximo segmento apropriado é selecionado.
[0086] Uma vez que o processamento está completo nas etapas 706 ou 708, o processamento prossegue para a etapa 710, onde a entrega de segmento de anúncio começa. Na etapa 710, uma verificação é executada para ver se o segmento desejado é armazenado em cache localmente. Se o segmento é armazenado localmente, o processamento prossegue para a etapa 712 onde o segmento é restaurado a partir da cache local 406 e entregue para o cliente 110. Se o segmento não é armazenado em cache localmente, o processamento prossegue da etapa 710 diretamente para a etapa 714 onde uma verificação é executada para ver se o redirecionamento é permitido. Se o redirecionamento é permitido, o processamento prossegue para a etapa 716 onde o proxy de rede 106 emite um redirecionamento de
37/38
HTTP 302 para o cliente 110, direcionando-o para a localização do segmento de anúncio selecionado na CDN 104. Se o redirecionamento não é permitido, o processamento prossegue da etapa 714 diretamente para a etapa 718 onde o proxy de rede 106 começa a restaurar o segmento de anúncio selecionado a partir da CDN 104 e realiza proxy transparente para o cliente 110. Em uma modalidade, o proxy de rede 106 descriptografa o segmento de anúncio e recriptografa o segmento de anúncio usando a mesma chave de criptografia do segmento de fluxo ao vivo sendo substituído antes de enviá-lo para o cliente 110. Em uma modalidade, os dados de segmento de anúncio são também armazenados localmente na cache 406.
[0087] Agora voltando para o subprocesso de realizar proxy de manifesto 700B, na etapa 752, o proxy de rede 106 recebe e analisa uma solicitação de manifesto a partir do cliente 110. O processamento então continua para a etapa 753 onde o proxy de rede 106 restaura o arquivo de manifesto de fluxo ao vivo atual a partir da CDN 104. Na etapa 754, uma verificação é executada para ver se o segmento mais recente (mais novo) no manifesto é o primeiro segmento de um novo anúncio. Se o manifesto contém o início de um novo anúncio, o processamento prossegue para a etapa 756 onde os metadados de anúncio, incluindo ponto (colocação) de anúncio, identificador de programa, tempo de transmissão de programa original, restrições de colocação de anúncio, e informação demográfica de programa, bem como identidade de assinante e/ou de usuário, localização, e/ou informação demográfica é extraída da solicitação. Uma solicitação de colocação de anúncio é então emitida para o ADS 108. Em uma modalidade, o ADS 108 retoma um arquivo de manifesto ou uma URL apontando para um arquivo de manifesto especificando os segmentos para o anúncio de substituição. Em outra modalidade, o ADS 108 retoma um identificador de mídia de anúncio usado para consultar a informação de localização de manifesto e/ou segmento para o anúncio selecionado. O proxy de rede 106 armazena a resposta de colocação de anúncio, bem como um mapeamento entre a solicitação de anúncio de cliente atual 110 à resposta de colocação de anúncio de modo que as subsequentes solicitações de segmento de anúncio possam ser apropriadamente mapeadas para continuação do anúncio selecionado. Em uma modalidade, a res
38/38 posta de colocação de anúncio e o arquivo de manifesto são armazenados em cache para uso em futuras oportunidades de substituição de anúncio. Uma vez que a informação de anúncio é restaurada, o processamento continua para a etapa 762. [0088] Na etapa 754, se o manifesto não contém o início de um novo anúncio, o processamento prossegue para a etapa 758 onde uma verificação é executada para ver se o manifesto contém segmentos de anúncio que estão atualmente sendo substituídos. Se não há segmentos de anúncio no manifesto, o processamento continua para a etapa 764 onde o manifesto não modificado é retornado para o cliente 110. Se segmentos de anúncio, que não somente o primeiro segmento de anúncio, existem no manifesto na etapa 758, o processamento continua para a etapa 760 onde a informação de substituição de anúncio é restaurada a partir da cache 406. O processamento então continua para a etapa 762.
[0089] Na etapa 762, o proxy de rede 106 substitui URLs de segmento de anúncio no manifesto de fluxo ao vivo com as URLs de segmento de substituição de anúncio (junto com qualquer URL de chave de criptografia associada e/ou metadados de chave de criptografia) restauradas a partir do ADS 108 e retorna o arquivo de manifesto modificado para o cliente 110.
[0090] Embora a descrição acima inclua numerosas especificações no interesse de possibilitar um completo entendimento, está claro que a presente invenção pode ser realizada de uma variedade de outras maneiras e abrange todas as implementações que estão dentro do escopo das reivindicações citadas aqui.