小智 27
这是另一个解决方案。
gphoto2支持的相机列表:http : //gphoto.org/proj/libgphoto2/support.php
您需要安装gphoto、v4l2loopback-utils和ffmpeg。
然后
sudo modprobe v4l2loopback
Run Code Online (Sandbox Code Playgroud)
和
gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video1
Run Code Online (Sandbox Code Playgroud)
现在您拥有来自数码相机的网络摄像头。
hel*_*ood 18
这可以完成,但需要多个步骤。首先,您必须安装gphoto和v4l2loopback-utils.
sudo apt-get install gphoto2 v4l2loopback-utils
通过 USB 插入您的相机(当相机自动安装时,将其卸载)。然后运行gphoto2 --abilities以查看您的相机是否能够执行此操作。这是连接佳能 EOS 1200D 时的输出
然后运行sudo modprobe v4l2loopback以激活从您的相机创建视频设备所需的内核模块。
我已经看到了这个任务旧的教程,使用GST推出-0.10来实现这个任务的一个步骤(例如这一个)。我正在使用使用 gst-launch-1.0 的 Ubuntu 17.04。以下是从数码相机创建视频设备的更新命令:
gphoto2 --stdout --capture-movie | gst-launch-1.0 fdsrc ! decodebin3 name=dec ! queue ! videoconvert ! v4l2sink device=/dev/video1
这将在 中创建一个视频设备/dev/video1,您现在可以在 VLC 等程序中使用它。
如果您看到有关正在使用的设备的任何错误,您需要gvfs-gphoto2-volume-monitor通过运行killall gvfs-gphoto2-volume-monitor.
我能够使用佳能 DSLR 600D 进行视频和图像录制
sudo apt get install guvcview ffmpeg gphoto2 v4l2loopback-dkms v4l2loopback-utils ffmpeg
插入相机,任何模式似乎都可以工作,用基础测试:
准备
sudo modprobe v4l2loopback
killall gvfs-gphoto2-volume-monitor
Run Code Online (Sandbox Code Playgroud)
测试
lsusb
gphoto2 --auto-detect
LANG=C gphoto2 --summary
LANG=C gphoto2 --list-all-config
Run Code Online (Sandbox Code Playgroud)
尝试
gphoto2 --capture-image
gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video1
Run Code Online (Sandbox Code Playgroud)
可视化(在另一个终端中)
guvcview
或者
guvcview-brlin.guvcview
您可以尝试不同的/dev/video1命令
解压:https : //sourceforge.net/projects/eos-movrec/files/eos-movrec/0.3.3_beta/eos-movrec-0.3.3_beta.zip/download
cd eos-movrec-0.3.2_beta
sudo apt install libgphoto2-dev
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
Run Code Online (Sandbox Code Playgroud)
小智 6
我发现这对我非常有用,并且它确实适用于我的 Canon 5D Mark 3
如何将数码单反相机用作网络摄像头
OBS 是一款用于直播和录制演示或培训的出色工具。它还可用于创建虚拟网络摄像头,作为 Jitsi、Skype 和 Zoom 等工具的输入。我们很多人都有良好的 DSLR 型相机,它们可以充当网络摄像头,用于输入 OBS(以及任何其他可以使用网络摄像头源的工具)。这使您可以使用高质量相机进行视频输入,并为您提供使用数码相机所获得的完全控制权。在本视频中,我将向您展示如何使用几乎任何相机作为 OBS 的网络摄像头,而无需任何特殊的软件或硬件适配器。您所需要的只是一台相机和一根 USB 电缆。这是使用 gphoto2、ffmpeg 和 v42loopback 的组合来实现的。
确保您的相机品牌和型号受支持。您可以在http://gphoto.org/proj/libgphoto2/support.php找到此方法支持的相机列表。 幸运的是,我的佳能相机都受支持。您将需要支持的相机和 USB 电缆来将相机连接到计算机。
设置相机,使其不会自动关闭。在我的 Canon 6D Mark ii 上,扳手屏幕 2 上显示“自动关闭电源:禁用”。
如果启用了后退按钮对焦,则需要在半按快门键时将焦点设置回来。如果您使用后退按钮焦点,您已经知道如何执行此操作。如果您保留后退按钮对焦,您将收到与半按快门按钮相关的错误。
如果您没有安装gphoto2,则需要先安装它。
sudo apt install -y gphoto2
Run Code Online (Sandbox Code Playgroud)
如果您没有安装视频环回驱动程序,则需要先安装它。
sudo apt install -y v4l2loopback-utils
Run Code Online (Sandbox Code Playgroud)
如果没有安装ffmpeg,需要先安装。
sudo apt install -y ffmpeg
Run Code Online (Sandbox Code Playgroud)
通过 USB 插入相机(如果相机自动安装,则卸载它),方法是在文件管理器(如果使用 Gnome,则为 Nautilus)中选择相机,然后右键单击,然后从弹出菜单中选择“卸载”。
启用并确定虚拟视频设备 首先卸载 v4l2loopback,以便您可以确定它正在创建哪个设备。
sudo rmmod v4l2loopback
Run Code Online (Sandbox Code Playgroud)
忽略任何错误。
列出所有视频设备,以便您知道下一个是哪一个
ls /dev/video*
您将看到类似的信息
/dev/video0 /dev/video1
,表明我的计算机上已存在视频设备。如果您在这里看不到任何内容,则说明您没有视频设备。
激活v4l2loopback运行
sudo modprobe v4l2loopback exclusive_caps=1 max_buffers=2
Run Code Online (Sandbox Code Playgroud)
激活内核模块(“环回驱动程序”),以便从 DSLR 相机创建视频设备。
列出所有视频设备,以便您知道要使用哪一个
ls /dev/video*
您将看到类似的内容
/dev/video0 /dev/video1 /dev/video2
最后一个将是环回驱动程序使用的设备,在本例中为 video2。
测试 现在您可以使用 gphoto 2 进行一些测试。列出自动检测到的相机及其已连接的端口。
gphoto2 --auto-detect
Run Code Online (Sandbox Code Playgroud)
你会看到类似的东西:
Model Port
----------------------------------------------------------
Canon EOS 6d Mark II usb:001,013
Run Code Online (Sandbox Code Playgroud)
捕获视频并将其输出到虚拟网络摄像头设备
gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video2
Run Code Online (Sandbox Code Playgroud)
这就对了。现在您可以将其添加到 OBS 中的源中。
由于免费和开源软件,一切都很简单,而且完全免费。