Como as plataformas de streaming continuam a dominar nossas telas e a revolucionar a forma como consumimos conteúdo, a importância de criar um serviço de streaming robusto e dimensionável nunca foi tão essencial. 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 nos aprofundar na transcodificação de vídeo sob demanda.
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 usa recursos de streaming 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, usaremos um arquivo mp4 (pode ser um vídeo de exemplo que você já tenha como mp4), faremos upload dele em um bucket de entrada e o enviaremos ao nosso parceiro de transcodificação, Capella, para fazer a transcodificação do vídeo.
A Capella é uma parceira da Akamai que oferece soluções prontas para implantar que você pode executar no Akamai Compute. Fizemos essa parceria com a Capella porque eles podem executar codificadores em nossa plataforma, armazenar ativos de 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 dimensionar 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ê precisará se inscrever em uma conta Linode. A inscrição é gratuita, e você ainda ganha um crédito de US$ 100!
- Um token de API da Linode
- Instalar o kubectl
- Instalar o leme
- Instale as ferramentas externas do Kubernetes listadas aqui.
- Licença A Capella (envie um e-mail para sales@capellasystems.net para obter uma licença gratuita)
Etapa 1: criar um cluster do 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.
Em seguida, vamos inserir algumas configurações para o cluster. Vamos chamá-lo de "transcoding-demo". Você deve escolher a região mais próxima de você aqui. 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 seção Add Node Pools, vamos adicionar 3 nós do plano Dedicated 8 GB. Esses três nós são os nós de gerenciamento, em que um é automaticamente eleito como líder e os outros dois são para redundância do gerente.
Depois de adicioná-los, você verá um botão na parte superior da tela que diz Create Cluster (Criar cluster). Clique nele para criar o cluster do Kubernetes. Observação: isso pode levar alguns minutos.
Agora, a configuração de seu ambiente Kubernetes está concluída. Observe no painel do Cloud Manager os três nós que você criou, com o status Running.
Em seguida, vamos fazer o download do arquivo Kubeconfig clicando no link abaixo no painel. Ele será baixado em seu computador local. Certifique-se de mover o arquivo para o diretório do Kubernetes (o mesmo local em que o kubectl está configurado).
Em seguida, clique no link Kubernetes Dashboard (Painel do Kubernetes) para abrir o painel do Kubernetes.
Você verá esta mensagem e deverá clicar na opção para fazer login com o arquivo kubeconfig que acabou de criar.
No painel esquerdo, se você clicar em Cluster, verá os nós que acabou de criar.
Etapa 2: Criar e editar o arquivo 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 cluster do Cambria é uma rede de transcodificação dimensionável de várias estações de trabalho do Cambria FTC para processar um grande volume de arquivos de vídeo. O Cambria Cluster Manager roteia as 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
helm show values capella-cluster.tgz > capellaCambriaConfig.yaml
No arquivo de configuração, precisamos atualizar dois campos: a chave de licença do Capella e o token da API do Linode.
Adicione a chave de licença que você recebeu (da equipe da Capella após enviar um e-mail para sales@capellasystems.net na seção de pré-requisitos) no campo ftcLicenseKey.
Em seguida, adicione seu token de API do Linode (use o link na seção de pré-requisitos para gerar um) no campo linodeAPIToken.
Etapa 3: Instalar o cluster do Cambria
Agora, precisamos instalar o cluster Cambria. Esse cluster é usado para processar um grande volume de arquivos de vídeo.
helm upgrade -install capella-cluster capella-cluster.tgz -values capellaCambriaConfig.yaml
Você verá que o status foi alterado para implantado.
Neste ponto, há alguns componentes sendo implantados em seu ambiente Kubernetes. É melhor aguardar alguns minutos para que tudo seja implantado antes de continuar.
Etapa 4: Abra a interface de usuário da Web do Cambria Cluster
No painel esquerdo do painel do Kubernetes, clique em Services (Serviços). Em seguida, copie o endereço IP do nó intermediário (porta 8161). Essa porta é específica para a UI da Web.
Em uma nova guia, digite "https://" e cole o endereço IP. (Talvez você precise clicar em Advanced > Enter Site para inserir o site). Agora você verá a UI da Web do Cambria Cluster. 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).
Etapa 5: criar baldes de entrada e saída.
Lembre-se de que estamos convertendo um vídeo mp4 para o formato HLS. Vamos criar um bucket com duas pastas: uma para a entrada do nosso arquivo mp4, chamada de fonte, e outra para a saída do nosso arquivo HLS, chamada de saída.
Vamos acessar o Akamai Cloud Manager e clicar em Object Storage no painel esquerdo. Em seguida, clique em Create Bucket. Vamos chamar isso de capella. Certifique-se de escolher a mesma região que você escolheu para seu cluster do Kubernetes acima. Em seguida, clique em Create Bucket.
Depois de criarmos esse bucket, precisamos copiar sua localização e colá-la posteriormente em nosso arquivo XML. Clique no botão Details (Detalhes) do bucket e, em seguida, clique no botão de cópia, conforme mostrado abaixo, ao lado de sua localização. Salve isso em um bloco de notas, pois precisaremos dele mais tarde.
Em seguida, precisamos criar chaves de acesso para o bucket. Clique em Access Keys (Chaves de acesso) e, em seguida, em Create Access Key (Criar chave de acesso).
Vamos chamar isso de acesso à capela.
Você verá uma pequena janela pop-up que exibirá sua chave de acesso e sua chave secreta. Copie e cole-as em um bloco de notas, pois precisaremos delas mais tarde. Depois de salvá-las, clique em I Have Saved My Secret Key (Salvei minha chave secreta).
Agora, em nosso bucket de armazenamento de objetos, vamos criar duas pastas: uma para entrada e outra para saída. Clique em seu compartimento e, em seguida, clique em Create Folder (Criar pasta). Vamos chamar a pasta de entrada de "source" (fonte).
Vamos fazer a mesma coisa com a pasta de saída. Vamos chamá-la de "output".
Etapa 6: Edite os campos no documento HLS de amostra.
A Capella nos enviou este arquivo de amostra para realizar trabalhos de transcodificação para conversões de mp4 para HLS. Há mais arquivos de amostra para escolher, mas não se esqueça de perguntar qual deles você deseja ao enviar um e-mail (verifique os pré-requisitos acima). Certifique-se de salvá-lo em sua pasta do Kubernetes.
Copie e cole sua chave de acesso e chave secreta na seção de descrição do cargo nas linhas 8 e 9 do arquivo XML.
Adicione esses mesmos valores às linhas 234 e 235 na seção Upload Settings (Configurações de upload).
Na linha 231, vamos colar a região do nosso balde. Você deve tê-la copiado em um bloco de notas na etapa acima.
Em seguida, na seção Upload Setting, precisamos atualizar os campos bucket e location. Na linha 227, atualize o campo bucket para "capella" e, na linha 228, atualize o campo location para "output". (Lembre-se de que criamos um bucket chamado capella e a pasta de saída é chamada output)
Etapa 6: Faça upload de um arquivo mp4 para o bucket de entrada
Em seguida, vamos carregar um arquivo mp4 no bucket de entrada. Pode ser um vídeo do seu cachorro, um vídeo de culinária que você gravou, qualquer arquivo mp4. Estou usando um arquivo mp4 chamado flying5. Vamos acessar o Akamai Cloud Manager e, no bucket de origem, vamos carregar o arquivo mp4.
Agora, voltemos ao arquivo XML. Vamos adicionar o local do arquivo de origem à linha 347, conforme mostrado abaixo.
Etapa 7: Executar o trabalho 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 em 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, no 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 arquivo xml do trabalho de transcodificação. Salvei o meu como mp4-hls-transcoding-job.xml.
Vamos executar esse comando em 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á sendo executado, 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 ao Cambria Cluster Manager, eles serão exibidos na WebUI do Cambria na lista de trabalhos.
Esses trabalhos serão distribuídos para as máquinas de codificação FTC para serem executados. O Cambria Cluster Manager iniciará automaticamente uma nova máquina FTC se não houver trabalhos na fila anteriormente. Máquinas FTC adicionais serão iniciadas para lidar com a carga se o número de trabalhos na fila 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 WebUI Job List pode ser usada para acompanhar o progresso.
Quando o trabalho for concluído, você verá o status alterado para concluído na WebUI.
Ele criará 3 arquivos de vídeo diferentes com tipos de vídeo diferentes. Ao voltar para o console da Akamai, na pasta de saída, você verá um arquivo de saída com algumas pastas. Uma pasta contém o áudio, uma contém o vídeo e outra contém os metadados.
Você pode reproduzi-los por meio de um player habilitado para HLS (pode ser algum tipo de plug-in em seu navegador ou de terceiros).
A transcodificação de vídeo é um aspecto crucial do fornecimento moderno de multimídia e, seguindo as etapas deste tutorial, você poderá enfrentar esse desafio com facilidade!
Resumindo
Este exemplo de transcodificação de vídeo ilustra a flexibilidade e o poder da entrega moderna de multimídia usando o Linode Kubernetes Engine (LKE). As máquinas de codificação giram automaticamente para dimensionar o número de trabalhos e, em seguida, reduzem novamente quando o trabalho é concluído, demonstrando uma economia significativa obtida 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ídos 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 em seu servidor de origem, transferindo a entrega de conteúdo para os servidores de borda distribuídos da Akamai. Isso não apenas melhora o desempenho e a escalabilidade da sua entrega de vídeo, mas também aprimora a experiência geral do usuário, 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 espectador, garantindo uma reprodução suave em uma variedade de dispositivos e velocidades de conexão. Isso é especialmente crucial para a entrega de conteúdo de vídeo de alta qualidade para dispositivos móveis e áreas com largura de banda limitada.
Próximos Passos
Neste tutorial, usamos a Akamai para transcodificar um vídeo do formato mp4 para o formato HLS. Essa conversão garante a compatibilidade com diferentes dispositivos para streaming. Você pode encontrar uma lista completa dos 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, inscreva-se em nosso boletim informativo, conecte-se conosco no Twitter ou no LinkedIn ou assine nosso canal no YouTube.
Além desses guias técnicos, se você ou sua organização estiver pensando em otimizar suas soluções de transcodificação de vídeo e Kubernetes, poderá experimentar as soluções da Linode inscrevendo-se para obter US$ 100 em créditos gratuitos.
Comentários