我尝试使用 v4l2 环回将我的佳能 EOS M50 添加为网络摄像头,如下所示:
gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0
它可以工作,但是图片是 512x288。
另一方面,Windows 系统上的 SparkoCam 可以以不错的 fps 和对 ISO 等的完全控制从中挤出 1080p 实时取景。图片非常清晰,看起来没有放大(尽管我还没有进行逐像素分析)。无论如何:我如何使用 gphoto2 实现相同或相似的结果?
答案1
使用命令gphoto2 --get-config liveviewsize
获取实时视图尺寸选项。对我来说,它是:0 表示大,1 表示中,2 表示小(我的情况是 Canon M50)。然后您可以将其作为参数传递。如下所示:gphoto2 --set-config liveviewsize=0 --capture-movie
。给出最终命令:
gphoto2 --stdout --set-config liveviewsize=0 --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 -s:v 1920x1080 -r 25 /dev/video2
./dev/video2
我的 DSLR 设备的名称在哪里。
答案2
我也遇到了这个问题。当我使用 entangle 查看我的 Canon M50 的实时预览时,它显示 1024x576 预览图像,所以我知道 Ubuntu 能够流式传输更好的预览。但是,我不知道如何修复 gphoto2 配置以使用它来流式传输 1024x576 预览。
编辑:嗯,现在不知为何它开始工作了。尝试打开 entangle 并多次打开和关闭实时预览,直到分辨率达到 1024x576。然后再次运行 gphoto2,看看分辨率是否已提高到 1024x576。这似乎对我有用。
现在它不起作用了。我不明白为什么。
EDIT2:我想我有一个解决方案。entangle --debug-entangle
在终端中运行。单击 entangle 中的实时预览按钮几次,直到它显示 1024x576 的分辨率。然后按 Ctrl+C 退出 entangle。现在运行gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0
分辨率应设置为 1024x576。