Skip to content

播放列表

本节介绍 mpv 的播放列表功能和管理方法。

创建播放列表

命令行播放列表

bash
# 播放多个文件
mpv file1.mp4 file2.mp4 file3.mp4

# 使用通配符
mpv *.mp4

# 使用目录
mpv /path/to/videos/

播放列表文件

mpv 支持多种播放列表格式:

M3U/M3U8

m3u
#EXTM3U
#EXTINF:123,Artist - Title
file1.mp4
#EXTINF:456,Artist - Title 2
file2.mp4

PLS

pls
[playlist]
File1=file1.mp4
Title1=Title 1
Length1=120

File2=file2.mp4
Title2=Title 2
Length2=180

NumberOfEntries=2
Version=2

其他格式

  • CUE - 音频 CD 镜像
  • PLS - Winamp 播放列表
  • XSPF - XML 播放列表

播放列表控制

快捷键

快捷键功能
<上一个
>下一个
Enter下一个
Shift+Home第一个
Shift+End最后一个
Shift+<跳转到指定位置

命令行控制

bash
# 播放指定文件
mpv --playlist-start=2 playlist.m3u

# 循环播放列表
mpv --loop-playlist=inf playlist.m3u

# 随机播放
mpv --shuffle playlist.m3u

播放列表选项

循环控制

bash
# 单文件循环
loop-file=inf

# 播放列表循环
loop-playlist=inf

# 循环次数
loop-playlist=3

随机播放

bash
# 启用随机播放
shuffle=yes

# 禁用随机播放
shuffle=no

播放顺序

bash
# 按名称排序
playlist-sort=yes

# 按修改时间排序
playlist-sort=mtime

播放列表脚本

Lua 脚本示例

lua
-- 播放列表管理脚本
local mp = require 'mp'

-- 保存当前播放列表
mp.add_key_binding('ctrl+s', 'save-playlist', function()
    local playlist = mp.get_property_native('playlist')
    local file = io.open('playlist.m3u', 'w')
    
    file:write('#EXTM3U\n')
    for i, entry in ipairs(playlist) do
        file:write('#EXTINF:0,' .. entry.filename .. '\n')
        file:write(entry.filename .. '\n')
    end
    
    file:close()
    mp.osd_message('播放列表已保存')
end)

-- 加载播放列表
mp.add_key_binding('ctrl+l', 'load-playlist', function()
    mp.command('loadlist playlist.m3u')
end)

JavaScript 脚本示例

javascript
// 播放列表管理脚本
mp.add_key_binding('ctrl+s', 'save-playlist', function() {
    const playlist = mp.get_property_native('playlist');
    let content = '#EXTM3U\n';
    
    playlist.forEach(entry => {
        content += `#EXTINF:0,${entry.filename}\n`;
        content += `${entry.filename}\n`;
    });
    
    // 注意:JavaScript 中无法直接写文件
    mp.osd_message('播放列表功能需要 Lua 脚本');
});

播放列表命令

命令列表

bash
# 加载播放列表
loadlist playlist.m3u

# 添加到播放列表
playlist-add file.mp4

# 移除当前文件
playlist-remove current

# 清空播放列表
playlist-clear

# 播放指定文件
playlist-play-index 2

交互式命令

bash
# 显示播放列表
show-text ${playlist}

# 显示当前文件
show-text ${filename}

# 显示播放位置
show-text ${playlist-pos}/${playlist-count}

播放列表模板

模板变量

bash
# 当前文件名
${filename}

# 当前文件路径
${path}

# 播放列表位置
${playlist-pos}

# 播放列表总数
${playlist-count}

# 播放列表标题
${media-title}

自定义显示

bash
# 显示播放列表信息
show-text "播放列表: ${playlist-pos}/${playlist-count}\n当前: ${filename}"

播放列表调试

查看播放列表

bash
# 显示播放列表内容
mpv --playlist=playlist.m3u --term-playing-msg='Playlist: ${playlist}'

调试信息

bash
# 显示播放列表信息
mpv --msg-level=all=v playlist.m3u

# 显示文件信息
mpv --identify playlist.m3u

下一步