¿Cómo crear una aplicación de transmisión de video usando Node.js?

En este artículo, vamos a crear una aplicación de transmisión de video. Una aplicación de transmisión de video se usa para transmitir o reproducir video, como un simple reproductor de video.

Funcionalidad: Reproducir video

Enfoque: vamos a utilizar express para este proyecto y crearemos un archivo de servidor app.js, luego crearemos un archivo HTML index.html que contiene un enlace de video que apunta a la ruta del reproductor de video del archivo de servidor (app.js). . Dentro del archivo del servidor, enviaremos el index.html a la página de inicio, luego usaremos diferentes tipos de módulos incorporados para la configuración completa de la ruta del reproductor de video dentro del archivo del servidor.

Implementación: A continuación se muestra la implementación paso a paso del enfoque anterior.

Paso 1: Configuración del proyecto

Inicializa NPM: cree y ubique la carpeta de su proyecto en la terminal y escriba el comando

npm init -y

Inicializa nuestra aplicación de Node y crea un archivo package.json.

Instale dependencias: ubique el directorio de su proyecto raíz en la terminal y escriba el comando

npm install express 

Para instalar Express como dependencias dentro de su proyecto

Crear archivo de servidor: cree un archivo ‘app.js’, dentro de este archivo se requiere el módulo Express y el módulo del sistema de archivos, y cree una ‘aplicación’ constante para crear una instancia del módulo Express.

const express = require('express');
const fs = require('fs');
const app = express();

Paso 2: configurar la página de inicio 

Crear archivo Index.html: vamos a crear un archivo HTML simple que consta de una sola línea dentro de la etiqueta del cuerpo que se usa básicamente para establecer la ruta del video y el ancho del video. Estableceremos la ruta del video al ‘reproductor de video’ y luego, en el paso 3, configuraremos esta solicitud de ‘ reproductor de video’ dentro de nuestro archivo de servidor (app.js) para transmitir el video.
índice.html

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Video Player</title>
</head>
<body>
    <video src="/videoplayer" width="1080px" 
           controls></video>
</body>
</html>

Envíe el archivo a la página de inicio: ahora cree una solicitud de obtención para la página de inicio que simplemente envíe este index.html al navegador.

app.get('/', (req, res) => {
   res.sendFile(__dirname + '/index.html');
})

Paso 3: Configure la ruta del reproductor de video: Ahora cree una solicitud de obtención para el reproductor de video.

app.get('/videoplayer', (req, res) => {

})

Dentro de esta ruta, siga los pasos a continuación.

Crear un rango constante: contiene el valor del rango que obtenemos del encabezado.

const range = req.headers.range

Establecer ruta de video: aquí tenemos que crear una ruta de video const y configurarla en la ubicación del video.

const videoPath = pathOfVideo

reemplace pathOfVideo con la ubicación de su archivo de video.

Establecer el tamaño del video: ahora tenemos que usar el método statSync del módulo fs y pasar la ruta del video y luego calcular el tamaño.

const videoSize  = fs.statSync(videoPath).size

Establecer tamaño de fragmento: solo necesita usar el código a continuación para establecer el tamaño de fragmento para la transmisión en Node.js.

const chunkSize = 1 * 1e6;

Create const start and end: Se utilizan para calcular la posición inicial y final del video

const start = Number(range.replace(/\D/g, ""))
const end = Math.min(start + chunkSize, videoSize - 1)

Calcule la longitud del contenido y configúrelo en una variable:

const contentLength = end - start + 1;

Establecer encabezado para reproducir video:

const headers = {
    "Content-Range" : `bytes ${start}-${end}/${videoSize}`,
    "Accept-Ranges" : "bytes",
    "Content-Length" : contentLength,
    "Content-Type" : "video/mp4"
}

res.writeHead(206, headers)

Cree Video Stream y canalícelo con la respuesta: 

const stream = fs.createReadStream(videoPath, {start, end})

stream.pipe(res)

Código completo: a continuación se muestra el código completo para crear una aplicación para tomar notas usando Node.js:

app.js

const express = require('express');
const fs = require('fs');
const app = express();
  
app.get('/', (req, res) => {
    res.sendFile(__dirname + '/index.html');
})
  
app.get('/videoplayer', (req, res) => {
    const range = req.headers.range
    const videoPath = './video.mp4';
    const videoSize = fs.statSync(videoPath).size
    const chunkSize = 1 * 1e6;
    const start = Number(range.replace(/\D/g, ""))
    const end = Math.min(start + chunkSize, videoSize - 1)
    const contentLength = end - start + 1;
    const headers = {
        "Content-Range": `bytes ${start}-${end}/${videoSize}`,
        "Accept-Ranges": "bytes",
        "Content-Length": contentLength,
        "Content-Type": "video/mp4"
    }
    res.writeHead(206, headers)
    const stream = fs.createReadStream(videoPath, {
        start,
        end
    })
    stream.pipe(res)
})
app.listen(3000);

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Video Player</title>
</head>
<body>
    <video src="/videoplayer" width="1080px" 
           controls></video>
</body>
</html>

Producción:

 

Publicación traducida automáticamente

Artículo escrito por devaadi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *