Bagaimana untuk menetapkan tempoh video dalam nodejs

PHPz
Lepaskan: 2023-05-18 09:51:37
asal
668 orang telah melayarinya

Node.js ialah persekitaran masa jalan JavaScript yang sangat popular yang boleh digunakan untuk membina pelbagai jenis aplikasi. Antaranya, aplikasi web adalah yang paling popular. Memandangkan semakin ramai pengguna menggunakan Internet untuk menonton kandungan video, panjang video menjadi sangat penting. Artikel ini akan memperkenalkan cara menetapkan tempoh video dalam Node.js.

Pertama, kita perlu memahami konsep asas video. Video terdiri daripada satu siri bingkai, setiap satunya mewakili imej dalam video. Setiap bingkai video mempunyai cap masa yang menunjukkan masa bingkai itu dimainkan dalam video.

Pustaka FFmpeg boleh digunakan dalam Node.js untuk memproses fail video. FFmpeg ialah perpustakaan sumber terbuka yang popular untuk memproses fail audio dan video. Ia boleh membaca metadata fail video, termasuk tempoh video, kadar bingkai, resolusi dan maklumat lain.

Berikut ialah contoh kod untuk mendapatkan tempoh video dalam 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);
});
Salin selepas log masuk

Kod di atas menggunakan fungsi spawn untuk memulakan proses FFmpeg dan lulus parameter -i dan video nama fail sebagai parameter. Aliran keluaran proses FFmpeg dihantar secara automatik ke aliran stderr oleh benang. Gunakan fungsi stderr.on untuk mendengar output strim stderr untuk merebut tempoh video daripada metadata fail video. Kod akhirnya menggunakan Promise untuk mengembalikan tempoh video.

Sudah tentu, terdapat lebih daripada satu pustaka untuk memproses video dalam Node.js: FFmpeg. Satu lagi perpustakaan popular ialah GStreamer. Berikut ialah contoh kod yang menggunakan GStreamer untuk mendapatkan tempoh video:

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);
});
Salin selepas log masuk

Kod di atas memulakan proses GStreamer dan menghantar nama fail sebagai parameter. Kemudian gunakan strim stderr untuk mendengar output proses dan mengekstrak maklumat tempoh video daripada metadata.

Secara keseluruhannya, Node.js memudahkan untuk mendapatkan maklumat tempoh video dengan menggunakan perpustakaan seperti FFmpeg dan GStreamer. Berikut adalah beberapa contoh kod, pembangun boleh memilih kaedah pemprosesan yang paling sesuai mengikut keperluan mereka sendiri.

Atas ialah kandungan terperinci Bagaimana untuk menetapkan tempoh video dalam nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!