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. Cet article présente principalement l'exemple de code pour le transcodage vidéo dans NodeJS. J'espère que cela pourra aider tout le monde.
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é élevée et une qualité de codec, de nombreux codes dans libavcodec sont développés à partir de zéro
Laissez-moi vous présenter comment implémenter la conversion vidéo avec la méthode de codage NodeJS. .
1. Installer FFmpeg (sous MAC)
Sous MAC, vous pouvez directement utiliser la commande Brew pour installer : Brew Install ffmpeg.
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 du code vidéo à 640 kbps, les commandes à exécuter sont les suivantes :
ffmpeg -i input.avi -b:v 640k output.ts
2. L'utilisation de base du module node-fluent-ffmpeg
node-fluent-ffmpeg consiste essentiellement à exécuter des 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'avoir installé via npm (npm install fluent-ffmpeg), utilisez simplement require pour le référencer dans le fichier js. L'utilisation de base est la suivante :
var ffmpeg = require(‘fluent-ffmpeg'); var command = new ffmpeg(这里可以传入视频文件路径,或者流);
Ceci instancie une ligne de commande et doit transmettre le fichier vidéo à transcoder. Il prend également en charge la forme d'un flux de données. .
3. Exemples d'utilisation
Ce qui suit est un exemple d'utilisation de node-fluent-ffmpeg pour le transcodage vidéo :
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');
node-fluent-ffmpeg peut être appelé dans une chaîne. Après l'instanciation, une série d'attributs vidéo est définie dans la chaîne, et enfin l'événement de fin est surveillé, indiquant que la vidéo. a été transcodé. 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 le 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 du transcodage vidéo
Les fonctions ci-dessus définissent divers attributs de la vidéo. Voici une brève introduction au transcodage vidéo. attributs plus importants et 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 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.
Recommandations associées :
Solution au problème du transcodage UNICODE chinois en json_encode en php
À propos du caractère transcodage Introduction détaillée
Gadget de transcodage de fichiers écrit en python
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!