Mon*_*Flo 7 raspbian libgphoto2 ptp photobooth
问题:
\n\n我在带有 raspbian os lite 的 raspberry pi 4 上运行 gphoto2。我将它与连接到 USB 的佳能 EOS 100d 一起用作照相亭。摄像机实时视图通过 ffmpeg 和 Motion 传递到 http 地址。到目前为止效果很好。为此运行两个组件:一个运动网络服务器,用于从发送到 /dev/video0\n 的任何内容中获取视频源,以及启动实时视图源的实际 gohoto 命令。为此,我使用命令:
\n\nsudo gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0\nRun Code Online (Sandbox Code Playgroud)\n\n这为我在https://localhost:8081/上提供了一个很好的实时预览,我将其用作照相亭 Web 界面的背景,以便人们可以在按下 \xe2\x80\x9etake picture\xe2\x80\x9c 按钮之前看到自己。
\n\n问题是实时视图现在阻止了与相机的 USB ptp 连接:因此,当我点击 Web 应用程序上的 \xe2\x80\x9etake picture\xe2\x80\x9c 按钮时,它会触发此 gphoto 命令:
\n\nsudo gphoto --capture-image-and-download\nRun Code Online (Sandbox Code Playgroud)\n\n这会产生一些错误,例如:
\n\nCannot execute: error connecting, ptp already in use\nRun Code Online (Sandbox Code Playgroud)\n\n因此,gphoto 实时取景流会封锁捕获图像命令。\n似乎一次只能使用一个 gphoto 功能。\n我该怎么办?
\n\n想法:
\n\n显而易见的是从不同的网络摄像头运行实时视图,但我不\xe2\x80\x98不想这样做,因为它不会准确地反映人们在相机前面的实际位置。
\n\n我的第二个想法是将实时查看命令作为 systemctl 服务启动。这样我就可以轻松启动和停止实时取景:
\n\n# /lib/systemd/system/mygphoto.service\n[Unit]\nDescription=gphoto2 live view service\nAfter=multi-user.target \n\n[Service]\nType=simple\nExecStart=/usr/bin/sudo /bin/bash -lc \'gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0\'\nRestart=on-abort\n\n[Install]\nWantedBy=multi-user.target\nRun Code Online (Sandbox Code Playgroud)\n\n但该服务仅在第一次运行,然后在几次停止和启动后崩溃,并且在重新启动之前永远无法再次运行。
\n\n所以我认为最好的是一个长终端捕获命令,它一次执行以下操作:
\n\n重要的是,在拍照时可以不断地这样做。
\n\n我将非常感谢此命令的任何解决方案想法,甚至一些完全不同的解决方案。以前有人做过类似的事情吗?
\n\n非常感谢您的帮助和建议!
\n| 归档时间: |
|
| 查看次数: |
7335 次 |
| 最近记录: |