Implemente cache HLS para streaming ao vivo
Dê aos segmentos e à playlist de um stream HLS cache settings e regras próprias, pelo Azion Console ou pela Azion API.
Um stream HLS é entregue como dois tipos de arquivo, e eles não pedem o mesmo cache. Você dá a cada um um cache setting próprio e o aplica com uma regra do Rules Engine que casa a extensão do arquivo, pelo Azion Console ou pela Azion API v4.
Um arquivo de segmento é escrito uma vez e nunca muda, então ele recebe o TTL de cache mais longo. A playlist é reescrita conforme o stream avança, então ela recebe um TTL de poucos segundos. O TTL de playlist que este guia usa está abaixo de 60 segundos, o que exige o Application Accelerator na aplicação.
Pré-requisitos
- Uma aplicação que entrega a playlist e os segmentos do seu stream. Para criar uma, consulte Primeiros passos com Applications.
- Um domínio no workload que entrega a aplicação. Para mais informações, consulte Workloads.
- O Application Accelerator ativo na aplicação. Para os passos, consulte Configure políticas de cache para uma aplicação, cuja primeira tarefa ativa o módulo.
- Acesso ao Azion Console, para os procedimentos pelo Console. Consulte Como acessar o Azion Console.
- Um personal token, para os procedimentos pela API.
Arquivos de vídeo armazenados no Object Storage podem servir como origem do stream: envie os arquivos de vídeo e aponte o encoder que produz a saída HLS para o bucket.
Crie o cache setting dos segmentos
Os segmentos recebem um TTL de cache de 60 segundos e um TTL de browser de 0 segundos. Para criar o setting:
Acesse Azion Console > Applications e selecione a aplicação que entrega o stream.
Em Name, insira hls-segments.
Em Browser Cache, selecione Override cache settings e defina o TTL como 0.
Em Cache, mantenha Override cache behavior selecionado e, em Max Age, insira 60.
O toggle está na mesma seção. Ele adiciona uma segunda camada de cache entre o cache da Azion e a sua origem.
O setting aparece na lista de Cache Settings.
Crie o cache setting da playlist
A playlist recebe um TTL de cache de 5 segundos, para que um cliente que a lê receba os segmentos que o encoder já escreveu. Para criar o setting:
Em Name, insira hls-playlist.
Em Browser Cache, selecione Override cache settings e defina o TTL como 0.
Em Cache, mantenha Override cache behavior selecionado e, em Max Age, insira 5.
Os dois settings agora aparecem na lista, e nenhum dos dois se aplica a uma requisição ainda.
Aplique os settings com regras
Cada setting precisa de uma regra que case a sua extensão de arquivo. Para criar a regra dos segmentos:
Insira cache-hls-segments.
Em Criteria, selecione ${uri}, o operador matches e insira .*.ts como argumento.
Em Behaviors, selecione Set Cache Policy e depois selecione hls-segments.
Repita o procedimento para a playlist: nomeie a regra cache-hls-playlist, insira .*.m3u8 como argumento dos criteria e selecione hls-playlist como cache policy.
As duas regras agora aparecem na lista, e cada uma aplica o seu setting aos arquivos que o seu padrão casa.
Configure pela API
Os mesmos dois settings e as mesmas duas regras são criados com quatro requisições. Para criar os cache settings:
A API responde com HTTP 201 e o novo setting em data:
Envie a mesma requisição com "name": "hls-playlist" e "max_age": 5 em modules.cache. A resposta carrega o seu próprio id.
Para aplicar cada setting com uma regra:
Substitua [CACHE SETTING ID] pelo id do setting hls-segments:
A API responde com HTTP 202 e a regra com state igual a pending:
Envie a mesma requisição com "name": "cache-hls-playlist", o argumento .*.m3u8 e o id do setting hls-playlist.
O stream agora é colocado em cache por tipo de arquivo: cada segmento por 60 segundos, a playlist por 5 segundos.