Skip to content

PROTOCOLS(协议)

mpv 支持多种协议用于播放不同来源的媒体内容。

协议列表

mpv:// 协议

mpv://...

mpv 协议。这用于从 URL 处理程序启动 mpv。协议被剥离,其余部分作为正常打开参数传递给播放器。只允许以这种方式打开安全的网络协议。

http:// 和 https://

http://...
https://...

支持许多网络协议,但必须始终指定协议前缀。mpv 永远不会尝试猜测文件名是否实际上是网络地址。始终需要协议前缀。

请注意,并非所有前缀都在此处记录。未记录的前缀要么是已记录协议的别名,要么只是重定向到 FFmpeg 中实现和记录的协议。

data: 受支持,但需要格式为 data://。这是为了避免与文件名的歧义。您也可以使用 lavf://ffmpeg:// 作为前缀。

ytdl://

ytdl://...

默认情况下,youtube-dl 钩子脚本仅查看 http(s) URL。在 URL 前加上 ytdl:// 会强制它始终由脚本处理。这也可以用于调用特殊的 youtube-dl 功能,如按 ID 播放视频或调用搜索。

请记住,您无法通过此传递 youtube-dl 命令行选项,而必须使用 --ytdl-raw-options

标准输入

-

从 stdin 播放数据。

smb://

smb://PATH

从 Samba 共享播放路径。(需要 FFmpeg 支持。)

bd://(蓝光)

bd://[title][/device] --bluray-device=PATH

播放蓝光光盘。自 libbluray 1.0.1 起,您可以通过将 ISO 文件传递给 --bluray-device 来读取它们。

title 可以是:

  • longestfirst(选择默认播放列表)
  • mpls/<number>(选择第 number 个 mpls 播放列表)
  • <number>(选择具有相同索引的播放列表)

mpv 将在加载时列出可用的播放列表。bluray:// 是一个别名。

dvd://

dvd://[title][/device] --dvd-device=PATH

播放 DVD。不支持 DVD 菜单。如果未给出标题,则自动选择最长的标题。不使用 --dvd-device 时,它可能会尝试打开实际的光驱(如果可用且为 OS 实现)。

dvdnav://dvd:// 的旧别名,功能完全相同。

dvb://(数字电视)

dvb://[cardnumber@]channel --dvbin-...

通过 DVB 的数字电视。(仅限 Linux。)

mf://(图像序列)

mf://[@listfile|filemask|glob|printf-format] --mf-...

将一系列图像作为视频播放。

如果 URL 路径以 @ 开头,则将其解释为包含以换行符分隔的图像路径列表的文件路径。如果 URL 路径包含 ,,则将其解释为以 , 分隔的图像路径列表。如果 URL 路径不包含 % 且在 POSIX 平台上,则被解释为 glob,如果未指定则自动附加 *

例如,mf://image-%d.jpg 播放类似 image-1.jpgimage-2.jpgimage-10.jpg 的文件。

cdda://(CD 音频)

cdda://[device] --cdda-device=PATH

播放 CD。您可以使用 --start--end 选项指定章节来选择要播放的特定音轨范围。

bash
# 从第 4 音轨开始,播放第 5 音轨,然后结束
mpv cdda:// --start=#4 --end=#6

lavf://

lavf://...

访问任何 FFmpeg libavformat 协议。基本上,这将 // 之后的字符串直接传递给 libavformat。

av://(libavdevice)

av://type:options

这用于 libavdevice 输入。type 是 libavdevice demuxer 名称,options 是传递给 demuxer 的(伪)文件名。

bash
# 从第一个 v4l 输入播放视频,几乎以最低延迟
mpv av://v4l2:/dev/video0 --profile=low-latency --untimed

avdevice:// 是一个别名。

file://

file://PATH

作为 URL 的本地路径。在某些特殊用例中可能有用。请注意,PATH 本身应以第三个 / 开头以使路径成为绝对路径。

appending://

appending://PATH

播放本地文件,但假定它正在被追加。这对于当前正在下载到磁盘的文件很有用。这将阻塞播放,并且仅在超时约 2 秒后没有新数据追加时才停止播放。

fd://

fd://123

从给定的文件描述符读取数据(例如 123)。这类似于通过 - 将数据通过管道传输到 stdin,但可以使用任意文件描述符。

fdclose://

fdclose://123

类似于 fd://,但文件描述符在使用后关闭。使用此功能时,需要确保相同的 fd URL 只使用一次。

edl://

edl://[edl specification]

将多个文件的部分拼接在一起并播放它们。

slice://

slice://start[-end]@URL

读取流的切片。startend 表示字节范围,并接受 KiBMiB 等后缀。end 是可选的。

bash
# 从 cap.ts 寻找 1 GiB 后开始读取,然后读取到 2 GiB 或文件结尾
mpv slice://1g-2g@cap.ts

# 从 cap.ts 寻找 1 GiB 后开始读取,然后读取到 3 GiB 或文件结尾
mpv slice://1g-+2g@cap.ts

null://

null://

模拟空文件。如果以写入模式打开,它将丢弃所有数据。

memory://

memory://data

使用 data 部分作为源数据。

hex://

hex://data

类似于 memory://,但字符串被解释为十六进制转储。

archive://

archive://[ARCHIVE PATH]|[FILE PATH IN ARCHIVE]

打开归档文件中指定路径的文件。需要启用 libarchive 功能。

bash
# 播放 file.zip 归档中的 video.mkv
mpv "archive://file.zip|video.mkv"

相关链接