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. Dans cet article, nous partageons principalement avec vous l'exemple de code pour le transcodage vidéo dans NodeJS, en espérant vous aider.
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 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(这里可以传入视频文件路径,或者流);
De cette façon, une ligne de commande est instanciée, et le fichier vidéo à être transcodé doit être transmis. La forme du flux de données est également prise en charge.
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. l'événement de fin indique 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 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 :
php pour implémenter le transcodage base64 en images
Résumé des outils de transcodage de fichiers couramment utilisés
Code de fonction PHP pour déterminer le jeu de caractères et transcoder
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!