Desenvolvimento

6 jul, 2016

A união de esforços da Netflix e da comunidade IMF

Publicidade

Hoje trago a vocês mais uma novidade da Netflix. Neste artigo, demonstrarei todo o esforço e a abertura do código do Photon, um OSS utilizado pela Netflix, juntamente com o seu esforço na melhoria da padronização do IMF e convidar a comunidade a participar desse projeto.

O IMF (Interoperable Master Format) é uma solução que tem como objetivo resolver os problemas da indústria de transmissão de dados e dos criadores de conteúdo. A ideia é retirar o máximo de rendimento possível no fluxo de trabalho baseado em um arquivo único para a distribuição dos ativos em múltiplos territórios.

Photon OSS – Validação IMF para as massas

Segundo os engenheiros da Netflix, a ideia não é manter o projeto privado, e sim compartilhá-lo com a comunidade. A medida que eles desenvolvem as próprias ferramentas de validação do IMF internamente, eles alimentam um repositório git público. O projeto, intitulado Photon (para sugerir um torchbearer), foi idealizado para auxiliar a adoção mais ampla da norma IMF, e para simplificar o desenvolvimento de ferramentas do IMF. Ele pode ser utilizado de algumas maneiras diferentes: como uma biblioteca central para a construção completa end-to-end de um fluxo de trabalho IMF de ingestão de conteúdo, um backend web-service que proporciona uma rápida reviravolta na validação ativos do IMF ou até como uma implementação de referência do padrão do IMF.

Photon e o pipeline de processamento de conteúdo no NetFlix

De acordo com a Netflix, o IMF apresenta novas oportunidades e desafios significativos para o ecossistema digital da Cadeia de Abastecimento. O Photon incorpora todo o conhecimento e a experiência de construção automatizada, de fluxo de trabalho distribuído de ingestão de conteúdo baseado na nuvem. Até o presente momento, eles têm o Photon totalmente integrado no seu fluxo de trabalho de serviços da Netflix IMF, e continuam a melhorá-lo com a evolução dos requisitos de fluxo de trabalho. Abaixo, eles demonstram um simples diagrama de três passos do fluxo de trabalho de processamento de conteúdo na Netflix (você pode ver um artigo sobre Netflix FMI Workflow aqui), juntamente com o uso de Photon.

netflix

Para a Netflix, o Photon tem toda a lógica necessária para análise, leitura e validação de ativos do IMF, incluindo AssetMap, Packing List (PKL), Composition Playlist (CPL) e os arquivos de trilha de áudio/vídeo. Algumas das principais características do Photon que eles têm utilizado na construção do fluxo de trabalho de processamento de conteúdo IMF são:

  1. A arquitetura modular juntamente com um conjunto de classes seguras de thread para validar os ativos IMF, tais como Composition Playlist, Packing List e AssetMap;
  2. Um modelo para impor restrições do IMF em metadados estruturais dos track files e Composition Playlists;
  3. Suporte para vários namespaces para Composition Palylist, Packing List e AssetMap, a fim de manter a conformidade com os esquemas mais recentes publicados pelo SMPTE;
  4. Um parser/reader para interpretar os metadados dentro de track files do IMF e serializá-lo como um documento SMTPE st2067-3 (a especificação de Composition Playlist) compatível com XML;
  5. Implementação de uma inspeção profunda de ativos do IMF, incluindo algoritmos de conformidade para Composition Playlist e associatividade;
  6. Uma interface descentralizada para validação IMF, que poderia ser usada como um backend em um serviço web RESTful para validar pacotes do IMF.

Composição IMF no mundo real

O IMF continua a evoluir, assim como as ferramentas usadas para produzir pacotes do IMF. Enquanto o padrão e as ferramentas amadurecem, o pessoal da Netflix espera receber ativos nesse meio tempo que não tenham pegado com as mais recentes especificações. A fim de minimizar que esses ativos malformados possam fazer o seu caminho no fluxo de trabalho da Netflix, eles estão se esforçando para implementar algoritmos que façam a realização de profundas inspeções. Na seção anterior, foram apresentados dois algoritmos implementados em Photon para inspeções profundas, nomeados Compositon Playlist Conformance e Composition Playlist Associativity. Abaixo, você encontra como esses algoritmos foram definidos e elaborados.

Composition Playlist Conformance

Primeiramente, eles definiram uma Composition Playlist para estar de acordo com toda a estrutura do descritor de arquivo de metadados (incluindo sub-descritores) presentes em cada track file, que é uma parte da composição mapeada para um único e essencial elemento descritor na Composition Playlist’s Essence Descriptor List. O algoritmo para determinar a Composition Playlist compreende os seguintes passos:

  1. Analisar e ler todos os descritores essenciais juntamente com os seus sub-descritores associados a partir de cada track file que é uma parte da composição;
  2. Analisar e ler todos os elementos essenciais do descritor, juntamente com seus sub-descritores associados na Essence Descriptor List;
  3. Verificar se cada Essence Descriptor na Essence Descriptor List é referenciado por pelo menos um track file na composição. Se não for, o Composition Playlist não está em conformidade;
  4. Identificar o descritor essencial na Essence Descriptor List correspondente ao próximo track file. Isso é feito através da utilização de elementos sintáticos definidos na Composition Playlist – isto é, Track File ID e o elemento SourceEncoding. Se não apresentar a Compositon Playlist, não está em conformidade;
  5. Comparar o descritor essencial identificado e seus sub-descritores na Essence Descriptor List com o descritor essencial correspondente e seus sub-descritores presentes no track file. Pelo menos um descritor essencial e sub-descritores no track file devem coincidir com o descritor essencial correspondente e sub-descritores na Essence Descriptor List. Se não, a Composition Playlist não está em conformidade;

A abordagem algorítmica que a Netflix adotou para realizar essa verificação é representada no fluxograma a seguir:

netflix-1

Composition Associativity

A atual definição de IMF permite o gerenciamento de versões entre uma editora IMF e um consumidor IMF. No mundo real, várias partes (parceiros de conteúdo, parceiros de atendimento etc.) muitas vezes trabalham em conjunto para produzir um título final. Isso sugere a necessidade de um sistema de gerenciamento multipartidário de versão (ao longo das linhas do sistema de controle de versão do software). Enquanto o padrão do IMF não se opõe a isso – esse aspecto está faltando na implementação do IMF existente e ainda não existem indústrias mind-share até o momento. A Netflix traz o conceito de Composition Associativity como uma solução para identificar e associar Composition Playlists do mesmo jeito que apresenta que eles não construíram de forma incremental. Tais cenários podem ocorrer quando vários ativos Composition Playlist são recebidos por um determinado título, onde cada ativo cumpre determinadas faixas suplementares da apresentação de vídeo original. Como exemplo, digamos que um autor parceiro de conteúdo uma Composition Palylist para um determinado título com uma faixa de vídeo original e uma faixa de áudio inglês, enquanto que o parceiro publica uma Composition Playlist com a mesma faixa de vídeo original e uma faixa de áudio espanhol.

A versão atual do algoritmo para verificação da Composition Associativity compreende as seguintes verificações:

  1. Verificar se as unidades de edição constituintes do vídeo track original em todas as Composition Playlists estão temporariamente alinhadas e representam o mesmo material de vídeo. Se não, as listas de composição não são associativas;
  2. Verificar se as unidades de edição constituintes de uma determinada faixa de idioma de áudio estiverem presentes, em várias listas composição a serem associadas temporariamente, estão alinhadas e representam o mesmo material de áudio. Se não, as listas de composição não são associativas;
  3. Repetir o passo 2 para o cruzamento conjunto de todas as faixas de idioma de áudio em cada um dos arquivos da Composition Playlist.

Note que, da maneira como está escrito, o Photon ainda não tem suporte para o marcador de faixa virtual do IMF, assim como faixas de dados e texto cronometrado, portanto, eles ainda não incluíram esses tipos de tracks em suas verificações de associatividade. Abaixo segue um diagrama de fluxo do algoritmo de Composition Associativity:

netflix-2

Como pegar o Photon, usá-lo e colaborar com ele

O Photon está hospedado na página do Netflix no GitHub e está licenciado sob os termos da versão Apache License 2.0, o que torna muito fácil o seu uso. Pode ser construído utilizando um ambiente Gradle e é acompanhado por um sistema de compilação e integração contínua completamente automatizado chamado Travis. Todas as versões do Photon são publicadas no Maven Central como um arquivo java, e os usuários podem incluí-lo em seus projetos como uma dependência usando a sintaxe relevante para o seu ambiente de compilação. A base de código é estruturada na forma de pacotes que são intuitivamente nomeados para representar a funcionalidade que eles executam. É recomendável revisar as classes no pacote “app” como um exercício para começar, já que ele é quase toda a implementação do núcleo da biblioteca e, portanto, oferece informações valiosas sobre a estrutura de software que pode ser muito útil para qualquer pessoa que gostaria de se envolver no projeto ou simplesmente quer entender a implementação. Um conjunto completo de Javadocs e arquivos readme necessários também são mantidos no  GitHub e podem ser consultados para referência à API e informações gerais sobre o projeto.

Além da iniciativa de dirigir a adoção do IMF na indústria, a intenção da Netflix ao abrir o código do Photon tem sido a de incentivar e buscar contribuições da comunidade open source para ajudar a melhorar o que eles têm construído. O Photon ainda está na sua fase inicial de desenvolvimento. Algumas das áreas em que o pessoal da Netflix está buscando feedback, bem como contribuições, mas não se limitando a isso, são as seguintes:

  1. Design de software e melhorias de arquitetura;
  2. APIs bem desenhadas e documentos Java de acompanhamento;
  3. Qualidade de código e melhoria na robustez;
  4. Testes mais extensos e cobertura de código.

O processo de contribuição com o projeto Photon foi bem simplificado, permitindo aos desenvolvedores enviarem solicitações de pull para revisão e/ou bifurcação no repositório e melhorando-o conforme necessário. Cada commit é fechado por um conjunto de testes, FindBugs e verificações PMD, antes de ser incorporado á linha principal.

A Netflix está convicta de que avanços significativos com o Photon só serão alcançados por um alto nível de participação e colaboração dentro da comunidade open source. Por isso, é necessário que todas as submissões Photon adiram aos termos e condições da licença Apache 2.0.

Roadmap do NetfLix IMF

À medida que a Netflix continua a contribuir com o Photon para preencher a lacuna entre o seu atual conjunto de recursos e o padrão do IMF, as iniciativas estratégicas e os planos em torno do IMF incluem o seguinte:

  1. Eles estão participando de várias atividades de normalização relacionadas com o IMF. Isso inclui o apoio deles para a normalização do TTML2 no W3C, bem como vídeo HDR e áudio imersivo no grupo IMF SMPTE. Eles estão muito entusiasmados com a ACES para IMF. A Netflix tem patrocinado vários encontros do IMF e do interop plugfests;
  2. Também estão investindo em atividades de software open source IMF (OSS) em torno do IMF e esperando promover uma comunidade de desenvolvedores colaborativa e vibrante. Exemplos de outros projetos OSS patrocinados pela Netflix incluem “imf-validation-tool” e “regxmllib“;
  3. Do mesmo modo, eles estão engajados no desenvolvimento de ferramentas que tornem mais fácil de usar, bem como inserir, IMF em fluxos de trabalho existentes. Um exemplo de um projeto em curso é a capacidade de transcodificar o IMF para DPP (Digital Production Partnership – uma iniciativa formada conjuntamente pelos organismos de radiodifusão de serviço público no Reino Unido para ajudar os produtores e as emissoras a maximizar os benefícios potenciais de produção de televisão digital) ou do IMF para os ecossistemas do iTunes. Outro exemplo é o projeto “IMF CPL Editor”, que estará disponível no GitHub e apoiará a edição leve do CPL, tais como metadados e cronograma mudanças;
  4. O IMF é uma distribuição de ativos e padrão de arquivo. Uma automação eficaz de toda a indústria na cadeia de abastecimento digital poderia ser alcançada através da integração com sistemas de identificação de conteúdo, como protocolos EIDR e MovieLabs Midia Manifest e Avails. A Netflix está ativamente envolvida nessas iniciativas;
  5. A Netflix está comprometida com a construção e a manutenção de web-services escaláveis para validar e talvez até mesmo criar pacotes do IMF. Eles acreditam que esse seria um passo significativo no sentido de responder às necessidades da comunidade IMF em geral e contribuir ainda mais para a adoção do IMF na indústria.

O futuro do Photon

A Netflix acredita que o Photon irá evoluir ao longo do tempo à medida que continua a construir o seu fluxo de trabalho de processamento de conteúdo IMF. Como foi indicado por eles no primeiro artigo da série “IMF: A Prescription for Versionitis“, a Netflix percebe que o IMF vai fornecer uma solução escalável para alguns dos desafios mais comuns no ecossistema da Cadeia de Abastecimento Digital. No entanto, alguns dos aspectos que trazem esses ganhos de eficiência, como um modelo para conteúdo interativo, a integração com sistemas de identificação de conteúdo, serviços web escaláveis para validação IMF etc. ainda estão em desenvolvimento. Boas ferramentas de autoria irão impulsionar a adoção, e eles acreditam que elas serão críticss para o sucesso do IMF. Ao participar de várias atividades de normalização em torno do IMF, a Netflix tem a oportunidade de rever constantemente possíveis áreas de desenvolvimento futuro e não só melhorar a utilização dos Photon, mas também ajudar na aprovação do IMF através de ferramentas de código aberto fáceis de usar.

Conclusões

O IMF é um padrão em evolução – enquanto ele aborda muitos problemas na Cadeia de Fornecimento do Ecossistema Digital, os desafios são muitos e há oportunidade para a continuação dos trabalhos. O sucesso do IMF dependerá da participação de parceiros de conteúdo, parceiros de atendimento, bem como de varejistas de conteúdo. Neste momento, a Netflix está 100% comprometida com o sucesso do IMF. E a comunidade do iMasters, deseja participar?

***

Fonte: http://techblog.netflix.com/2016/06/netflix-and-imf-community.html