Avançar para o conteúdo principal
BlogueVisão geral da nuvemTranscodificação de vídeo escalável no Linode: MP4 para HLS com Kubernetes e Capella

Transcodificação de vídeo escalável no Linode: MP4 para HLS com Kubernetes e Capella

DesbloquearSeamlessStreamingHero

À medida que as plataformas de streaming continuam a tomar conta dos nossos ecrãs e a revolucionar a forma como consumimos conteúdos, a importância de criar um serviço de streaming robusto e escalável nunca foi tão crítica. Como as organizações podem garantir a compatibilidade entre dispositivos e plataformas e, ao mesmo tempo, reduzir custos e maximizar a eficiência? Neste tutorial, vamos mergulhar na transcodificação de vídeo a pedido.

Configuraremos a transcodificação de vídeo usando o Linode Kubernetes Engine para ajudar a dimensionar sua infraestrutura de transcodificação com base na demanda. Vamos percorrer o processo de conversão de um arquivo mp4 para HLS (HTTP Live Streaming), que é um formato comumente usado por serviços de streaming. O HLS utiliza capacidades de transmissão com taxa de bits adaptável para garantir uma reprodução suave e uma experiência de visualização consistente, independentemente do dispositivo ou da velocidade da rede. Para começar, vamos usar um arquivo mp4 (pode ser um vídeo de exemplo que você já tem como mp4), carregá-lo em um bucket de entrada e, em seguida, enviá-lo para nosso parceiro de transcodificação, Capella, para lidar com a transcodificação de vídeo. 

A Capella é um parceiro da Akamai que oferece soluções prontas para implantação que podem ser executadas no Akamai Compute. Fizemos essa parceria com a Capella porque eles podem executar codificadores em nossa plataforma, armazenar ativos VOD em Object Storagee entregar pela CDN da Akamai. Essa parceria também nos permite implantar com o Kubernetes e o Helm, o que facilita muito o dimensionamento. Por exemplo, no tutorial abaixo, as máquinas de codificação da Capella serão ativadas automaticamente para escalonar o número de trabalhos e, em seguida, serão reduzidas novamente quando o trabalho for concluído, economizando milhares de dólares em tempo de computação ocioso.

Pré-requisitos:

Para concluir este tutorial, você precisa se inscrever em uma conta Linode. A inscrição é gratuita, além de receber um crédito de $100!

  1. Um token de API do Linode
  2. Instalar o kubectl
  3. Instalar o leme
  4. Instale as ferramentas externas do Kubernetes listadas aqui.
  5. Licença A Capella (envie um e-mail para sales@capellasystems.net para obter uma licença gratuita) 

Passo 1: Criar um cluster Kubernetes

A primeira etapa é criar um cluster do Kubernetes que fará a codificação. No painel do Akamai Cloud, clique em Kubernetes e, em seguida, clique em Create Cluster.

De seguida, vamos introduzir algumas configurações para o cluster. Vamos chamar-lhe "transcoding-demo". Deve escolher aqui a região mais próxima de si. Para mim, é Los Angeles. Também é recomendável habilitar o plano de controle de alta disponibilidade para ativar a alta disponibilidade no cluster do Kubernetes.

Na secção Adicionar pools de nós, vamos adicionar 3 nós do plano Dedicado de 8 GB. Estes três nós são os nós de gestão, em que um é automaticamente eleito como líder e os outros dois são para redundância do gestor.

Depois de os adicionar, verá um botão na parte superior do ecrã que diz Criar Cluster. Clique nele para criar o cluster do Kubernetes. Observação: isso pode levar alguns minutos.

Agora, a configuração do seu ambiente Kubernetes está concluída. Observe no painel do Cloud Manager os 3 nós que você criou, com o status Running. 

Em seguida, vamos baixar o arquivo Kubeconfig clicando no link abaixo do painel. Ele será baixado para sua máquina local. Certifique-se de mover o arquivo para o diretório do Kubernetes (o mesmo local onde você tem o kubectl configurado).  

Em seguida, clique na ligação Kubernetes Dashboard para abrir o painel de controlo do Kubernetes.

Verá esta mensagem e deverá clicar na opção para iniciar sessão com o ficheiro kubeconfig que acabou de criar.

No painel esquerdo, se clicar em Cluster, verá os nós que acabou de criar.

Passo 2: Criar e editar o ficheiro de configuração do Helm

Agora, vamos criar e editar o arquivo de configuração do Helm que será usado para implantar o cluster do Cambria no ambiente do Kubernetes. Um Cambria Cluster é uma rede de transcodificação escalável de várias estações de trabalho Cambria FTC para processar um grande volume de arquivos de vídeo. O Cambria Cluster Manager encaminha ações pela rede.

Primeiro, faremos o download do arquivo de arquivos de configuração do Capella Cluster com os dois comandos a seguir:

curl -L -s -o capella-cluster.tgz

https://www.dropbox.com/scl/fi/160bla78xylc18wbr6xk8/capella-cluster-0.3.8.tgz?rlkey=lrmxiszcr5da02duefm2vr7cl

helm show values capella-cluster.tgz > capellaCambriaConfig.yaml 

No arquivo de configuração, precisamos atualizar 2 campos: a chave de licença Capella e o token da API Linode.

Adicione a chave de licença que recebeu (da equipa Capella após enviar um e-mail para sales@capellasystems.net na secção de pré-requisitos) no campo ftcLicenseKey. 

Em seguida, adicione seu token da API do Linode (use o link na seção de pré-requisitos para gerar um) no campo linodeAPIToken.

Etapa 3: Instalar o cluster Cambria

Agora, precisamos de instalar o cluster Cambria. Este cluster é utilizado para processar um grande volume de ficheiros de vídeo.

helm upgrade -install capella-cluster capella-cluster.tgz -values capellaCambriaConfig.yaml 

Verá que o estado foi alterado para implementado.

Neste ponto, há alguns componentes sendo implantados no seu ambiente Kubernetes. É melhor esperar alguns minutos para que tudo seja implantado antes de continuar.

Passo 4: Abrir a interface de utilizador Web do Cambria Cluster

No painel esquerdo do painel de controlo do Kubernetes, clique em Serviços. Em seguida, copie o endereço IP do nó intermediário (porta 8161). Esta porta é específica para a IU da Web.

Num novo separador, introduza "https://" e, em seguida, cole o endereço IP. (Pode ser necessário clicar em Avançado > Inserir site para inserir o site). Agora você verá a UI da Web do Cluster do Cambria. Faça login com as credenciais da WebUI do arquivo capellaCambriaConfig.yaml. (Consulte a página 8 aqui para obter mais detalhes sobre como encontrar essas credenciais).

Passo 5: Criar baldes de entrada e saída.

Lembre-se de que estamos a converter um vídeo mp4 para o formato HLS. Vamos criar um bucket com duas pastas: uma para a entrada do nosso ficheiro mp4, chamada fonte, e outra para a saída do nosso ficheiro HLS, chamada saída.

Vamos acessar o Akamai Cloud Manager e clicar em Object Storage no painel esquerdo. Em seguida, clique em Criar bucket. Vamos chamar isso de capella. Certifique-se de escolher a mesma região que você escolheu para o cluster do Kubernetes acima. Em seguida, clique em Criar bucket.

Depois de criarmos esse balde, temos de copiar a sua localização e colá-la mais tarde no nosso ficheiro XML. Clique no botão Detalhes do balde e, em seguida, clique no botão de cópia, como mostrado abaixo, junto à sua localização. Guarde este ficheiro num bloco de notas, porque iremos precisar dele mais tarde.

Em seguida, precisamos de criar chaves de acesso para o balde. Clique em Chaves de acesso e, em seguida, em Criar chave de acesso.

Chamemos-lhe acesso à capela.

Aparecerá uma pequena janela pop-up que apresentará a sua chave de acesso e a sua chave secreta. Copie e cole-as num bloco de notas, porque vamos precisar delas mais tarde. Depois de as ter guardado, clique em Guardei a minha chave secreta.

Agora, no nosso bucket de armazenamento de objetos, vamos criar 2 pastas: uma para entrada e outra para saída. Clique no seu compartimento e, em seguida, clique em Criar pasta. Vamos chamar a pasta de entrada de "fonte".

Vamos fazer a mesma coisa para a pasta de saída. Vamos chamar-lhe "output".

Etapa 6: Editar campos no documento HLS de amostra.

A Capella enviou-nos este ficheiro de amostra para fazer trabalhos de transcodificação para conversões de mp4 para HLS. Há mais arquivos de amostra para escolher, apenas certifique-se de perguntar a eles qual deles você deseja quando enviar um e-mail (verifique os pré-requisitos acima). Certifique-se de que o guarda na sua pasta Kubernetes.

Copie e cole a sua chave de acesso e a sua chave secreta na secção de descrição de funções nas linhas 8 e 9 do ficheiro XML.

Adicione esses mesmos valores às linhas 234 e 235 na secção Definições de carregamento.

Na linha 231, vamos colar a região do nosso balde. Deve tê-la copiado num bloco de notas a partir do passo acima.

Em seguida, na secção Upload Setting (Definições de carregamento), temos de atualizar os campos bucket e location (localização). Na linha 227, actualize o campo bucket para "capella" e, na linha 228, actualize o campo location para "output". (Lembre-se de que criamos um bucket chamado capella e a pasta de saída é chamada output)

Passo 6: Carregar um ficheiro mp4 para o contentor de entrada

Em seguida, vamos carregar um ficheiro mp4 para o balde de entrada. Pode ser um vídeo do seu cão, um vídeo de culinária que gravou, qualquer ficheiro mp4. Estou usando um arquivo mp4 chamado flying5. Vamos para o Akamai Cloud Manager e, no bucket de origem, vamos carregar o arquivo mp4.

Agora, voltemos ao ficheiro XML. Adicionemos a localização do ficheiro de origem à linha 347, como se mostra abaixo.

Passo 7: Executar a tarefa de transcodificação

Agora, estamos prontos para fazer a transcodificação! Vamos executar o trabalho de transcodificação usando uma chamada de API. Você precisará substituir algumas coisas no comando curl abaixo. Primeiro, navegue até o painel do Kubernetes e obtenha o endereço IP do primeiro nó (porta 8650). Essa porta é específica para a comunicação do trabalho do codificador. Copie-o para sua área de transferência e cole-o em algum lugar para salvar (tudo antes de .ip). Você precisará disso em um minuto. 

Em seguida, do seu arquivo capellaCambriaConfig.yaml, copie o cambriaClusterAPIToken e salve-o. No comando curl , substitua o valor usertoken pelo seu token de API.

Em seguida, adicione o nome do ficheiro xml da tarefa de transcodificação. Guardei o meu como mp4-hls-transcoding-job.xml.

Vamos executar este comando a partir do seu terminal.

curl -k -X POST "https://123.456.78.90:8650/CambriaFC/v1/Jobs/?usertoken=12345678-1234-5678-abcd-efghijklmn" -d @mp4-hls-transcoding-job.xml

Para confirmar que o trabalho está em execução, vamos consultar o painel do Kubernetes. Vamos navegar até o painel do Kubernetes e abrir a seguinte URL para a porta 8161, que é a porta da lista de tarefas. 

Sempre que os trabalhos forem enviados para o Cambria Cluster Manager, eles aparecerão na WebUI do Cambria na lista de trabalhos.

Esses Jobs serão distribuídos para as máquinas de codificação FTC para serem executados. O Cambria Cluster Manager lançará automaticamente uma nova máquina FTC se não houver Jobs na fila anteriormente. Máquinas FTC adicionais serão lançadas para lidar com a carga se o número de Jobs em fila de espera for alto.

Na página de resumo do Akamai Linode Kubernetes, você verá uma nova máquina sendo provisionada. Depois que a máquina for provisionada, você poderá vê-la em Nodes no painel do Kubernetes e também na WebUI do Cluster Manager. Uma vez disponível e automaticamente conectado ao Cluster, o trabalho será distribuído para a máquina FTC para ser executado. A lista de tarefas da WebUI pode ser usada para acompanhar o progresso.

Quando a tarefa estiver concluída, verá o estado alterado para concluído na WebUI.

Ele criará 3 arquivos de vídeo diferentes com tipos de vídeo diferentes. Quando voltar à consola da Akamai, na pasta de saída, verá um ficheiro de saída com algumas pastas. Uma pasta tem o áudio, outra tem o vídeo e outra tem metadados.

Pode reproduzi-los através de um leitor compatível com HLS (pode ser uma espécie de plug-in no seu browser ou um terceiro). 

A transcodificação de vídeo é um aspeto crucial da distribuição moderna de multimédia e, seguindo os passos deste tutorial, pode agora enfrentar este desafio facilmente! 

Resumindo

Este exemplo de transcodificação de vídeo ilustra a flexibilidade e o poder da entrega moderna de multimédia utilizando o Linode Kubernetes Engine (LKE). As máquinas de codificação giram automaticamente para escalar para o número de trabalhos e, em seguida, reduzem novamente quando o trabalho é concluído, demonstrando economias significativas obtidas quando você usa o LKE.

Após a transcodificação bem-sucedida do seu vídeo, você pode aproveitar a rede de servidores da Akamai estrategicamente distribuída em todo o mundo, a fim de garantir que seus vídeos formatados em HLS sejam entregues de forma rápida e contínua ao seu público, independentemente de sua localização geográfica. Isso ajudará a aliviar a carga no seu servidor de origem, descarregando a entrega de conteúdo para os servidores de borda distribuídos da Akamai. Isto não só melhora o desempenho e a escalabilidade da sua entrega de vídeo, como também melhora a experiência geral do utilizador, reduzindo a latência e o armazenamento em buffer. Além disso, a CDN da Akamai oferece recursos avançados, como o streaming com taxa de bits adaptável, que ajusta automaticamente a qualidade do vídeo com base nas condições de rede do espetador, garantindo uma reprodução suave em uma variedade de dispositivos e velocidades de conexão. Isto é especialmente crucial para a entrega de conteúdo de vídeo de alta qualidade a dispositivos móveis e áreas com largura de banda limitada.

Próximos Passos

Neste tutorial, utilizámos a Akamai para transcodificar um vídeo do formato mp4 para o formato HLS. Essa conversão garante a compatibilidade com diferentes dispositivos de streaming. Pode encontrar uma lista completa de possíveis formatos de entrada e saída para transcodificação de vídeo aqui

Se quiser saber mais sobre como implementar a transcodificação de vídeo, subscreva a nossa newsletter, ligue-se a nós no Twitter ou no LinkedIn ou subscreva o nosso canal do YouTube.

Além desses guias técnicos, se você ou sua organização estiver considerando otimizar suas soluções de transcodificação de vídeo e Kubernetes, você pode experimentar as soluções da Linode inscrevendo-se para obter $100 em créditos gratuitos

Comentários

Deixe uma resposta

O seu endereço de correio electrónico não será publicado. Os campos obrigatórios estão marcados com *