x-r*_*ray 5 linux webcam ffmpeg
我正在寻找一种命令行工具,它可以尽可能快地从网络摄像头拍摄照片并将其写入标准输出。此外,我希望能够指定输入格式、分辨率和输出格式等设置。
我的第一次尝试是 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 请求。它需要快速,因为拍照会阻塞机器中的机械过程。
对于我的网络摄像头,fswebcam不到半秒即可拍摄一张照片:
$ time fswebcam test1.jpg
...
real 0m0.491s
user 0m0.024s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)
写入标准输出然后保存需要更长的时间:
$ time fswebcam - > test2.jpg
...
real 0m0.538s
user 0m0.029s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)
您还可以每n秒拍摄一次图像( --loop n),如果这是您所需要的(您没有解释为什么您希望它尽可能快,以及循环是否或如何提供帮助)。
您可以使用 所示的控件使图像变亮或调整对比度等fswebcam --list-controls。
| 归档时间: |
|
| 查看次数: |
11704 次 |
| 最近记录: |