VLC 无法打开 MRL 'file:///dev/video0'。查看日志以获取详细信息

Cha*_*eep 5 usb vlc-media-player vlan ubuntu-16.04

我正在使用带有 VLC 3.0.4 (Vetinari) 的 Ubuntu 16.04。我想使用带有 USB 摄像头的 VLC 3.0.4 进行渲染。VLC 说

VLC 无法打开 MRL 'file:///dev/video0'。检查日志以获取详细信息。

谷歌搜索对此有点帮助,但没有出现。

我试过的是:

  • 在这些链接上试验这个这个这个
  • 我有一个旧版本的 VLC (2.2.8),同样的 USB 摄像头工作正常。

我的视频组给出如下

xxxx-z3@xxxx-z3:~$ grep video /etc/group
video:x:44:xxxx-z3,vdr,root
Run Code Online (Sandbox Code Playgroud)

USB 摄像头具有以下权限:

xxxx-z3@xxxx-z3:~$ ll /dev/video0 
crwsrwsrwt+ 1 root video 81, 0 Dec 27 18:40 /dev/video0
Run Code Online (Sandbox Code Playgroud)

lsusb 输出

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 413c:2003 Dell Computer Corp. Keyboard
Bus 001 Device 016: ID 046d:081b Logitech, Inc. Webcam C310
Bus 001 Device 015: ID 22b8:2e24 Motorola PCS 
Bus 001 Device 007: ID 0461:4e22 Primax Electronics, Ltd 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么 VLC 3.0.4 无法打开 /dev/video0设备?

来自 VLC 的日志,调试消息级别为 2。

来自调试级别 2 的 vlc 消息的日志:

qt 调试:项目 v4l2-dev

qt 调试:项目 v4l2-vbidev

qt 调试:项目 v4l2-chroma

qt 调试:项目 v4l2-input

qt 调试:项目 v4l2-audio-input

qt 调试:项目 v4l2-width

qt 调试:项目 v4l2-height

qt 调试:项目 v4l2-纵横比

qt 调试:项目 v4l2-fps

qt 调试:项目 v4l2-radio-dev

qt 调试:项目 v4l2-tuner-frequency

qt 调试:项目 v4l2-tuner-audio-mode

qt 调试:项目 v4l2-controls-reset

qt 调试:项目 v4l2-亮度

qt 调试:项目 v4l2-brightness-auto

qt 调试:项目 v4l2-对比

qt 调试:项目 v4l2-saturation

qt 调试:项目 v4l2-hue

qt 调试:项目 v4l2-hue-auto

qt 调试:项目 v4l2-white-balance-temperature

qt 调试:项目 v4l2-auto-white-balance

qt 调试:项目 v4l2-red-balance

qt 调试:项目 v4l2-blue-balance

qt 调试:项目 v4l2-gamma

qt 调试:项目 v4l2-autogain

qt 调试:项目 v4l2-gain

qt 调试:项目 v4l2-清晰度

qt 调试:项目 v4l2-chroma-gain

qt 调试:项目 v4l2-chroma-gain-auto

qt 调试:项目 v4l2-power-line-frequency

qt 调试:项目 v4l2-backlight-compensation

qt 调试:项目 v4l2-band-stop-filter

qt 调试:项目 v4l2-hflip

qt 调试:项目 v4l2-vflip

qt 调试:项目 v4l2-rotate

qt 调试:项目 v4l2-color-killer

qt 调试:项目 v4l2-color-effect

qt 调试:项目 v4l2-audio-volume

qt 调试:项目 v4l2-audio-balance

qt 调试:项目 v4l2-audio-mute

qt 调试:项目 v4l2-audio-bass

qt 调试:项目 v4l2-audio-treble

qt 调试:项目 v4l2-audio-loudness

qt 调试:项目 v4l2-set-ctrls

main debug:处理请求项:v4l2:///dev/video1,节点:播放列表,跳过:0

主要调试:重建当前 - 根播放列表的数组

主要调试:重建完成 - 1 项,索引 0

主要调试:开始播放新项目

主要调试:在 v4l2:///dev/video1 上重新同步

主要调试:v4l2:///dev/video1 在 0

主要调试:创建新的输入线程

主要调试:为“v4l2:///dev/video1”创建输入

主要调试:为新的输入线程请求艺术

主要调试:使用 50 MiB 的时移粒度

主要调试:使用默认时移路径

主要调试:v4l2:///dev/video1' gives accessv4l2' demuxany' path /dev/video1'

主要调试:创建 demux:access='v4l2' demux='any' location='/dev/video1' file='/dev/video1'

主要调试:寻找匹配“v4l2”的 access_demux 模块:21 个候选

v4l2 调试:打开设备'/dev/video1'

v4l2 错误:无法打开设备“/dev/video1”:不允许操作

v4l2 调试:打开设备'/dev/video1'

v4l2 错误:无法打开设备“/dev/video1”:不允许操作

主要调试:寻找与“any”匹配的元提取器模块:1 个候选

主要调试:没有匹配的 access_demux 模块

主要调试:创建访问:v4l2:///dev/video1

lua 调试:在 /home/vijay/snap/vlc/768/.local/share/vlc/lua/meta/fetcher 中尝试 Lua 脚本

主要调试:(路径:/dev/video1)

主要调试:寻找匹配“v4l2”的访问模块:26 个候选

lua 调试:在 /snap/vlc/768/usr/lib/vlc/lua/meta/fetcher 中尝试 Lua 脚本

lua 调试:在 /snap/vlc/768/usr/share/vlc/lua/meta/fetcher 中尝试 Lua 脚本

v4l2 调试:打开设备'/dev/video1'

主要调试:没有匹配的元提取模块

v4l2 错误:无法打开设备“/dev/video1”:不允许操作

主要调试:没有匹配的访问模块

主要调试:寻找匹配“any”的艺术查找器模块:2个候选

主要调试:死输入

主要调试:在没有请求的情况下更改项目(当前 0/1)

主要调试:没什么可玩的

lua 调试:在 /home/vijay/snap/vlc/768/.local/share/vlc/lua/meta/art 中尝试 Lua 脚本

lua 调试:在 /snap/vlc/768/usr/lib/vlc/lua/meta/art 中尝试 Lua 脚本

lua 调试:尝试 Lua 播放列表脚本 /snap/vlc/768/usr/lib/vlc/lua/meta/art/00_musicbrainz.luac

lua 调试:跳过脚本(不匹配的范围)/snap/vlc/768/usr/lib/vlc/lua/meta/art/00_musicbrainz.luac

lua 调试:尝试 Lua 播放列表脚本 /snap/vlc/768/usr/lib/vlc/lua/meta/art/01_googleimage.luac

lua调试:跳过脚本(不匹配的范围)/snap/vlc/768/usr/lib/vlc/lua/meta/art/01_googleimage.luac

lua 调试:尝试 Lua 播放列表脚本 /snap/vlc/768/usr/lib/vlc/lua/meta/art/02_frenchtv.luac

lua 调试:跳过脚本(不匹配的范围)/snap/vlc/768/usr/lib/vlc/lua/meta/art/02_frenchtv.luac

lua 调试:尝试 Lua 播放列表脚本 /snap/vlc/768/usr/lib/vlc/lua/meta/art/03_lastfm.luac

lua调试:跳过脚本(不匹配的范围)/snap/vlc/768/usr/lib/vlc/lua/meta/art/03_lastfm.luac

lua 调试:在 /snap/vlc/768/usr/share/vlc/lua/meta/art 中尝试 Lua 脚本

主要调试:没有匹配的艺术查找器模块

Dee*_*ter 0

该链接比我解释得更好:https://www.tldp.org/HOWTO/Webcam-HOWTO/dev-intro.html

video0尝试在目录中重新创建点头,/dev看看是否可以解决您的问题。

sudo mknod /dev/video0 c 81 0
sudo chown root:video /dev/video0
sudo chmod 660 /dev/video0
Run Code Online (Sandbox Code Playgroud)

如果此后仍有问题,请尝试重新启动。

/dev文件不是普通文件,例如.txt文件,但它们是设备的接口,例如节点,最重要的是它们并不真正驻留在您(我们的)磁盘上。

/dev文件代表连接到计算机上的设备,驻留文件是运行时创建的。

恢复该文件的最简单的解决方案是重新启动计算机。(当你关闭计算机电源时,/dev为空)

作为替代方案,拔下并插入相关设备应该具有相同的效果。

实验性(不知道这是否有效): file://localhost/Volumes/DATA-DISK/Media/Video0

其他链接: https://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples/ https://itsfoss.com/vlc-pro-tricks-linux/

图片来源: Bernard Weimattia.b89

编辑:2018 年 12 月 28 日

/dev/video0:权限被拒绝

事实证明,该错误不是错误,如果您输入“asidjaisjdiajsdiasd”,您将在日志中得到相同的响应,所以问题的解决方案是:

 $ sudo chown user.group /dev/shm/usb-*
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请尝试:

http://www.webupd8.org/2011/02/get-your-usb-drives-to-work-with.html

Ubuntu 12.04 及更高版本中默认不安装“用户和组”,因此您必须首先安装它:

sudo apt-get install gnome-system-tools
Run Code Online (Sandbox Code Playgroud)

截屏

您必须授予用户(您)使用视频设备的权限。去 System > Administration > Users and Groups。解锁并选择您的用户名。在用户权限中,您必须启用“从电视或网络摄像头捕获视频,并使用 3d 加速”或“使用视频设备”注销并登录。

第三种解决方案是定义自己的路径。让我知道新解决方案的工作原理。如果它不起作用,我会发布详细的清单以重新定义您的路径。