3分钟提取10000个视频的第一帧图片,node执行ffmpeg万能脚本

先给电脑安装node环境

node官网地址:https://nodejs.org/en/

在这里插入图片描述

安装完成之后可以将node配置到系统环境变量中,

最后再检验自己node环境是否ok

➜  ~ node -v
v12.18.2

在这里插入图片描述

下载ffmpeg的安装包

官网地址:https://ffmpeg.org/

mac下载地址:https://evermeet.cx/ffmpeg/

windows下载地址:https://www.gyan.dev/ffmpeg/builds/

准备好脚本 全部代码如下

var fs = require('fs');
var path = require('path'); //解析需要遍历的文件夹

const ffmpeg = require('fluent-ffmpeg')
let cp = require('child_process');


console.log('准备开始处理')

var filePath = path.resolve('./vlist');
//调用文件遍历方法
fileDisplay(filePath);


//文件遍历方法
function fileDisplay(filePath) {
   //根据文件路径读取文件,返回文件列表
   fs.readdir(filePath, function(err, files) {
   	if (err) {
   		console.warn(err)
   	} else {
   		//遍历读取到的文件列表
   		files.forEach(function(filename) {
   			console.log('文件名:', filename);
   			//获取当前文件的绝对路径
   			var filedir = path.join(filePath, filename);
   			console.log('文件路径:', filename);
   			if (filename.indexOf('DS_Store') == -1) {
   				//这里预设的是 将转换的图片放在当前目录的images文件夹里 文件名是jpg后缀
   				execJpg(filedir, `${filePath}/images/${filename.split('.')[0]}.jpg`)
   			}
   		});
   	}
   });
}

//提取视频第一帧 保存为图片
//pathFile:原文件地址
//saveFilePath:需要保存的文件地址 
const execJpg = (pathFile, saveFilePath) => {
   //这个指令也能转
   // const aa = `./ffmpeg -i ${pathFile} -y -f image2 -frames 1 ${saveFilePath}`
   // ./ffmpeg -ss 00:00:00 -t 00:00:01 -i f9.mp4 -an -f image2 -s 640:1136 a123.jpeg
   const bb = `./ffmpeg -ss 00:00:00 -t 00:00:01 -i ${pathFile} -an -f image2 -s 640:1136 ${saveFilePath}`
   console.log('当前指令:', bb)
   cp.exec(bb,
   	function(res) {
   		console.log('执行的结果:', JSON.stringify(res))
   		console.log(`${saveFilePath} success...`)
   	})
}

console.log('处理结束')


准备需要转换的mp4文件列表

将脚本文件、ffmpeg、 mp4文件夹放在同一个文件夹下

在这里插入图片描述

命令行切换到该目录 并配置运行环境

➜  ~ cd /Users/jalen/Desktop/inv/ffmpeg

脚本中有用到fluent-ffmpeg,所以需要安装下

npm install fluent-ffmpeg

➜  vlist npm install fluent-ffmpeg
npm WARN saveError ENOENT: no such file or directory, open '/Users/jalen/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/Users/jalen/package.json'
npm WARN [email protected] requires a peer of react@^0.14.0 || ^15.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of vue@^2.4.1 but none is installed. You must install peer dependencies yourself.
npm WARN jalen No description
npm WARN jalen No repository field.
npm WARN jalen No README data
npm WARN jalen No license field.

+ [email protected]
added 3 packages from 3 contributors in 3.668s

6 packages are looking for funding
 run `npm fund` for details



  ╭────────────────────────────────────────────────────────────────╮
  │                                                                │
  │      New major version of npm available! 6.14.11 → 8.19.2      │
  │   Changelog: https://github.com/npm/cli/releases/tag/v8.19.2   │
  │               Run npm install -g npm to update!                │
  │                                                                │
  ╰────────────────────────────────────────────────────────────────╯

➜  vlist

执行脚本命令

➜ ffmpeg node transVideo2Jpg.js

准备开始处理
处理结束
文件名: .DS_Store
文件路径: .DS_Store
文件名: a1.mp4
文件路径: a1.mp4
当前指令: ./ffmpeg -ss 00:00:00 -t 00:00:01 -i /Users/jalen/Desktop/inv/ffmpeg/vlist/a1.mp4 -an -f image2 -s 640:1136 /Users/jalen/Desktop/inv/ffmpeg/vlist/images/a1.jpg
文件名: a2.mp4
文件路径: a2.mp4
当前指令: ./ffmpeg -ss 00:00:00 -t 00:00:01 -i /Users/jalen/Desktop/inv/ffmpeg/vlist/a2.mp4 -an -f image2 -s 640:1136 /Users/jalen/Desktop/inv/ffmpeg/vlist/images/a2.jpg
文件名: a3.mp4
文件路径: a3.mp4
当前指令: ./ffmpeg -ss 00:00:00 -t 00:00:01 -i /Users/jalen/Desktop/inv/ffmpeg/vlist/a3.mp4 -an -f image2 -s 640:1136 /Users/jalen/Desktop/inv/ffmpeg/vlist/images/a3.jpg
文件名: a4.mp4
文件路径: a4.mp4
当前指令: ./ffmpeg -ss 00:00:00 -t 00:00:01 -i /Users/jalen/Desktop/inv/ffmpeg/vlist/a4.mp4 -an -f image2 -s 640:1136 /Users/jalen/Desktop/inv/ffmpeg/vlist/images/a4.jpg
文件名: images
文件路径: images
当前指令: ./ffmpeg -ss 00:00:00 -t 00:00:01 -i /Users/jalen/Desktop/inv/ffmpeg/vlist/images -an -f image2 -s 640:1136 /Users/jalen/Desktop/inv/ffmpeg/vlist/images/images.jpg
执行的结果: {"killed":false,"code":1,"signal":null,"cmd":"./ffmpeg -ss 00:00:00 -t 00:00:01 -i /Users/jalen/Desktop/inv/ffmpeg/vlist/images -an -f image2 -s 640:1136 /Users/jalen/Desktop/inv/ffmpeg/vlist/images/images.jpg"}
/Users/jalen/Desktop/inv/ffmpeg/vlist/images/images.jpg success...
执行的结果: {"killed":false,"code":234,"signal":null,"cmd":"./ffmpeg -ss 00:00:00 -t 00:00:01 -i /Users/jalen/Desktop/inv/ffmpeg/vlist/a4.mp4 -an -f image2 -s 640:1136 /Users/jalen/Desktop/inv/ffmpeg/vlist/images/a4.jpg"}
/Users/jalen/Desktop/inv/ffmpeg/vlist/images/a4.jpg success...
执行的结果: {"killed":false,"code":234,"signal":null,"cmd":"./ffmpeg -ss 00:00:00 -t 00:00:01 -i /Users/jalen/Desktop/inv/ffmpeg/vlist/a3.mp4 -an -f image2 -s 640:1136 /Users/jalen/Desktop/inv/ffmpeg/vlist/images/a3.jpg"}
/Users/jalen/Desktop/inv/ffmpeg/vlist/images/a3.jpg success...
执行的结果: {"killed":false,"code":234,"signal":null,"cmd":"./ffmpeg -ss 00:00:00 -t 00:00:01 -i /Users/jalen/Desktop/inv/ffmpeg/vlist/a2.mp4 -an -f image2 -s 640:1136 /Users/jalen/Desktop/inv/ffmpeg/vlist/images/a2.jpg"}
/Users/jalen/Desktop/inv/ffmpeg/vlist/images/a2.jpg success...
执行的结果: {"killed":false,"code":234,"signal":null,"cmd":"./ffmpeg -ss 00:00:00 -t 00:00:01 -i /Users/jalen/Desktop/inv/ffmpeg/vlist/a1.mp4 -an -f image2 -s 640:1136 /Users/jalen/Desktop/inv/ffmpeg/vlist/images/a1.jpg"}
/Users/jalen/Desktop/inv/ffmpeg/vlist/images/a1.jpg success...

在这里插入图片描述

在这里插入图片描述

完结撒花,欢迎老铁们点赞加关注呀~~~。

猜你喜欢

转载自blog.csdn.net/admin_jalen/article/details/127482364
今日推荐