Sobre o que eles escrevem no suporte técnico da serpentina de vídeo?

Olá pessoal. Dúzias de chamadas diferentes são abertas diariamente em nosso suporte, desde perguntas simples "ajudam a configurar um cluster" a muito complexa "o fluxo não funciona, o fluxo às vezes gagueja", mas há perguntas das quais os olhos já estão se contraindo e todos os funcionários da empresa podem responder em detalhes.

E como as perguntas não param, o que significa que você pode responder aqui.

Por que o vídeo está atrasado?


Temos dois artigos no blog ( um , dois ) sobre este tópico, leia-os se você estiver trabalhando com vídeo e aqui darei uma resposta curta e abrangente:

O streaming moderno da Internet é um protocolo HLS . Às vezes DASH, mas isso não é importante, porque ambos são segmentados.

Como isso funciona? O streaming de vídeo é "cortado" em arquivos pequenos (geralmente de 2 a 8 segundos, dependendo da dinâmica do conteúdo), 3-10 desses segmentos são acumulados e descritos por uma lista de reprodução especial, que é atualizada automaticamente quando o segmento antigo é excluído e um novo é adicionado. Tão simples. Mais segmentos - maior atraso, maior duração de cada segmento - maior atraso. 10-20 segundos é normal.

Por que isso é necessário? Por que armazenar tantos vídeos na memória do servidor de vídeo? A segmentação permite que o player não reaja à instabilidade da conexão com a Internet, não interrompa o vídeo ao mudar de uma rede Wi-Fi para uma conexão móvel. Se o vídeo não tivesse sido preparado com antecedência e compactado em arquivos separados, com o menor número de falhas ou falta de largura de banda, teríamos artefatos de vídeo na tela e a segmentação forneceria ao jogador cerca de 4-20 segundos para restaurar a conexão do jogador e carregar novos dados.

O que fazer se você precisar de um vídeo sem demora? Escolha um protocolo diferente se pretender organizar um bate-papo na Web, controlar o helicóptero via Internet, assistir câmeras de vídeo IP. Aqui estão alguns exemplos: WebRTC, MSE-LD, RTMP.

Como proteger o vídeo? Cole apenas no seu site


A tarefa é muito simples: o vídeo no site deve ser protegido contra inserção em outros sites, ninguém deseja pagar pelo tráfego de outra pessoa, o tráfego de vídeo é caro. E o vídeo pode ser privado e não deve ir além da sua conta pessoal.

Eu sempre tenho uma resposta para todas essas solicitações - você precisa configurar o Securelink no seu site. A proteção de conteúdo não é possível unilateralmente - o site em si deve gerar links, você não pode apenas pegar e inserir um link estático no site.

O Securelink é uma tecnologia de proteção de link antiga e altamente eficaz. Muitos habruchitel conhecem um módulo especial para o Nginx - ngx_http_secure_link_module. Não usamos o Nginx, mas existe uma implementação semelhante e não menos eficiente, a única diferença está na ordem dos parâmetros.

Como isso funciona? O site gera um link único e único com base nos dados do usuário. E o que o servidor da Web sabe sobre o cliente? É isso mesmo, este é o endereço IP, User-Agent, Cookie, o URL solicitado. Se o cliente estiver autorizado, nas variáveis ​​da sessão você poderá obter outras informações, por exemplo, um ID de cliente exclusivo no banco de dados do serviço ou, por exemplo, o período de validade da assinatura.

Coletamos os parâmetros em uma linha e hash com seu algoritmo favorito, por exemplo, SHA1. Acontece um conjunto de caracteres inúteis. Por exemplo, o hash da cadeia “127.0.0.1Habr” seria: 70ebe94671dd21bd65f4a00dfd988adc83fe6bda.

Essa linha será transmitida ao streamer de vídeo e sua tarefa será verificar a validade do link, se ele foi gerado pelo seu site, não está “podre” e não é passado para terceiros. Como não há comentários do site, o streamer de vídeo deve gerar um hash usando os mesmos dados que o site usou. O streamer de vídeo também conhece o endereço IP do cliente, o conteúdo solicitado, mas não pode de forma alguma saber o ID do usuário ou a vida útil do link. Você precisará transferir esses dados diretamente para o link e usar a chave secreta para que ninguém possa gerar links para si.

Pegamos a linha "127.0.0.1Habr1540327100SECRET" e obtemos o SHA1 99fe961672c52aa3033b98b545ec2cdec93bf515 e agora formamos um link no formato:

example.com/Habr/index.m3u8?token=99fe961672c52aa3033b98b545ec2cdec93bf515-1540327100

example.com é o seu servidor de vídeo, Habr é o vídeo solicitado, index.m3u8 é o nome padrão da lista de reprodução HLS, o token de valor é a sequência do servidor da web que geramos.

O streamer de vídeo extrai facilmente desses dados tudo o que é necessário para obter o mesmo hash: o endereço IP é lido da variável do servidor da web, o conteúdo solicitado da URL, a vida útil é do parâmetro token, a única coisa que falta é a chave secreta. registre-se no arquivo de configuração e mantenha em segredo.

Você não poderá enviar esse link para um amigo ou abri-lo em outro navegador - há um endereço IP na fórmula de hash e não poderá substituir a vida útil - então o hash não corresponderá.

Armadilhas


Eu realmente queria descrever em dois parágrafos, mas, em suma, não deu certo. Esse é o primeiro problema - nem todo mundo está pronto para investigar esses detalhes, porque é muito mais fácil inserir um link estático. Temos exemplos prontos em nosso site , portanto não deve haver um problema.

Geralmente, o site e o servidor da Web determinam incorretamente o endereço IP do cliente; isso é normal se redes CDN forem usadas, por exemplo, CloudFlare. Nesse caso, você precisa levar o endereço IP do cabeçalho correto, pode precisar da ajuda do provedor de CDN. Por exemplo, o CloudFlare possui CF-Connecting-IP.

Hora errada. O tempo incorreto em um dos servidores, combinado com as tentativas de minimizar a vida útil do link, geralmente leva a links quebrados. Também acontece que o usuário deixa a guia aberta por várias horas e não consegue reproduzir o vídeo devido ao curto tempo de vida.

Duração do link de 3 a 24 horas - isso é normal, eles estão protegidos de qualquer maneira e existem maneiras de limitar o número de visualizações simultâneas.

Em vez de um total


Nos diga nos comentários como contornar esse mecanismo de proteção de links?

Source: https://habr.com/ru/post/pt427499/


All Articles