我正在寻找一种命令行工具,它可以尽可能快地从网络摄像头拍摄照片并将其写入标准输出。此外,我希望能够指定输入格式、分辨率和输出格式等设置。
我的第一次尝试是 ffmpeg:
ffmpeg -f video4linux2 -video_size 1920x1080 -input_format yuyv422 -i /dev/video0 -f image2 -frames:v 1 -qscale:v 2 pipe:1
Run Code Online (Sandbox Code Playgroud)
但是,这有两个缺点:
将图像写入stdout大约需要3秒钟,这似乎是由于网络摄像头需要初始化的时间。
以这种方式拍摄的照片相当暗,可能是网络摄像头需要捕获视图视频帧以调整亮度等。
我的下一个想法是从网络摄像头连续捕获视频帧(即“保持网络摄像头处于活动状态”),将这些视频帧流式传输到某处,然后抓取单个视频帧并按需将它们转换为图像。但是,我不知道该怎么做(以及是否有更好的方法)。
编辑:我需要一个一次性命令将图像写入标准输出,所以我可以在 http 服务器中使用它来提供 http GET 请求。它需要快速,因为拍照会阻塞机器中的机械过程。