最近項目頻繁用到fluent-ffmpeg,將目前使用到的函數進行總結。
首先引入fluent-ffmpeg模塊:
var ffmpeg = require('fluent-ffmpeg');
1.函數 ffmpeg.ffprobe
ffmpeg.ffprobe查看音頻視頻文件信息並輸出為json格式
format 里面包含比特率,時長,文件大小等信息
streams,包含視頻音頻信息詳情,一般為兩個stream值。
2 改變文件屬性
save時可另存文件,改變源文件屬性。
inputFPS(25)可改變幀速率;
seek(10)設置開始時間,從第10s開始保存;
duration(10)設置總時長;
input( "work/music/Enya - One By One.mp3")可合並音頻;
aspect("16:9") 設置視頻橫縱比;
withSize('1600x900')設置視頻寬高;
withSize('1600x?').aspect('12:8').autoPad();設置比例后,寬高值可以只設置一個值。
如果原視頻寬高比和轉換的寬高比不一致,可以設置保持原始比例,不進行拉伸,用autoPad函數。
如下截圖,主要起作用的是 -filter:v 的配置scale和pad的值,scale 保證了不拉伸,pad設置填充位置
3 將圖片合成視頻
將圖片按規則input到ffmpeg即可存成你所需要的格式
var proc = ffmpeg('work/video/0000/frame%d.png').inputFPS(25).save('work/music/target.avi');
4 合並視頻
var file1 = "1.mp4";
var file2 = "2.mp4";
var outPath = "out.mp4";
var proc = ffmpeg(file1)
.input(file2).mergeToFile(outPath);