我正在写一个爱好项目来处理相机上的文件.以前我发现相机和FolderBrowserDialog有问题.
我认为讨厌的是相机正在使用MTP或PTP(图片传输协议而不是点对点).
为了更加无缝地与相机连接,我想使用PTP或MTP来访问相机.是否有.Net人可以推荐的MTP/PTP包装器?如果可能的话,我很想避免编写我自己的或涉及非托管代码.
我正在尝试运行需要使用 ptp 获取硬件时间戳的软件。因此,我需要/dev/ptp0可用。我在 VMWare 上运行 Linux/Ubuntu。
有没有办法让它在虚拟机上工作?
谢谢!
问题:
\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 …Run Code Online (Sandbox Code Playgroud) 我们正在分析用于控制系统软件的 PTP,并使用 2 台个人计算机的小型设置来测量 PTP 时钟同步的准确性,其中一台作为主机,另一台作为从机。我们目前的设置非常粗糙,我们还没有特级大师。问题是我们的准确度数字(正如我们目前测量的那样,可能不正确)与 PTP 协议声称的标准数字不匹配,并且变化幅度为 10。
作为分析的一部分,我们正在尝试硬件和软件时间戳,并尝试衡量两者的准确性。
我们正在使用 ptp4l 和 ph2sys v1.8 工具。我们当前的准确度测量基于 ptp4l 进程报告的主从偏移。(ptp4l 还报告路径延迟,我们目前不使用这些数字。这些数字在精度测量中是否有任何意义?)
在硬件时间戳中,我们从主设备获得了 >1000 纳秒的偏移量,这远大于 PTP H/W 时间戳约 50 ns 的预期值。
对于软件时间戳,我们从主设备获得预期的偏移量 <100 ?s。

设置和执行的详细信息:
主控: Dell Latitude E6220(Intel 82579LM 千兆以太网控制器)- CentOS7
从机: Dell Latitude E6320(Intel 82579LM 千兆以太网控制器)- CentOS7
网络:速度为 1 GBPS 的以太网电缆
Ethtool 输出:
能力:
hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE)
software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE)
hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE)
software-receive (SOF_TIMESTAMPING_RX_SOFTWARE)
software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE)
Run Code Online (Sandbox Code Playgroud)
PTP 硬件时钟:0
硬件传输时间戳模式:
off (HWTSTAMP_TX_OFF)
on (HWTSTAMP_TX_ON)
Run Code Online (Sandbox Code Playgroud)
硬件接收过滤器模式:
none (HWTSTAMP_FILTER_NONE)
all (HWTSTAMP_FILTER_ALL)
ptpv1-l4-sync (HWTSTAMP_FILTER_PTP_V1_L4_SYNC) …Run Code Online (Sandbox Code Playgroud) ptp ×4
.net ×1
c# ×1
camera ×1
ieee ×1
libgphoto2 ×1
linux ×1
measurement ×1
mtp ×1
photobooth ×1
raspbian ×1
time ×1