文档背景
工作中需要做一个windows客户端程序,需要对视频文件做对应的处理。刚好ffmpeg是高效且开源的工具,于是综合百度,和自己的理解,对实战需要的内容进行记录。
1、ffmpeg是一个指令型语言
因为ffmpeg是一个基于shell脚本运行的语言,需要输入对应的指令才可以对视频文件进行处理。所以不管是前端还是后端,都需要利用cmd指令去操作。
客户端使用shell的工具
import _ from 'lodash'
import shell from 'any-shell-escape'
import child_process from 'child_process'
function runShellCommand(arr) {
return new Promise((resolve, reject) => {
const command = shell(arr)
exec(command, (err) => {
if (err) {
reject(err)
} else {
resolve()
}
})
})
}
function runShellCommandString(str) {
return new Promise((resolve, reject) => {
exec(str, (err) => {
if (err) {
reject(err)
} else {
resolve()
}
})
})
}
2、ffmpeg合并视频
百度了一下,合并视频大约有三种方法
- 第一种,直接合并
ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c copy merge.ts
- 第二种,通过txt文件做索引文件来合并视频.
首先新建一个index.txt文件,输入文件内容 file video01.ts \n file video02.ts以此类推你想合并的视频名称。输入指令 ffmpeg -f concat -i filelist.txt -c copy output.avi
- 第三种,用得少,不管
3、实战
直接转载一篇实战文档: https://zhuanlan.zhihu.com/p/402824002