跳转至内容

VLC 媒体播放器

来自 ArchWiki

来自项目 主页

VLC 是一款自由开源的跨平台多媒体播放器和框架,可播放大多数多媒体文件以及 DVD、音频 CD、VCD 和各种流媒体协议。

安装

安装 vlc 拆分包,它需要安装 VLC 插件子集中的额外包

提示: 若要单独安装插件,请查询软件包数据库以获取 vlc-plugin 开头的可用插件列表。

替代前端

  • vlc-cli — 用于命令行界面(通过 cvlcrvlc 运行)。
  • vlc-gui-ncurses — 用于 ncurses TUI 界面(通过 nvlc 运行)。
  • vlc-gui-skins2 — 用于 skins2 GUI 界面(通过 svlc 运行)。

语言

VLC 的“首选项”菜单中不提供更改语言的选项。但您可以使用 LANGUAGE 环境变量。例如,修改 vlc.desktop 桌面条目来更改

Exec=/usr/bin/vlc %U

更改为

Exec=env LANGUAGE=fr /usr/bin/vlc %U

以将 VLC 界面切换为法语。

皮肤

VLC 可以使用“皮肤”以获得不同的外观。您可以在 皮肤网站 获取皮肤。

要安装皮肤,请下载并将其移动到 ~/.local/share/vlc/skins2/

打开 VLC,点击 工具 > 首选项。当首选项窗口打开时,您应该处于“界面”选项卡中。

选择“使用自定义皮肤”单选按钮,并选择已下载的皮肤。

重启 VLC 以使更改生效。

Web 界面

运行带有 --extraintf=http 参数的 VLC,以同时使用桌面和 Web 界面。--http-host 参数用于指定绑定的地址,默认为 localhost。要设置密码,请使用 --http-password,否则 VLC 将不允许您登录。

$ vlc --extraintf=http --http-host 0.0.0.0 --http-port 8080 --http-password yourpasswordhere

要从图形界面启用 Web 界面,请导航至 视图 > 添加界面 > Web 界面。通过 工具 > 首选项 > 显示设置:全部 > 界面 > 主界面 > Lua > Lua HTTP > 密码 设置密码。

VLC 默认端口为 8080: https://:8080

技巧与提示

通过 VLC 串流 Twitch.tv

请参阅 Streamlink#Twitch

播放来自本地 DLNA 服务器的流媒体内容

如果您发现尝试播放 UPnP/DLNA 内容(通过 视图 > 播放列表 > 本地网络 > 通用即插即用)时,VLC 无法在本地网络上看到 DLNA 服务器,请确保防火墙没有阻止 1900 UDP 端口。开放此端口对于播放本地 UPnP/DLNA 内容至关重要。

使用热键或命令行控制

安装 openbsd-netcat

已归档的 CrunchBang 论坛 获取脚本。

按照脚本中的说明为 VLC 设置 socket。

既可以从命令行运行该脚本,也可以通过您的桌面环境将该脚本注册为快捷键。

或者,您可以使用 MPRIS 与 VLC 进行交互。

也可以使用 ncurses 界面启动 vlc

$ vlc -I ncurses

有关详细信息,请参阅 文档

防止多实例运行

默认情况下,每次使用一个或多个文件启动 VLC 时,它都会打开程序的新实例。如果您使用 VLC 播放音乐库等内容,这可能会很烦人。您可以一次性从文件管理器中选择多个文件来打开它们,或者从菜单中禁用此行为:勾选 工具 > 首选项(将“显示设置”设置为“简单”) > 界面 > 播放列表和实例 > 仅允许一个实例,并勾选 在单实例模式下将项目加入播放列表,这样可以保持当前文件播放并将新打开的文件添加到当前播放列表。

还有一个名为 从文件管理器启动时仅使用一个实例 的选项 — 启用此选项后,通过文件管理器打开的所有文件都将在单个实例中播放。在单实例模式下将项目加入播放列表 选项依然有效。

注意: VLC 目前存在一个 Bug:如果您在未启用 仅允许一个实例 的情况下启用 从文件管理器启动时仅使用一个实例,将无法(取消)勾选 在单实例模式下将项目加入播放列表 选项。

硬件视频加速

请参阅 硬件视频加速

VLC 会自动尝试使用可用的 API,但您可以通过 工具 > 首选项 > 输入/编码器 并在 硬件加速解码 下选择合适的选项来覆盖它,例如 VA-API 的 视频加速 (VA) API 或 VDPAU 的 Video Decode and Presentation API for Unix (VDPAU)

systemd 服务

VLC 的 Web 界面可以由 systemd 启动。首先,您需要创建一个默认用户

# useradd -c "VLC daemon" -d / -G audio -M -p \! -r -s /usr/bin/nologin -U vlcd

现在创建 systemd 服务文件

/etc/systemd/system/vlc.service
[Unit]
Description=VideoOnLAN Service
After=network.target

[Service]
Type=forking
User=vlcd
ExecStart=/usr/bin/vlc --daemon --syslog -I http --http-port 8090 --http-password password
Restart=on-abort

[Install]
WantedBy=multi-user.target

启动启用 vlc.service。使用不含用户名的方式以及您在服务文件中设置的密码登录 http://yourmachine:8090/。

Chromecast 支持

从 3.0 版本(Vetinari 分支)开始,VLC 可以将内容串流至同一网络下的 Chromecast 设备。

安装软件包

  • libmicrodns - VLC 可以发现 Chromecast 设备,并在 播放 > 渲染器 菜单中显示。
  • protobuf - 启用在 播放 > 渲染器 菜单中串流至选定设备的功能。

然后,编辑 /etc/nsswitch.conf 文件,并将 hosts 行修改为在 resolvedns 之前包含 mdns_minimal [NOTFOUND=return]

hosts: ... mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns ...
  • 如果您在解析 .local 主机时遇到延迟,请尝试使用 mdns4_minimal 代替 mdns_minimal
  • 查看 avahi 以了解更多信息。

点击暂停插件

安装 vlc-pause-click-pluginAUR,它允许您通过点击 VLC 窗口内的视频来暂停或恢复播放。这是一种常见的预期行为。

安装后该插件不会立即激活,您需要按照 https://github.com/nurupo/vlc-pause-click-plugin#usage 中的说明在设置中手动启用它。

从 V4L2 AV 采集设备串流

例如,从 USB 网络摄像头或 USB HDMI 采集设备进行实时流式传输。

查找 V4L2 设备的视频设备节点:

$ v4l2-ctl --list-devices
HDMI Capture: HDMI Capture (usb-0000:07:00.1-2):
	/dev/video2
	/dev/video3
	/dev/media1

通常这是第一个列出的 /dev/video* 节点,此处为 /dev/video2

然后,查找采集设备的 PulseAudio 源名称:

$ pactl list short sources | grep --invert-match --regexp=.monitor
(...some devices omitted...)
8750	alsa_input.usb-XF_HDMI_Capture_20000130041415-02.iec958-stereo	PipeWire	s16le 2ch 48000Hz	SUSPENDED

该名称此处为 alsa_input.usb-XF_HDMI_Capture_20000130041415-02.iec958-stereo

使用图形用户界面

打开 VLC 媒体播放器,在顶部菜单栏选择 媒体 > 打开捕获设备...

设备选择 部分,选择 /dev/video2 作为 视频设备名称。将 音频设备名称 留空。1

在左下角勾选 显示更多选项 复选框。应会出现一个 编辑选项 文本框。在此文本框中,在末尾追加以下内容,中间用空格隔开

:input-slave=pulse://alsa_input.usb-XF_HDMI_Capture_20000130041415-02.iec958-stereo

然后点击 播放 按钮。

1 这是因为该输入仅提供并接受 ALSA 设备,而 VLC 通常无法访问它们,因为它们已被 PipeWirePulseAudio 独占。

从命令行

或者,使用以下命令从命令行运行 VLC 媒体播放器

$ vlc --v4l2-standard= --live-caching=300 --input-slave=pulse://alsa_input.usb-XF_HDMI_Capture_20000130041415-02.iec958-stereo -- v4l2:///dev/video2

故障排除

升级后视频损坏或其他问题

有时 VLC 即使在小版本更新中也会出现配置问题。在提交错误报告之前,请移除或重命名您位于 ~/.config/vlc 的配置文件,并确认问题是否仍然存在。

如果您使用的是 AUR 中的 ffmpeg 变体,请确保也对其进行了升级。Pacman 不会在必要时自动升级它,不匹配的版本会导致 VLC 崩溃。

段错误 (Segmentation fault)

启动 VLC 时报错

当启动 VLC 时可能会遇到段错误,在排除诸如 微码 等常规因素后,一种可能的解决方法是运行以下命令

# /usr/lib/vlc/vlc-cache-gen /usr/lib/vlc/plugins

然后重新安装 VLC。

播放视频时报错

如果 VLC 可以打开并播放音频文件,但在播放视频时因段错误而关闭,则说明 硬件视频加速 配置错误,导致 VLC 无法引用图形设备。这尤其常见于在一台计算机上使用多块显卡的情况。

下拉菜单中缺少图标

这可能发生在 XFCE 下,下拉菜单中将不再显示图标,例如 PCI 卡图标。

执行以下命令以重新激活这些图标

$ gconftool-2 --type boolean --set /desktop/gnome/interface/buttons_have_icons true
$ gconftool-2 --type boolean --set /desktop/gnome/interface/menus_have_icons true

未能打开 VDPAU 后端

请参阅 硬件视频加速#无法打开 VDPAU 后端

由于您的系统很可能不支持 VDPAU,您应该告诉 VLC 改用 VA-API,请参阅 #硬件视频加速

VLC 关闭后无法再次打开

本文或本章节的准确性存在争议。

原因: 本 Wiki 页面中的两条语句——“VLC 会自动尝试使用可用的 API”(#硬件视频加速)和“VLC 似乎默认选择 VDPAU,这对许多人来说是损坏的”——似乎存在矛盾/不准确,需要核实。(在 Talk:VLC media player#关于硬件视频加速 中讨论)

在“设置”->“输入/编码器”中手动将 VLC 设置为使用 VA-API 加速后端。VLC 似乎默认选择 VDPAU,这对许多人来说是损坏的。

通过 SFTP 无法播放文件名包含空格的媒体文件

如果 VLC 无法通过 SFTP 播放任何视频或音频文件,请确保已安装 sshfs

如果它拒绝通过 SFTP 播放任何文件名包含空格的媒体文件并始终要求进行身份验证,请将 vlc.desktop 文件中的 Exec 行更改为

Exec=/usr/bin/vlc --started-from-file %F

请参阅 [1]

iOS/tvOS 上的 VLC 无法通过 SFTP 连接到 Arch

由于 App Store 的许可限制,VLC 的 iOS 和 tvOS 应用使用了不完整的 ssh 实现。openssh 需要更改配置以兼容。创建一个文件 /etc/ssh/sshd_config.d/vlc.conf,内容如下

HostKeyAlgorithms +ssh-rsa
KexAlgorithms +diffie-hellman-group16-sha512

然后,重新加载 sshd.service

无法打开 DVD

为了能够通过 媒体 > 打开光盘 播放 DVD,需要安装 VLC 可选依赖项 vlc-plugin-dvdlibdvdcss

某些 DVD 可能需要其他插件,例如 vlc-plugin-dca。或者,安装 vlc-plugins-extra,它将安装上述两个插件以及其他插件。

如果您安装了上述所有软件包但仍无法打开 DVD,请尝试删除您的 ~/.dvdcss 文件夹。这将强制重新下载您的 CSS 密钥,这可能会解决问题。

无法打开蓝光光盘 / 蓝光菜单无法加载

请参阅 Blu-ray#VLC

媒体无法加载

如果某些 RTP、RTSP、DVB-T 流或蓝光光盘看起来在无限缓冲或静默无法加载,且日志中未给出错误消息(例如来自法国 ISP Free 的 IPTV),请安装 vlc-plugin-aribb24

Wayland 支持

vlc-gitAUR 默认构建包含 Wayland 支持。设置 QT_QPA_PLATFORM=wayland 环境变量以启用 Wayland。有关更多信息,请参阅 Wayland#Qt

请注意,尽管 vlc PKGBUILD 使用了 --enable-wayland 构建标志(目前使用的是 VLC 3.0 版本),但无论如何都会使用 Xwayland,因为 VLC 3 上的 Wayland 支持已损坏。除非安装了 xorg-xwayland,否则 VLC 中的视频输出可能会被裁剪或出现其他异常。

使用以下命令,VLC 3 将开始使用 Wayland

$ env -u DISPLAY vlc

这是因为 VLC 3 会在启动时检查 DISPLAY 环境变量,如果未设置则会使用 Wayland。不建议从全局环境中删除 DISPLAY,因为一些较旧的应用程序仍然依赖此变量。

无法连接到 RTSP 流

当连接到 RTSP 流并出现 failed to setup rtsp session 错误时,请 安装 vlc-plugin-live555

安装可选依赖项 vlc-plugin-aribb24

使用 AMDGPU 播放 HEVC 视频时系统无响应

播放使用 HEVC (H265) 编码的视频时,用户可能会遇到系统完全冻结,无法进行任何操作或关机。

这可以通过将 Open GL/GLES 硬件转换器 的设置更改为非 自动 的其他选项(例如 VDPAU OpenGL 表面转换器Wayland 的 VA-API OpenGL 表面转换器)来解决。

请参阅 https://gitlab.freedesktop.org/drm/amd/-/issues/2113#note_1602599

改变播放进度后声音短暂消失

工具 > 首选项(“简单”视图) > 音频 > 输出模块 设置为当前正在使用的音频服务器。(对于 PipeWire,您需要安装 vlc-plugin-pipewireAUR,否则只能使用兼容层。)

VLC 不显示字幕和 OSD

即使您拥有字幕解码插件,如果您缺少 vlc-plugin-freetype(它未包含在 vlc-plugins-base 中,但包含在 vlc-plugins-extra 中),字幕也不会显示在屏幕上(并且消息/控制台也不会有任何错误)。

MKV 文件中的字幕提示“VLC 无法识别音频或视频编码”

如果字幕在从外部文件加载时显示正常,但无法识别 MKV 文件中的嵌入式字幕,则很可能缺少 vlc-plugin-matroska 软件包(它未包含在 vlc-plugins-base 中,但包含在 vlc-plugins-extra 中)。

KDE Plasma 未对 VLC 应用深色主题

请阅读 KDE#Themes 中提示框的第一项。

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.