nodeJs批量抽取视频某一帧保存为图片

JavaScript019

nodeJs批量抽取视频某一帧保存为图片,第1张

const fs = require('fs')

const PATH = require('path')

const { exec } = require('child_process')

let rootPath = E:\\dev

var saveDir = 'image'

let arr = []

let obj = querydir(rootPath)

var classId = null

function layer(b) {

b.forEach(e =>{

if (e.child &&e.child.length) {

layer(e.child)

} else if (!e.child) {

arr.push(e)

}

})

}

layer(obj)

let str = JSON.stringify(arr, "", "\t")

write('./data.json', str)

/**

/**

function createDir(path) {

// console.log(path)

if (!path) return false

path = path.replace(//[\w_.?=\w\d]+$/, '')

let pathArr = PATH.normalize(path).split('\')

let a = ''

pathArr.forEach(e =>{

a += e

if (!fs.existsSync(a)) {

fs.mkdirSync(a)

}

a += '\'

})

return true

}

我知道的跟nodejs关系不大,可以用ffmpeg 来获取,然后nodejs 调用ffmpeg的命令。

可以获得视频的时长 duration 和 分辨率 272X480 。

然后把输出的内容通过正则获取出来即可。

代码: 具体获取文件路径并判断的我就不写了

var url = 'd:/a.mp4'

var exec = require('child_process').exec

var cp = exec('d:/soft/ffmpeg/bin/ffmpeg -i '+url,function(err,stdout,stderr){

var outStr = stderr.toString()

// console.log(outStr)

var regDuration =/Duration\: ([0-9\:\.]+),/

var rs = regDuration.exec(outStr) 

if(rs[1]){

var timeStr = rs[1]

//获得时长

console.log(timeStr)

}

})

到 http://nodejs.org/ 下载最新版nodejs。【点击免费试用,0成本启动】

https://github.com/webRTC/webrtc.io-demo这个是一个在nodejs下实现webrtc服务端的完整示例。下载zip文件,解压。回到“Node.js command prompt”,使用CD命令切到解压后的目录,输入命令:npm install这个命令会自动安装demo所需nodejs插件。完毕后,查看 ..\site\server.js 里面的端口号,若端口已被占用,修改成可用的端口。同样在“Node.js command prompt”,切到“server.js”的目录,输入命令:node server.jschrome 或 firefox 浏览器,访问 127.0.0.1:8080 就看到示例了。

想要了解更多关于webrtc的相关信息,推荐咨询ZEGO即构科技。公司自成立伊始,就专注自研音视频引擎,在音频前处理、网络自适应和跨平台兼容性等方面,达到国际一流水平,同时充分利用基础云服务商的能力,构建了MSDN海量有序自学习数据网络,服务覆盖全球,涵盖上百个音视频互动业务场景。