亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

NodeJS實現視頻轉碼的示例代碼

發布時間:2020-09-30 15:31:14 來源:腳本之家 閱讀:204 作者:fareise 欄目:web開發

視頻轉碼就是一個先解碼,再編碼的過程,從而將原來的視頻轉換成我們需要的視頻。這種轉換可能包括各式(mp4/avi/flv等)、分辨率、碼率、幀率等。

傳統的視頻轉碼中,很常用的工具是FFmpeg。FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,并能將其轉化為流的開源計算機程序。

在nodejs中,也有FFmpeg,叫做node-fluent-ffmpeg。node-fluent-ffmpeg是一個node上可用的ffmpeg,使用前必須先安裝了ffmpeg。

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模塊基本使用方法

node-fluent-ffmpeg其實本質上就是通過nodejs在終端中執行FFmpeg的命令。node-fluent-ffmpeg的安裝和基本引入和其他npm模塊相同。通過npm安裝后(npm install fluent-ffmpeg),使用require在js文件中引用即可。基本使用如下:

var ffmpeg = require(‘fluent-ffmpeg'); 
var command = new ffmpeg(這里可以傳入視頻文件路徑,或者流); 

這樣就實例化了一個命令行,需要傳入要轉碼的視頻文件,也支持數據流的形式。

三、使用實例

下面是使用node-fluent-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', 'DIVX') 
 // 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可以進行鏈式調用,上面就在實例化后,鏈式設置了一系列的視頻屬性,最后監聽end事件,表示視頻已經轉碼完成。完成后可調用save()方法將視頻文件存儲到相應的目錄。

四、node-fluent-ffmpeg可以做什么

node-fluent-ffmpeg可以做ffmpeg能做的任何事情,對視頻進行任何的處理。此外,配合nodejs,node-fluent-ffmpeg還可以做許多其他事情,比如讀取并動態返回視頻長度、按照需求將視頻轉碼成任意格式等。具體的各種方法可以到github上查看,上面有對方法的使用介紹。在使用時只要自取所需就可以很輕松的完成視頻轉碼了。

五、視頻轉碼的一些要素

上面的各個函數設定了視頻的各個屬性,下面簡單為大家介紹一下視頻轉碼中比較重要的一些屬性,以及它們對應的node-fluent-ffmpeg中的方法。

1.fps:即視頻的幀率,表示1s中畫面刷新多少次。玩游戲的時候都清楚如果fps低的話游戲會很卡,這就是fps的作用。fps在一定范圍內越高,則視頻1s刷新的次數就越高,在人眼中展現的就越流暢。這個屬性對應的方法是fps(),傳入想設定的幀率值即可。

2.分辨率:用于設定視頻的大小,對應的方法是size(),傳入寬度x高度。

3.碼率:在視頻領域中,一般而言碼率指的就是比特率。他表示數據傳輸時單位時間傳送的數據位數,單位kbps。這個值影響的就是視頻質量了,該值越大,視頻的質量越高,但與此同時視頻文件的大小就會越大。因此我們在轉碼時要合理設置碼率,保證文件大小不超過限制的情況下質量盡可能高。

4.格式:這個就不用多說了,通過format方法可以設置格式。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陆良县| 玛多县| 中江县| 惠州市| 蓝山县| 吴江市| 镇坪县| 辉县市| 石林| 泰和县| 遵化市| 普宁市| 杭锦后旗| 南澳县| 蒲江县| 玛沁县| 山西省| 万年县| 来安县| 庆云县| 上饶县| 长泰县| 枞阳县| 新巴尔虎右旗| 仲巴县| 仁寿县| 湖口县| 绥中县| 陇西县| 巴中市| 江都市| 施秉县| 灵宝市| 福海县| 德兴市| 雷山县| 德惠市| 兴业县| 大荔县| 右玉县| 佳木斯市|