ホームページ  >  記事  >  ウェブフロントエンド  >  Nodejsでビデオの長さを設定する方法

Nodejsでビデオの長さを設定する方法

PHPz
PHPzオリジナル
2023-05-18 09:51:37685ブラウズ

Node.js は、さまざまな種類のアプリケーションの構築に使用できる、非常に人気のある JavaScript ランタイム環境です。その中でもWebアプリケーションは最も人気があります。インターネットを使用してビデオ コンテンツを視聴するユーザーが増えるにつれて、ビデオの長さが非常に重要になります。この記事ではNode.jsで動画の長さを設定する方法を紹介します。

まず、ビデオの基本概念を理解する必要があります。ビデオは一連のフレームで構成されており、各フレームはビデオ内の画像を表します。ビデオの各フレームには、そのフレームがビデオ内でいつ再生されたかを示すタイムスタンプがあります。

FFmpeg ライブラリは、Node.js でビデオ ファイルを処理するために使用できます。 FFmpeg は、オーディオ ファイルとビデオ ファイルを処理するための人気のあるオープン ソース ライブラリです。ビデオの長さ、フレーム レート、解像度、その他の情報を含むビデオ ファイルのメタデータを読み取ることができます。

以下は、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);
});

上記のコードは、spawn 関数を使用して FFmpeg プロセスを開始し、-i パラメーターとビデオを渡します。ファイル名をパラメータとして指定します。 FFmpeg プロセスの出力ストリームは、スレッドによって自動的に stderr ストリームに送信されます。 stderr.on 関数を使用して stderr ストリームの出力をリッスンし、ビデオ ファイルのメタデータからビデオ時間を取得します。コードは最終的に Promise を使用してビデオの長さを返します。

もちろん、Node.js でビデオを処理するためのライブラリは複数あります: FFmpeg。もう 1 つの人気のあるライブラリは GStreamer です。以下は、GStreamer を使用してビデオの長さを取得するサンプル コードです。

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);
});

上記のコードは、GStreamer プロセスを開始し、ファイル名をパラメータとして渡します。次に、stderr ストリームを使用してプロセス出力をリッスンし、メタデータからビデオの継続時間情報を抽出します。

全体として、Node.js は FFmpeg や GStreamer などのライブラリを使用してビデオの長さ情報を簡単に取得できます。ここで紹介するサンプル コードはほんの一部であり、開発者は自分のニーズに応じて最適な処理方法を選択できます。

以上がNodejsでビデオの長さを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。