Existe-t-il un moyen de calculer la durée de la vidéo en une milliseconde à partir de la longueur du contenu ?

request
  .get("http://myvideourl.com/filename.mp4")
  .on("response", response => {
    const content_length = response.headers.content-length;// "content-length": "1986943971"
    res.json({
      stream_duration: "",
      thumb: thumb,
      size: content_length,
    });
  });

Remarque : le format vidéo est MP4 , res est un objet express, request est une bibliothèque httpclient dans NodeJS

3
That's Enam 18 mars 2019 à 19:18

2 réponses

Meilleure réponse

Vous pouvez utiliser ce module npm Cela vous aidera à obtenir la longueur de la vidéo même à partir d'une URL

const { getVideoDurationInSeconds } = require('get-video-duration');
getVideoDurationInSeconds('http://myvideourl.com/filename.mp4').then((duration) => {
    console.log(duration)
}) 

Bien sûr, vous pouvez ensuite le convertir en millisecondes. (x1000).

1
Lolpez 18 mars 2019 à 16:23

Vous pouvez utiliser l'un de ces trois modules npm.

https://www.npmjs.com/package/get-video-duration https://www.npmjs.com/package/node-video-duration (obsolète ?) https://www.npmjs.com/package/ffprobe (obsolète)

Le premier semble à jour. il y a un exemple dans la doc

const { getVideoDurationInSeconds } = require('get-video-duration')

// From a local path...
getVideoDurationInSeconds('video.mov').then((duration) => {
  console.log(duration)
})

// From a URL...
getVideoDurationInSeconds('http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4').then((duration) => {
  console.log(duration)
})

// From a readable stream...

const fs = require('fs')
const stream = fs.createReadStream('video.mov')

getVideoDurationInSeconds(stream).then((duration) => {
  console.log(duration)
})
1
Carcigenicate 18 mars 2019 à 17:54