Comment définir la durée de la vidéo dans nodejs

PHPz
Libérer: 2023-05-18 09:51:37
original
665 Les gens l'ont consulté

Node.js est un environnement d'exécution JavaScript très populaire qui peut être utilisé pour créer différents types d'applications. Parmi elles, les applications Web sont les plus populaires. Alors que de plus en plus d’utilisateurs utilisent Internet pour regarder du contenu vidéo, la durée de la vidéo devient très importante. Cet article explique comment définir la durée de la vidéo dans Node.js.

Tout d’abord, nous devons comprendre le concept de base de la vidéo. La vidéo se compose d'une série d'images, chacune représentant une image dans la vidéo. Chaque image d'une vidéo possède un horodatage qui indique quand cette image a été lue dans la vidéo.

La bibliothèque FFmpeg peut être utilisée dans Node.js pour traiter des fichiers vidéo. FFmpeg est une bibliothèque open source populaire pour le traitement de fichiers audio et vidéo. Il peut lire les métadonnées des fichiers vidéo, notamment la durée de la vidéo, la fréquence d'images, la résolution et d'autres informations.

Ce qui suit est un exemple de code pour obtenir la durée de la vidéo dans Node.js :

const { spawn } = require('child_process');

function getVideoDuration(filename) {
  return new Promise((resolve, reject) => {
    const ffmpeg = spawn('ffmpeg', ['-i', filename]);
    let duration = null, stderr = '';
    ffmpeg.stderr.on('data', (data) => {
      stderr += data.toString();
    });
    ffmpeg.stderr.on('end', () => {
      const match = stderr.match(/Duration: (d{2}):(d{2}):(d{2})/);
      if (match !== null) {
        const hours = parseInt(match[1], 10);
        const minutes = parseInt(match[2], 10);
        const seconds = parseInt(match[3], 10);
        duration = (hours * 60 * 60) + (minutes * 60) + seconds;
      }
      resolve(duration);
    });
    ffmpeg.stderr.on('error', (error) => {
      reject(error);
    });
  });
}

getVideoDuration('example.mp4').then((duration) => {
  console.log(`The video duration is ${duration} seconds.`);
}).catch((error) => {
  console.error(error);
});
Copier après la connexion

Le code ci-dessus utilise la fonction spawn pour démarrer le processus FFmpeg et transmet le paramètre -i et le nom du fichier vidéo comme paramètres. Le flux de sortie du processus FFmpeg est automatiquement envoyé au flux stderr par le thread. Utilisez la fonction stderr.on pour écouter la sortie du flux stderr afin de récupérer la durée de la vidéo à partir des métadonnées du fichier vidéo. Le code utilise enfin Promise pour renvoyer la durée de la vidéo.

Bien sûr, il existe plus d'une bibliothèque pour traiter des vidéos dans Node.js : FFmpeg. GStreamer est une autre bibliothèque populaire. Voici un exemple de code qui utilise GStreamer pour obtenir la durée de la vidéo :

const { spawn } = require('child_process');

function getVideoDuration(filename) {
  return new Promise((resolve, reject) => {
    const gst = spawn('gst-discoverer-1.0', filename);
    let duration = null, stderr = '';
    gst.stderr.on('data', (data) => {
      stderr += data.toString();
    });
    gst.stderr.on('end', () => {
      const match = stderr.match(/Duration: (d{2}):(d{2}):(d{2})/);
      if (match !== null) {
        const hours = parseInt(match[1], 10);
        const minutes = parseInt(match[2], 10);
        const seconds = parseInt(match[3], 10);
        duration = (hours * 60 * 60) + (minutes * 60) + seconds;
      }
      resolve(duration);
    });
    gst.stderr.on('error', (error) => {
      reject(error);
    });
  });
}

getVideoDuration('example.mp4').then((duration) => {
  console.log(`The video duration is ${duration} seconds.`);
}).catch((error) => {
  console.error(error);
});
Copier après la connexion

Le code ci-dessus démarre un processus GStreamer et transmet le nom du fichier en tant que paramètre. Utilisez ensuite le flux stderr pour écouter la sortie du processus et extraire les informations sur la durée de la vidéo à partir des métadonnées.

Dans l'ensemble, Node.js facilite l'obtention d'informations sur la durée de la vidéo en utilisant des bibliothèques telles que FFmpeg et GStreamer. Voici quelques exemples de codes, les développeurs peuvent choisir la méthode de traitement la plus appropriée en fonction de leurs propres besoins.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!