>  기사  >  웹 프론트엔드  >  nodejs에서 비디오 지속 시간을 설정하는 방법

nodejs에서 비디오 지속 시간을 설정하는 방법

PHPz
PHPz원래의
2023-05-18 09:51:37687검색

Node.js는 다양한 유형의 애플리케이션을 구축하는 데 사용할 수 있는 매우 인기 있는 JavaScript 런타임 환경입니다. 그 중 웹 애플리케이션이 가장 인기가 높습니다. 동영상 콘텐츠를 시청하기 위해 인터넷을 사용하는 사용자가 점점 더 많아지면서 동영상 길이가 매우 중요해졌습니다. 이 기사에서는 Node.js에서 비디오 지속 시간을 설정하는 방법을 소개합니다.

먼저 영상의 기본 개념을 이해해야 합니다. 비디오는 일련의 프레임으로 구성되며 각 프레임은 비디오의 이미지를 나타냅니다. 비디오의 각 프레임에는 해당 프레임이 비디오에서 재생된 시기를 나타내는 타임스탬프가 있습니다.

Node.js에서 FFmpeg 라이브러리를 사용하여 비디오 파일을 처리할 수 있습니다. 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);
});

위 코드는 generate 함수를 사용하여 FFmpeg 프로세스를 시작하고 -i 매개변수와 동영상 파일 이름을 매개변수로 전달합니다. FFmpeg 프로세스의 출력 스트림은 스레드에 의해 자동으로 stderr 스트림으로 전송됩니다. stderr.on 함수를 사용하여 stderr 스트림의 출력을 듣고 비디오 파일의 메타데이터에서 비디오 지속 시간을 가져옵니다. 코드는 마지막으로 Promise를 사용하여 비디오 재생 시간을 반환합니다.

물론 Node.js에는 FFmpeg라는 비디오 처리용 라이브러리가 두 개 이상 있습니다. 또 다른 인기 있는 라이브러리는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.