子进程配合ffmpeg
来源:Node.js
FFmpeg
FFmpeg是一个开源的跨平台多媒体处理工具,可以用于处理音频、视频和多媒体流
它提供了一组强大的命令行工具和库,可以进行视频转码、视频剪辑、音频提取、音视频合并、流媒体传输等操作
FFmpeg的主要功能和特性:
- 格式转换:可以将一个媒体文件从一种格式转换为另一种格式,支持几乎所有常见的音频和视频格式,包括 MP4、AVI、MKV、MOV、FLV、MP3、AAC 等
- 视频处理:可以进行视频编码、解码、裁剪、旋转、缩放、调整帧率、添加水印等操作;例如调整视频的分辨率、剪辑和拼接视频片段,以及对视频进行各种效果处理
- 音频处理:可以进行音频编码、解码、剪辑、混音、音量调节等操作;例如提取音频轨道、剪辑和拼接音频片段,以及对音频进行降噪、均衡器等处理
- 流媒体传输:支持将音视频流实时传输到网络上,可以用于实时流媒体服务、直播和视频会议等应用场景
- 视频处理效率高:是一个高效的工具,针对处理大型视频文件和高分辨率视频进行了优化,可以在保持良好质量的同时提供较快的处理速度
- 跨平台支持:可以在多个操作系统上运行,包括 Windows、MacOS、Linux 等,同时支持多种硬件加速技术,如NVIDIA、CUDA和Intel Quick Sync Video
安装
根据需要根据对应的操作系统下载,下载完后配置环境变量,在命令行中输入ffmpeg -version
时不报错即成功
使用ffmpeg -h
可以查看详细使用方法
使用
视频转gif
-i:输入的文件
1 | const {execSync} = require('child_process') |
这是生成的动图(
添加水印
-vf:video filter
- drawtext:添加文字
- fontsize:字号
- x&y:水平垂直方向
- fontcolor:文字颜色
- text:文字水印内容
1 | const {execSync} = require('child_process') |
视频裁剪+控制大小
- -ss:起始时间
- -to:结束时间
- -ss在-i的前面可能会出现精度问题,因为视频还没被解析,进度就跳转到了相关位置,但这样解析速度快
- -ss在-i的后面不会出现精度问题,但解析速度会变慢
- 两个时间的单位都是秒
1 | const {execSync} = require('child_process') |
提取视频的音频
1 | const {execSync} = require('child_process') |
模糊水印
- w&h:宽高
- x&y:垂直水平坐标
- delogo:用于模糊水印的过滤参数
1 | const {execSync} = require('child_process') |
评论