node.js - execSync 和 ffmpeg 执行差距

标签 node.js ffmpeg raspberry-pi child-process

我不确定这是否是一个新问题,但搜索 5 分钟不会产生任何结果。我想使用 ffmpeg 将 10 秒的 mp4 block 捕获到文件中,以便我的其他程序进行后期分析。现在,在下面的代码中。我会看到生成的 mp4 之间有 1-1.5 秒的间隔。只有一个进程可以戳/dev/video0 设备。我知道执行进程、打开/关闭设备和文件 i/o 会产生开销。我怎样才能最大限度地减少差距?谢谢。

const { execSync, exec } = require("child_process");

capture()

function capture() {
while(true) {
  let fileName = getNewFileName();
  let captureCmd = `ffmpeg -hide_banner -loglevel error -t 10 -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 ${fileName}.mp4 -r 1 ${fileName}-%03d.jpg`
  execSync(captureCmd)
}
}
function getNewFileName() {
let date = new Date()

let month = ("0" + date.getMonth()).slice(-2);
let day = ("0" + date.getDay()).slice(-2);
let hour = ("0" + date.getHours()).slice(-2);
let min = ("0" + date.getMinutes()).slice(-2);
let sec = ("0" + date.getSeconds()).slice(-2);

return "output/" + date.getFullYear() + month + day + hour + min + sec;
}
~

最佳答案

这就是段复用器的用途ffmpeg -hide_banner -loglevel error -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 -f segment -segment_time 10 -g 250 ${fileName}-%03d.mp4 -r 1 ${fileName}-%03d.jpg

关于node.js - execSync 和 ffmpeg 执行差距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66961829/

相关文章:

node.js - MongoDB 未使用 graphql 在 Node js 中更新

node.js - ffmpeg : Bitstream not supported by this decoder

video - FFmpeg - 将 1280x720 视频转换为 720x1280 视频并添加模糊

docker - 如何从 Windows 10 操作系统为 ARM32 架构构建 docker 容器镜像?

ios - 将视频从 Raspberry PI 流式传输到 native iOS 应用程序?

git - 树莓派和 GitLab

javascript - 如何检查用户是否存在?

node.js - 带有 Node.js SDK 的 CDN?

javascript - 如何迭代 mustache.js 中的哈希

python - 使用 FFMPEG 命令读取帧并使用 opencv 中的 inshow 函数显示