So legen Sie die Videodauer in NodeJS fest

PHPz
Freigeben: 2023-05-18 09:51:37
Original
697 Leute haben es durchsucht

Node.js ist eine sehr beliebte JavaScript-Laufzeitumgebung, die zum Erstellen verschiedener Arten von Anwendungen verwendet werden kann. Unter ihnen sind Webanwendungen die beliebtesten. Da immer mehr Benutzer das Internet zum Ansehen von Videoinhalten nutzen, wird die Länge des Videos immer wichtiger. In diesem Artikel erfahren Sie, wie Sie die Videodauer in Node.js festlegen.

Zuerst müssen wir das Grundkonzept von Videos verstehen. Ein Video besteht aus einer Reihe von Einzelbildern, von denen jedes ein Bild im Video darstellt. Jeder Frame eines Videos verfügt über einen Zeitstempel, der angibt, wann dieser Frame im Video abgespielt wurde.

Die FFmpeg-Bibliothek kann in Node.js zum Verarbeiten von Videodateien verwendet werden. FFmpeg ist eine beliebte Open-Source-Bibliothek zur Verarbeitung von Audio- und Videodateien. Es kann die Metadaten von Videodateien lesen, einschließlich Videodauer, Bildrate, Auflösung und andere Informationen.

Das Folgende ist ein Beispielcode zum Abrufen der Videodauer in 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);
});
Nach dem Login kopieren

Der obige Code verwendet die Spawn-Funktion, um den FFmpeg-Prozess zu starten, und übergibt den Parameter -i und den Namen der Videodatei als Parameter. Der Ausgabestream des FFmpeg-Prozesses wird vom Thread automatisch an den stderr-Stream gesendet. Verwenden Sie die Funktion stderr.on, um die Ausgabe des stderr-Streams abzuhören und die Videodauer aus den Metadaten der Videodatei abzurufen. Der Code verwendet schließlich Promise, um die Videodauer zurückzugeben.

Natürlich gibt es in Node.js mehr als eine Bibliothek zum Verarbeiten von Videos: FFmpeg. Eine weitere beliebte Bibliothek ist GStreamer. Hier ist ein Beispielcode, der GStreamer verwendet, um die Videodauer zu ermitteln:

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);
});
Nach dem Login kopieren

Der obige Code startet einen GStreamer-Prozess und übergibt den Dateinamen als Parameter. Verwenden Sie dann den stderr-Stream, um die Prozessausgabe abzuhören und die Informationen zur Videodauer aus den Metadaten zu extrahieren.

Insgesamt erleichtert Node.js das Abrufen von Informationen zur Videodauer durch die Verwendung von Bibliotheken wie FFmpeg und GStreamer. Hier sind nur einige Beispielcodes. Entwickler können die am besten geeignete Verarbeitungsmethode entsprechend ihren eigenen Anforderungen auswählen.

Das obige ist der detaillierte Inhalt vonSo legen Sie die Videodauer in NodeJS fest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage