有时,我们需要执行一些不同寻常的任务,例如,我们有一段视频,需要从中获取缩略图。在本文中,我们将使用 FFmpeg 和带有 Javascript 的 Node.JS 来完成这些任务。
首先,请确保您拥有 FFmpeg,如果您使用的是类 Debian 发行版,则可以使用 APT。FFmpeg 是一款强大的音频和视频处理工具。
sudo apt install ffmpeg
也可以访问此FFmpeg官网下载并安装适合您的操作系统的软件包。
现在,让我们从 Node.JS 子进程模块中导入 spawn 函数:
const { spawn } = require('node:child_process');
之后定义一些变量:
const file = 'input.mp4';
const output = 'output.png';
const takeAtSecond = '1';
const numberOfFrames = '1';
现在,使用 spawn 调用 FFmpeg 从视频中获取图像。spawn 方法会为我们生成一个流,FFmpeg 会将所有输出日志写入 stderr。下面我们来看看完整的代码。
const ffmpeg = spawn('ffmpeg', [
'-ss',
takeAtSecond,
'-i',
file,
'-frames',
'1',
output,
]);
ffmpeg.stderr.on('data', (data) => {
console.log(data);
});
ffmpeg.on('exit', () => {
console.log(`Image generated successfully`);
});
看看传给 FFmpeg 的参数:
- -ss: 表示我们要拍摄照片的视频位置,该位置必须是一个时间长度单位,例如 1 表示 1 秒,2ms 表示 2 毫秒。
- -i:表示输入文件,可以是本地文件路径,也可以是互联网上的 HTTP 文件。
- -y:覆盖已存在的输出文件。
- -frames:帧数: 在本例中要写入的帧数,1。
- output:生成图像的文件名。
下面是完整的代码:
const { spawn } = require('node:child_process');
const file = 'input.mp4';
const output = 'output.png';
const takeAtSecond = '1';
const numberOfFrames = '1';
const ffmpeg = spawn('ffmpeg', [
'-ss',
takeAtSecond,
'-i',
file,
'-frames',
numberOfFrames,
output,
'-y',
]);
ffmpeg.stderr.on('data', (data) => {
console.log(data.toString());
});
ffmpeg.on('exit', () => {
console.log(`Image generated successfully`);
});
因此,通过执行代码,我们将获得在项目文件夹中创建的输出文件。
就是这些,希望能对你有所帮助!
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/36450.html