无法打开 V4L2 设备‘/dev/video0’

无法打开 V4L2 设备‘/dev/video0’

我一直尝试使用以下命令将我的 DSLR 设置为网络摄像头:gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -threads 0 -f v4l2 /dev/video0但这会导致以下错误:

hutber@hutber:~/v4l2loopback-master$ gphoto2 --stdout --capture-movie | ffmpeg -i - -vcodec rawvideo -threads 0 -f v4l2 /dev/video4
ffmpeg version N-49161-g50e194e6e1-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
  libavutil      56. 30.100 / 56. 30.100
  libavcodec     58. 53.101 / 58. 53.101
  libavformat    58. 28.101 / 58. 28.101
  libavdevice    58.  7.100 / 58.  7.100
  libavfilter     7. 55.100 /  7. 55.100
  libswscale      5.  4.101 /  5.  4.101
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
Capturing preview frames as movie to 'stdout'. Press Ctrl-C to abort.
[mjpeg @ 0x6d04900] Format mjpeg detected only with low score of 25, misdetection possible!
Input #0, mjpeg, from 'pipe:':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: mjpeg (Baseline), yuvj422p(pc, bt470bg/unknown/unknown), 640x426, 25 tbr, 1200k tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> rawvideo (native))
[video4linux2,v4l2 @ 0x6d07d00] Unable to open V4L2 device '/dev/video4'
Could not write header for output file #0 (incorrect codec parameters ?): No such file or directory
Error initializing output stream 0:0 -- 
Conversion failed!

然而,这个错误会创建虚拟设备,但同时无法访问

hutber@hutber:~/v4l2loopback-master$ v4l2-ctl --list-devices
Dummy video device (0x0000) (platform:v4l2loopback-000):
    /dev/video2

Failed to open /dev/video0: No such file or directory

我希望 /dev/video0 可以用作网络摄像头,并且相信问题出在 v412 的某个地方。

[编辑]

重新启动机器后,我现在看到:

hutber@hutber:~$ v4l2-ctl --list-devices
Failed to open /dev/video0: No such file or directory

它说有一个虚拟视频设备,但是当我尝试使用虚拟视频时我看不到任何设备。

在此处输入图片描述

答案1

无法打开 V4L2 设备‘/dev/video0’

或者

无法打开 /dev/video0:没有此文件或目录

两个潜在问题:

  • 错误video数字。该数字可能根据现有网络摄像头的数量而变化。检查ls /dev/video*或的输出v4l2-ctl --list-devices
  • v4l2loopback 模块未启用或安装。如果您已安装 v4l2loopback,请运行。然后检查或sudo modprobe v4l2loopback的输出。如果您尚未安装,请参见ls /dev/video*v4l2-ctl --list-devicesffmpeg 有没有办法将视频发送到/dev/video0Ubuntu 上?

yuvj422p 的未知 V4L2 像素格式等效项

V4L2 输出设备仅支持有限数量的像素格式. 添加格式过滤器为您的命令提供兼容的像素格式:

gphoto2 --stdout --capture-movie | ffmpeg -i - -vf format=yuv420p -f v4l2 /dev/video0

答案2

对我来说,问题在于我的ffmpeg是通过 snap 安装的,最初无法访问相机。

跑步

snap connect ffmpeg:camera

修复。

相关内容