影片轉碼就是一個先解碼,再編碼的過程,從而將原來的影片轉換成我們需要的影片。這種轉換可能包括各式(mp4/avi/flv等)、解析度、碼率、幀率等。傳統的視訊轉碼中,很常用的工具是FFmpeg。 FFmpeg是一套可以用來錄製、轉換數位音頻、視頻,並能將其轉換為串流的開源電腦程式。在nodejs中,也有FFmpeg,叫做node-fluent-ffmpeg。 node-fluent-ffmpeg是一個node上可用的ffmpeg,使用前必須先安裝了ffmpeg。本文我們主要和大家分享NodeJS實作影片轉碼的範例程式碼,希望能幫助大家。
ffmpeg
FFmpeg是一套可以用來記錄、轉換數位音訊、視頻,並能將其轉化為串流的開源電腦程式。採用LGPL或GPL授權。它提供了錄製、轉換以及串流影音的完整解決方案。它包含了非常先進的音訊/視訊編解碼庫libavcodec,為了確保高可移植性和編解碼質量,libavcodec裡很多code都是從頭開發的
下面就為大家介紹一下NodeJS實現視訊轉碼的方法。
一、安裝FFmpeg(MAC下)
在MAC下,可以直接使用brew指令安裝:brew install ffmpeg。
安裝成功後,我們就可以在命令列進行,並利用ffmpeg的指令進行影片轉碼了。例如將input.avi轉碼成output.ts並設定視訊碼率640kbps,需要執行的指令如下:
##
ffmpeg -i input.avi -b:v 640k output.ts
二、node-fluent-ffmpeg模組基本上使用方法
var ffmpeg = require(‘fluent-ffmpeg'); var command = new ffmpeg(这里可以传入视频文件路径,或者流);
三、使用實例
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可以做什麼
五、影片轉碼的一些要素
以上是NodeJS實作視訊轉碼的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!