使用数码相机(佳能)作为网络摄像头

Fah*_*ene 30 webcam camera

我不能使用我的数码相机(佳能 ixus 160)作为网络摄像头,有没有相关的应用程序?还是只是在设置中?

小智 27

这是另一个解决方案。

gphoto2支持的相机列表:http : //gphoto.org/proj/libgphoto2/support.php

您需要安装gphotov4l2loopback-utilsffmpeg

然后

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)

现在您拥有来自数码相机的网络摄像头。

  • 我收到此错误(从顶部剪切): Input #0, mjpeg, from 'pipe:': Duration: N/A, bitrate: N/A Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown /unknown), 1056x704, 25 tbr, 1200k tbn, 25 tbc 流映射:流 #0:0 -> #0:0 (mjpeg (native) -> rawvideo (native)) [swscaler @ 0x559c14f77de0] 已弃用像素格式确保您没有正确设置范围 [v4l2 @ 0x559c14f42fc0] ioctl(VIDIOC_G_FMT):无效参数无法为输出文件 #0 写入标头(编解码器参数不正确?):无效参数错误初始化输出流 0:0 -- 转换失败!➜ ~ (3认同)

hel*_*ood 18

这可以完成,但需要多个步骤。首先,您必须安装gphotov4l2loopback-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.

  • 我明白了:`➜ ~ gphoto2 --stdout --capture-movie | gst-launch-1.0 fdsrc !decodebin3 名称=dec !队列 !视频转换!v4l2sink device=/dev/video1 将管道设置为 PAUSED ... Nehme Vorschaubilder als Film in 'stdout' auf。Drücke Ctrl-C zum abbrechen。错误:管道不想暂停。错误:来自元素 /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: »/dev/video1« ist kein Wiedergabegerät。附加调试信息: v4l2_calls.c(642): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Capabilities: 0x5200001 Setting pipeline to NULL ... Freeing pipeline ...` (6认同)

Jon*_*han 8

我能够使用佳能 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命令

还有EOS Movie Recorder

解压: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)

  • 谢谢。我使用它然后在 OBS 中捕获窗口“gphoto2 --stdout --capture-movie | ffplay -” (3认同)

小智 6

我发现这对我非常有用,并且它确实适用于我的 Canon 5D Mark 3

如何将数码单反相机用作网络摄像头

OBS 是一款用于直播和录制演示或培训的出色工具。它还可用于创建虚拟网络摄像头,作为 Jitsi、Skype 和 Zoom 等工具的输入。我们很多人都有良好的 DSLR 型相机,它们可以充当网络摄像头,用于输入 OBS(以及任何其他可以使用网络摄像头源的工具)。这使您可以使用高质量相机进行视频输入,并为您提供使用数码相机所获得的完全控制权。在本视频中,我将向您展示如何使用几乎任何相机作为 OBS 的网络摄像头,而无需任何特殊的软件或硬件适配器。您所需要的只是一台相机和一根 USB 电缆。这是使用 gphoto2、ffmpeg 和 v42loopback 的组合来实现的。

  1. 确保您的相机品牌和型号受支持。您可以在http://gphoto.org/proj/libgphoto2/support.php找到此方法支持的相机列表。 幸运的是,我的佳能相机都受支持。您将需要支持的相机和 USB 电缆来将相机连接到计算机。

  2. 设置相机,使其不会自动关闭。在我的 Canon 6D Mark ii 上,扳手屏幕 2 上显示“自动关闭电源:禁用”。

  3. 如果启用了后退按钮对焦,则需要在半按快门键时将焦点设置回来。如果您使用后退按钮焦点,您已经知道如何执行此操作。如果您保留后退按钮对焦,您将收到与半按快门按钮相关的错误。

  4. 如果您没有安装gphoto2,则需要先安装它。

    sudo apt install -y gphoto2
    
    Run Code Online (Sandbox Code Playgroud)
  5. 如果您没有安装视频环回驱动程序,则需要先安装它。

    sudo apt install -y v4l2loopback-utils
    
    Run Code Online (Sandbox Code Playgroud)
  6. 如果没有安装ffmpeg,需要先安装。

    sudo apt install -y ffmpeg
    
    Run Code Online (Sandbox Code Playgroud)
  7. 通过 USB 插入相机(如果相机自动安装,则卸载它),方法是在文件管理器(如果使用 Gnome,则为 Nautilus)中选择相机,然后右键单击,然后从弹出菜单中选择“卸载”。

  8. 启用并确定虚拟视频设备 首先卸载 v4l2loopback,以便您可以确定它正在创建哪个设备。

    sudo rmmod v4l2loopback
    
    Run Code Online (Sandbox Code Playgroud)

    忽略任何错误。

  9. 列出所有视频设备,以便您知道下一个是哪一个 ls /dev/video* 您将看到类似的信息 /dev/video0 /dev/video1 ,表明我的计算机上已存在视频设备。如果您在这里看不到任何内容,则说明您没有视频设备。

  10. 激活v4l2loopback运行

    sudo modprobe v4l2loopback exclusive_caps=1 max_buffers=2
    
    Run Code Online (Sandbox Code Playgroud)

激活内核模块(“环回驱动程序”),以便从 DSLR 相机创建视频设备。

  1. 列出所有视频设备,以便您知道要使用哪一个 ls /dev/video* 您将看到类似的内容 /dev/video0 /dev/video1 /dev/video2 最后一个将是环回驱动程序使用的设备,在本例中为 video2。

  2. 测试 现在您可以使用 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)
  3. 捕获视频并将其输出到虚拟网络摄像头设备

    gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video2
    
    Run Code Online (Sandbox Code Playgroud)
  4. 这就对了。现在您可以将其添加到 OBS 中的源中。

由于免费和开源软件,一切都很简单,而且完全免费。