Maison  >  Article  >  interface Web  >  Transcoder la vidéo avec NodeJS

Transcoder la vidéo avec NodeJS

php中世界最好的语言
php中世界最好的语言original
2018-04-14 15:03:552042parcourir

Cette fois je vais vous apporter les précautions d'utiliser NodeJS pour transcoder des vidéos et quelles sont les

précautions pour transcoder des vidéos avec NodeJS. Voici des cas pratiques. , jetons un coup d'oeil.

Le transcodage vidéo est un processus de décodage puis d'encodage, convertissant ainsi la vidéo originale en vidéo dont nous avons besoin. Cette conversion peut inclure différents formats (mp4/avi/flv, etc.), résolution, débit binaire, fréquence d'images, etc.

Dans le transcodage vidéo traditionnel, un outil très couramment utilisé est FFmpeg. FFmpeg est un ensemble de programmes informatiques open source qui peuvent être utilisés pour enregistrer, convertir de l'audio et de la vidéo numériques et les convertir en flux.

Dans nodejs, il existe également FFmpeg, appelé node-fluent-ffmpeg. node-fluent-ffmpeg est un ffmpeg disponible sur node. ffmpeg doit être installé avant utilisation.

ffmpeg

FFmpeg est un ensemble de programmes informatiques open source qui peuvent être utilisés pour enregistrer, convertir de l'audio et de la vidéo numériques et les convertir en flux. Utilisez une licence LGPL ou GPL. Il fournit une solution complète pour l'enregistrement, la conversion et le streaming audio et vidéo. Il contient la bibliothèque de codecs audio/vidéo très avancée libavcodec Afin de garantir une portabilité et une qualité de codec élevées, de nombreux codes de libavcodec sont développés à partir de zéro

. Laissez-moi vous présenter comment implémenter le transcodage vidéo dans NodeJS.

1. Installer FFmpeg (sous MAC)

Sous MAC, vous pouvez directement utiliser la commande Brew pour installer : Brew Install ffmpeg.

ffmpeg -i input.avi -b:v 640k output.ts
Une fois l'installation réussie, nous pouvons utiliser la ligne de commande pour transcoder la vidéo à l'aide de la commande ffmpeg. Par exemple, pour transcoder input.avi en output.ts et définir le débit vidéo à 640 kbps, les commandes à exécuter sont les suivantes :

2. Le module node-fluent-ffmpeg Utilise essentiellement la méthode

node-fluent-ffmpeg exécute essentiellement les commandes FFmpeg dans le terminal via nodejs. L'installation et l'introduction de base de node-fluent-ffmpeg sont les mêmes que celles des autres modules npm. Après l'installation via npm (npm install fluent-ffmpeg), utilisez

require
var ffmpeg = require(‘fluent-ffmpeg'); 
var command = new ffmpeg(这里可以传入视频文件路径,或者流);
pour le référencer dans le fichier js. L'utilisation de base est la suivante :

De cette façon, une ligne de commande est instanciée et le fichier vidéo à transcoder doit être transmis. La forme de flux de données est également prise en charge.

3. Exemples d'utilisation

var ffmpeg = require('../index'); 
var command = ffmpeg('testvideo-5m.mpg') 
 // set video bitrate 
 .videoBitrate(1024) 
 // set aspect ratio 
 .aspect('16:9') 
 // set size in percent 
 .size('50%') 
 // set fps 
 .fps(24) 
 // set audio bitrate 
 .audioBitrate('128k') 
 // set audio codec 
 .audioCodec('libmp3lame') 
 // set number of audio channels 
 .audioChannels(2) 
 // set custom option 
 .addOption('-vtag', 'pX') 
 // set output format to force 
 .format('avi') 
 // setup event handlers 
 .on('end', function() { 
  console.log('file has been converted succesfully'); 
 }) 
 .on('error', function(err) { 
  console.log('an error happened: ' + err.message); 
 }) 
 // save to file 
 .save('outtest.avi');
Voici un exemple d'utilisation de node-fluent-ffmpeg pour le transcodage vidéo :

node-fluent-ffmpeg peut effectuer des appels en chaîne. Juste après l'instanciation, une série d'attributs vidéo sont définis dans la chaîne, et enfin l'événement end

est surveillé, indiquant que la vidéo a été transcodée. Une fois terminé, la méthode save() peut être appelée pour stocker le fichier vidéo dans le répertoire correspondant.

4. Ce que node-fluent-ffmpeg peut faire

node-fluent-ffmpeg peut faire tout ce que ffmpeg peut faire et effectuer n'importe quel traitement sur la vidéo. De plus, avec nodejs, node-fluent-ffmpeg peut également faire beaucoup d'autres choses, comme lire et renvoyer dynamiquement la longueur de la vidéo, transcoder la vidéo dans n'importe quel format selon les besoins, etc. Les méthodes spécifiques peuvent être consultées sur github, qui contient une introduction aux méthodes. Lorsque vous l'utilisez, vous pouvez facilement terminer le transcodage vidéo en sélectionnant simplement ce dont vous avez besoin.

5. Quelques éléments de transcodage vidéo

Chacune des

fonctions

ci-dessus définit divers attributs de la vidéo. Vous trouverez ci-dessous une brève introduction à certains des attributs les plus importants du transcodage vidéo, ainsi que leurs méthodes correspondantes dans node-fluent-ffmpeg.

1.fps : La fréquence d'images de la vidéo, indiquant combien de fois l'image est rafraîchie en 1 seconde. Lorsque nous jouons à des jeux, nous savons tous que si le fps est faible, le jeu sera très lent. C'est le rôle du fps. Plus le nombre d'images par seconde est élevé dans une certaine plage, plus le nombre de fois que la vidéo est actualisée par seconde est élevé et plus elle apparaît fluide à l'œil humain. La méthode correspondante de cet attribut est fps(), transmettez simplement la valeur de fréquence d'images que vous souhaitez définir.

2. Résolution : utilisée pour définir la taille de la vidéo. La méthode correspondante est size(), en passant en largeur x hauteur.

3. Débit binaire : Dans le domaine vidéo, de manière générale, le débit binaire fait référence au débit binaire. Il représente le nombre de bits de données transmis par unité de temps lors de la transmission des données, en kbps. Cette valeur affecte la qualité vidéo. Plus la valeur est élevée, plus la qualité de la vidéo est élevée, mais en même temps, la taille du fichier vidéo sera plus grande. Par conséquent, nous devons définir le débit de code de manière raisonnable lors du transcodage pour garantir que la qualité est aussi élevée que possible tandis que la taille du fichier ne dépasse pas la limite.

4. Format : Inutile de dire que le format peut être défini via la méthode de format.                                                                                                                                                                                                                                                        

Je pense que vous maîtrisez la méthode après avoir lu le cas présenté dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de PHP !

Lecture recommandée :

Quelles sont les façons d'implémenter Ajax asynchrone dans JS natif

Opération modale pour charger des données dans une seule fois

Solution au problème de compatibilité utilisant canvas.toDataURL dans IE11

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn