
Só há uma coisa pior do que não ter internet: internet não confiável. A frustração que sinto quando uma página carrega rapidamente, depois a seguinte fica muito lenta (se é que carrega) e depois uma mistura é incontrolável. Tipo… jogar o dispositivo do outro lado da sala é frustrante. Essa lentidão é mais aparente quando tento reproduzir mídia, mais especificamente vídeo, em que o visual é irregular, o som é cortado e o usuário fica furioso.
Na semana passada, escrevi sobre o Práticas recomendadas de vídeo HTML5 e os incríveis utilitários fornecidos pelo Cloudinary para colocar vídeos otimizados e configuráveis em seu site. Cloudinary permite personalizar o pôster do vídeo, os controles de vídeo e até mesmo aplicar filtros e transformações ao próprio vídeo. Analisando mais detalhadamente, o senhor pode até mesmo controlar os níveis de taxa de bits e codecs, o que permite uma melhor personalização do fornecimento de vídeo.
Como enviar um vídeo
O senhor pode carregar um vídeo no site do Cloudinary, mas vamos nos divertir um pouco e usar a API do Cloudinary Node.js para carregar um vídeo:
cloudinary.uploader.upload('sample-video.mp4', function(result) { // Callback console.log('result: ', result); }, { public_id: 'sample-video', resource_type: 'video' });
O Cloudinary fornece PHP, Python e uma série de outras bibliotecas de API. Depois que o vídeo é carregado, o senhor pode chamar o método a seguir para recuperar a string HTML ideal do vídeo:
cloudinary.video('sample-video'); /* <video poster="http://res.cloudinary.com/david-wash-blog/video/upload/sample-video.jpg"> <source src="http://res.cloudinary.com/david-wash-blog/video/upload/sample-video.webm" type="video/webm"> <source src="http://res.cloudinary.com/david-wash-blog/video/upload/sample-video.mp4" type="video/mp4"> <source src="http://res.cloudinary.com/david-wash-blog/video/upload/sample-video.ogv" type="video/ogg"> </video> */
Manipulação da qualidade e da taxa de bits do vídeo
Dependendo do dispositivo, do navegador, da carga de tráfego, da duração do vídeo ou de uma série de outras variáveis, talvez o senhor queira modificar a qualidade ou a taxa de bits de um vídeo em seu site. Embora a qualidade e a taxa de bits sejam duas manipulações distintas, lembre-se de que quanto maior a taxa de bits, maior a qualidade.
Primeiro, vamos definir uma qualidade desejada:
cloudinary.video('sample-video', { quality: 50 });
Definir a taxa de bits desejada é igualmente fácil:
cloudinary.video('sample-video', { bit_rate: '250k' });
A API é muito fácil de usar, sem surpresas!
Streaming com taxa de bits adaptável – HLS e MPEG
O streaming com taxa de bits adaptável é uma técnica de fornecimento de vídeo que ajusta a qualidade de um fluxo de vídeo em tempo real de acordo com a largura de banda detectada e a capacidade da CPU. Isso permite que os vídeos sejam iniciados mais rapidamente, com menos interrupções de buffer, e com a melhor qualidade possível para o dispositivo e a conexão de rede atuais, a fim de maximizar a experiência do usuário.
O Cloudinary pode gerar e fornecer automaticamente todos esses arquivos a partir de um único vídeo original, transcodificado para um ou ambos os protocolos a seguir:
- HTTP Live Streaming (HLS)
- Dynamic Adaptive Streaming over HTTP (MPEG-DASH)
A configuração do streaming é um processo de várias etapas (mas fácil) – vamos dar uma olhada em como fazer isso acontecer!
Etapa 1: Selecione um perfil de streaming
O Cloudinary fornece uma coleção de streaming profiles
onde cada perfil define um conjunto de representações de acordo com as práticas recomendadas sugeridas.
Por exemplo, o 4k
cria 8 representações diferentes na proporção de 16*9, de altíssima qualidade a somente áudio, enquanto o perfil sd
cria apenas 3 representações, todas na proporção 4:3. Outros perfis comumente usados incluem ohd
e o full_hd
perfis.
Para ver a lista completa de perfis de streaming predefinidos disponíveis e as configurações de cada representação, consulte Perfis de streaming predefinidos.
Segunda etapa: Carregue seu vídeo com uma transformação ansiosa, incluindo o perfil e o formato de streaming
Um único perfil de streaming é composto por muitos arquivos derivadosportanto, pode levar algum tempo para que o Cloudinary gere todos eles. Portanto, ao carregar o vídeo (ou mais tarde, explicitamente), o senhor deve incluir transformações ávidas e assíncronas com o perfil de streaming e o formato de vídeo necessários.
O senhor pode até mesmo preparar ansiosamente seus vídeos para transmissão em ambos os formatos e pode incluir outras transformações de vídeo também. No entanto, certifique-se de que o streaming_profile seja fornecido como um componente separado das transformações encadeadas.
Por exemplo, este comando de upload codifica o big_buck_bunny.mp4
para o formato HLS usando o comando full_hd
perfil de streaming:
cloudinary.uploader.upload("big_buck_bunny.mp4", function(result) {console.log(result); }, { resource_type: "video", eager: [ { streaming_profile: "full_hd", format: "m3u8" }], eager_async: true, eager_notification_url: "http://mysite/notify_endpoint", public_id: "bb_bunny"});
Terceira etapa: Entrega de vídeo
Após a conclusão da transformação ansiosa, entregue seu vídeo usando o .m3u8
(HLS) ou .mpd
(MPEG-DASH) e incluir o formato de arquivo (extensão) streaming_profile
(sp_<profilename>
) e outras transformações que correspondam exatamente àquelas que o senhor forneceu em sua transformação ansiosa (de acordo com o URL que foi retornado na resposta do upload).
cloudinary.video("bb_bunny.m3u8", {streaming_profile: "hd"})
A possibilidade de alterar a taxa de bits e a qualidade em tempo real é um recurso incrível. Claro, o senhor poderia usar seus próprios utilitários para gerar arquivos com várias taxas de bits e qualidades, mas isso parece uma perda de tempo e energia quando Cloudinary torna isso muito fácil. E quando o senhor também pode transmitir via Cloudinary? Que bônus. Quando o senhor acrescenta a capacidade de otimizar e transformar imagens, gerar imagens de forma de onda, remover fundos de fotos, imagens da tage automatizar atualizações de imagensusar o Cloudinary é uma decisão fácil para o gerenciamento de mídia multiuso!