Pular para o conteúdo principal

Streaming de Vídeos Grandes com Node.js e ReactJS


Se você precisa exibir vídeos grandes (mais de 1GB) sem sobrecarregar o frontend, a melhor solução é o streaming progressivo.

1. Configurando o Servidor Node.js

Crie um servidor com Express para servir o vídeo em partes, permitindo que o player carregue apenas o necessário.



const express = require("express"); const fs = require("fs"); const path = require("path");
const app = express(); const PORT = 3000;
app.get("/video", (req, res) => { const videoPath = path.join(__dirname, "videos", "meu_video.mp4"); const stat = fs.statSync(videoPath); const fileSize = stat.size; const range = req.headers.range;

if (range) {
    const parts = range.replace(/bytes=/, "").split("-");
    const start = parseInt(parts[0], 10);
    const end = parts[1] ? parseInt(parts[1], 10) : fileSize - 1;
    const chunkSize = (end - start) + 1;
    const fileStream = fs.createReadStream(videoPath, { start, end });
    res.writeHead(206, {
        "Content-Range": `bytes ${start}-${end}/${fileSize}`,
        "Accept-Ranges": "bytes",
        "Content-Length": chunkSize,
        "Content-Type": "video/mp4",
    });
    fileStream.pipe(res);
} else {
    res.writeHead(200, {
        "Content-Length": fileSize,
        "Content-Type": "video/mp4",
    });
	   fs.createReadStream(videoPath).pipe(res);
}
});

app.listen(PORT, () => console.log(Servidor rodando na porta ${PORT})); 

2. Consumindo o Vídeo no ReactJS

No frontend, usamos a tag <video> para carregar o vídeo do backend.



import React from "react";

const VideoPlayer = () => { return (<\video controls width="800"> <\source src="http://localhost:3000/video" type="video/mp4" /> Seu navegador não suporta a reprodução de vídeos. <\/video>" ); };

export default VideoPlayer; 

3. Benefícios da Abordagem

  • Streaming eficiente: O navegador carrega apenas o necessário.
  • Menos uso de memória: O servidor não carrega o arquivo inteiro.
  • Suporte a saltos no vídeo: O usuário pode avançar ou retroceder sem baixar tudo.

Conclusão

Com essa abordagem, conseguimos melhorar a experiência do usuário e otimizar o consumo de recursos. Para vídeos ainda maiores, podemos utilizar HLS (HTTP Live Streaming). Caso precise dessa solução, deixe um comentário!

Comentários

Postagens mais visitadas deste blog

Guia de Instalação e Configuração do Docker no Ubuntu

 O Docker é uma ferramenta poderosa para criar, testar e implantar aplicações de maneira rápida e eficiente em containers. Este guia vai cobrir os passos necessários para instalar e configurar o Docker no Ubuntu. Atualizar o Sistema Antes de começar, é uma boa prática garantir que o sistema está atualizado: sudo apt update sudo apt upgrade Instalar Dependências O Docker requer alguns pacotes adicionais para funcionar corretamente. Vamos instalá-los: sudo apt install apt-transport-https ca-certificates curl software-properties-common Esses pacotes permitem ao Ubuntu utilizar pacotes de repositórios via HTTPS. Adicionar a Chave GPG do Docker Para garantir que os pacotes baixados sejam autênticos, precisamos adicionar a chave GPG oficial do Docker: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg Adicionar o Repositório Docker Agora, adicione o repositório Docker ao sistema: echo "deb [arch=amd64 signed-by=...

Implementado Comunicação entre Microserviços Apache Kafka em Nodejs

Implementando Comunicação entre Microserviços com Apache Kafka em Node.js Implementando Comunicação entre Microserviços com Apache Kafka em Node.js O Apache Kafka é uma plataforma distribuída de mensagens em tempo real, ideal para comunicação entre microserviços. Neste artigo, implementaremos um produtor e um consumidor Kafka usando Node.js . 1. Configuração do Ambiente Antes de começar, instale o Docker e configure um cluster Kafka com Zookeeper: docker-compose up -d Crie um arquivo docker-compose.yml para rodar o Kafka: version: '3.8' services: zookeeper: image: bitnami/zookeeper:latest container_name: zookeeper environment: - ALLOW_ANONYMOUS_LOGIN=yes ports: - "2181:2181" kafka: image: bitnami/kafka:latest container_name: kafka depends_on: - zookeeper environment: - KAFKA_BROKER_ID=1 - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:...

Guia de instalação e configuração do Portainer no Ubuntu

  Guia Completo de Instalação do Portainer.io no Docker O Portainer.io é uma ferramenta poderosa e amigável para o gerenciamento de containers Docker, Swarm e Kubernetes. Se você trabalha com containers, essa é uma solução essencial para facilitar sua administração. Vamos aprender como instalar e configurar o Portainer no Docker. O que é o Portainer.io? O Portainer.io é uma interface gráfica simples, que permite gerenciar de maneira centralizada seus containers, volumes, redes e imagens Docker. Ele pode ser utilizado por iniciantes e profissionais, pois oferece uma administração visual dos seus ambientes. Benefícios do Portainer Interface amigável : Gerencie containers de forma visual, tornando a administração mais simples e intuitiva. Gerenciamento centralizado : Administre múltiplos ambientes Docker/Kubernetes em um único local. Facilidade para iniciantes : Reduz a curva de aprendizado do Docker com sua interface gráfica. Gerenciamento de volumes e redes : ...