Heim  >  Artikel  >  Web-Frontend  >  So konvertieren Sie Bilder in NodeJS in Videos

So konvertieren Sie Bilder in NodeJS in Videos

PHPz
PHPzOriginal
2023-04-26 09:10:491339Durchsuche

Node.js ist eine serverseitige Sprache, die auf JavaScript läuft. Sie kann für eine Vielzahl von Anwendungsentwicklungen verwendet werden, einschließlich der Konvertierung von Bilddateien in Videodateien. In diesem Artikel erfahren Sie, wie Sie mit Node.js eine Reihe von Bildern in ein Video konvertieren.

Zuerst müssen wir einige notwendige Werkzeuge vorbereiten. Das erste ist FFmpeg, eine weit verbreitete plattformübergreifende Lösung zur Verarbeitung von Audio und Video. Wir müssen auch das child_process-Modul von Node.js verwenden, das es Node.js-Programmen ermöglicht, externe Befehle aufzurufen.

In diesem Artikel verwenden wir das Programm Node.js, um alle Bilddateien im angegebenen Ordner zu durchlaufen und sie in Videodateien zu konvertieren. Wir werden die Jimp-Bibliothek zum Lesen und Schreiben von Bilddaten verwenden. Zuerst müssen wir diese Bibliotheken installieren, was durch Ausführen des folgenden Befehls erfolgen kann:

npm install jimp

Sobald die Installation abgeschlossen ist, können wir mit dem Schreiben unserer Node.js-Skripte beginnen. Hier ist ein einfaches Beispiel, das alle Bilddateien in einem bestimmten Ordner durchläuft und sie in Videodateien konvertiert:

const fs = require('fs');
const { exec } = require('child_process');
const Jimp = require('jimp');

const imageFolderPath = './images/';
const outputFileName = './output.mp4';

const getFiles = () => {
  return new Promise((resolve, reject) => {
    fs.readdir(imageFolderPath, (err, files) => {
      if (err) {
        reject(err);
      }
      resolve(files);
    })
  })
}

const getImageData = (filePath) => {
  return new Promise((resolve, reject) => {
    Jimp.read(filePath, (err, image) => {
      if (err) {
        reject(err);
      }
      resolve(image.bitmap.data);
    });
  });
}

const convertImagesToVideo = async () => {
  const files = await getFiles();

  let imageDataArray = [];
  let maxWidth = 0;
  let maxHeight = 0;

  // Read all image files and collect image data and dimensions
  for (let i = 0; i < files.length; i++) {
    const file = files[i];
    const filePath = `${imageFolderPath}${file}`;
    const imageData = await getImageData(filePath);
    const image = await Jimp.read(filePath);

    maxWidth = Math.max(maxWidth, image.bitmap.width);
    maxHeight = Math.max(maxHeight, image.bitmap.height);

    imageDataArray.push(imageData);
  }

  // Combine all image data into a single Buffer
  const buffer = Buffer.concat(imageDataArray);

  // Use FFmpeg to generate the output video file
  const ffmpegCommand = `-y -f rawvideo -pixel_format rgba -video_size ${maxWidth}x${maxHeight} -framerate 30 -i - -c:v h264 ${outputFileName}`;
  const ffmpegProcess = exec(`echo &#39;${buffer.toString()}&#39; | ffmpeg ${ffmpegCommand}`);

  ffmpegProcess.stderr.on(&#39;data&#39;, (data) => {
    console.log(`stderr: ${data}`);
  });

  ffmpegProcess.on('close', (code) => {
    console.log(`child process exited with code ${code}`);
  });
}

convertImagesToVideo();

Im obigen Code definieren wir drei Funktionen: getFiles(), getImageData() und convertImagesToVideo(). Die Funktion getFiles() verwendet das fs-Modul, um alle Dateien in einem Ordner zu lesen. Die Funktion getImageData() nutzt die Jimp-Bibliothek zum Lesen von Bilddaten. Die Funktion „convertImagesToVideo()“ durchläuft jede Bilddatei und verwendet die Jimp-Bibliothek und die Buffer-Klasse, um Bilddaten, Bildbreite und -höhe sowie andere Informationen zu sammeln. Verwenden Sie abschließend FFmpeg, um die generierten Bilddaten in eine Videodatei zu konvertieren.

Bevor Sie dieses Skript ausführen, stellen Sie bitte sicher, dass Sie FFmpeg und Node.js installiert haben. Im Skript müssen Sie die Variablen „imageFolderPath“ und „outputFileName“ festlegen, um den Ordner mit den Bilddateien sowie den Namen und Pfad der generierten Videodatei anzugeben.

Kurz gesagt: Node.js hat sich zu einer der Schlüsseltechnologien für die Anwendungsentwicklung entwickelt und ermöglicht es Entwicklern, bessere Anwendungen zu erstellen. Durch die Verwendung von Node.js und der FFmpeg-Bibliothek können wir eine Reihe von Bilddateien in Videodateien konvertieren, um die Funktion der Multimediadateikonvertierung zu realisieren.

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie Bilder in NodeJS in Videos. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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