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

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:...

Como Resolver Problema de Teclado e Mouse Não Funcionando no Ubuntu

Como resolver problema com teclado e mouse no Ubuntu Como Resolver Problema de Teclado e Mouse Não Funcionando no Ubuntu Encontrar-se sem teclado e mouse funcionando no Ubuntu pode ser frustrante, especialmente quando precisamos realizar tarefas urgentes. Este artigo aborda uma solução simples e eficaz: reinstalar o pacote xserver-xorg-input-all , que é responsável pelo suporte aos dispositivos de entrada no sistema. Passos para resolver o problema Para resolver este problema, siga os passos abaixo. Será necessário acessar o sistema como usuário root através do modo de recuperação pelo GRUB. 1. Acesse o modo de recuperação pelo GRUB Caso o teclado e o mouse não estejam funcionando, siga os passos abaixo para acessar o terminal no modo de recuperação: Reinicie o computador e, durante a inicialização, pressione repetidamente a tecla Shift ...

Como Migrar Arquivos do AWS S3 para Azure Blob Storage

Como Migrar Arquivos do AWS S3 para Azure Blob Storage Como Migrar Arquivos do AWS S3 para Azure Blob Storage Este tutorial ensina como realizar a migração de todos os arquivos e pastas de um bucket S3 da AWS para o Azure Blob Storage de forma eficiente e segura. Pré-requisitos Uma conta AWS com acesso ao bucket S3. Uma conta Azure com um container configurado no Blob Storage. Instalação da AWS CLI e da Azure CLI . Configuração das credenciais de ambas as plataformas. Passo 1: Configurar as Ferramentas de Linha de Comando Configurar a AWS CLI Certifique-se de que a AWS CLI está instalada e configurada com as credenciais apropriadas: aws configure Insira o Access Key ID , Secret Access Key , região e formato de saída (por exemplo, JSON). Configurar a Azure CLI Faça login na sua conta Azure usando a Azure CLI: az login ...