☰
mpv 章节导航完整指南:3 条路径搞定 DVD 与蓝光跳转、EDL 多视频拼接
2026/10/2 8:02:00 网站建设 项目流程

mpv 章节导航完整指南:3 条路径搞定 DVD 与蓝光跳转、EDL 多视频拼接

【免费下载链接】mpv🎥 Command line media player项目地址: https://gitcode.com/GitHub_Trending/mp/mpv

手头有 12 个零散的 Python 课程 mp4,散落在不同文件夹里?想按"讲"快速回看,而不是靠进度条来回拖。这正是 mpv 章节导航要解决的痛点:把任意来源的视频切分成带标题的时间段,再用按键、菜单或命令行参数精准跳转。mpv 章节功能不挑来源——DVD、蓝光、MKV 里自带的章节会自动读出来,而 mpv EDL 文件则让你手工"拼装"出一部带目录的虚拟片子,顺带实现 mpv 多视频拼接。下面围绕这套 Python 课程视频,把三条路径一次性讲透。

先花一分钟看清 mpv 章节系统的三个部件:

  • 来源:章节点列表从哪来——光盘结构、MKV 容器元数据,或 EDL 虚拟文件;
  • 动作:add chapter命令负责跳转,--start/--end支持#c章节号语法;
  • 呈现:chapters属性、g-c章节选择器、OSC 显示,全部读同一份列表。

来源可以换,动作和呈现始终不变。

让 mpv 自动识别:DVD 与蓝光章节直接可用

光盘是最"原生"的章节来源——每张 DVD、蓝光都带现成的章节结构,mpv 用协议前缀就能直接打开,章节点、片名(title)、选集(edition)一并读出来:

mpv dvd:// # 读取光驱里的 DVD,默认选最长 title mpv dvd:///dev/sr0 # 指定设备 mpv disc.iso # DVD-Video 的 ISO 镜像也能直接播 mpv bd:///path/to/BDMV # 蓝光文件夹 mpv --bluray-device=bluray.iso bd:// # 蓝光 ISO(libbluray ≥ 1.0.1)

不带 title 参数时,mpv 会自动挑最长的那个。播放中用--edition=N或g-e切换选集——在光盘场景下就是切换 title;章节集变了,跳转用的章节列表也跟着换。

一个容易踩的坑是回退行为:按"上一章"时,mpv 用--chapter-seek-threshold(默认 5 秒)做判断——你离本章开头不超过 5 秒,就退回上一章;已经看进去超过 5 秒,则只把进度拨回本章开头,防止误触直接把一整段清零。设为负值表示永远回上一章。

普通文件这边同理:MKV 等容器自带的章节点会被自动读出,g-c菜单里直接可见,零配置。

手造章节:用 mpv EDL 文件把课程拼成一部带目录的片子

这是整个 mpv 章节体系里最有意思的部分。EDL(Edit Decision List)是一个纯文本文件,作用是把多个源文件里的不同时间段按顺序接成一条虚拟时间轴。

它和命令行直接列一堆文件有什么区别?命令行列文件时,每段是独立的播放列表项;EDL 则让播放器看到一个"整片"——进度条是一条、chapters属性是一份、章节选择器按整片工作。

EDL 格式速览

# mpv EDL v0 part1.mp4,0,600,title=第 1 讲:环境搭建 part2.mp4,0,780,title=第 2 讲:变量与数据类型

规则很严格但很简单:

  • 首行必须是# mpv EDL v0;
  • 之后每行一个分段:文件名,起始秒,时长秒,起始省略按 0 算,时长省略就播到源文件尾;
  • 默认情况下,mpv 会把各源文件内部的章节也复制进虚拟时间轴,并在每个分段边界再插入一个章节点;章节标题默认取文件名,可用title=覆盖;
  • 想关掉自动插点,加一行!no_chapters;
  • !global_tags给整部虚拟片子打全局标签(标题、作者之类)。

给课程视频加目录

把整套 Python 课程写进course.edl:

# mpv EDL v0 !global_tags,title=Python 零基础课程,author=某机构 lec01.mp4,title=第 1 讲:环境搭建 lec02.mp4,title=第 2 讲:变量与数据类型 lec03.mp4,title=第 3 讲:流程控制 lec04.mp4,title=第 4 讲:函数与模块
mpv course.edl

播放后按g-c,弹出的列表就是带标题的目录;进度条合并成一条长轴,拖到哪一讲都能精确落点。

还有两个进阶用法值得知道:

  • 外挂独立音轨/字幕:如果某讲的声音是单独录的,用!new_stream把音频文件作为附加流挂进来,它会变成一条可选音轨而非接在片尾,且整个虚拟文件共用同一个缓存:

    # mpv EDL v0 lec01.mp4,title=第 1 讲 !new_stream lec01_audio.mkv
  • 命令行内联:懒得建文件时,可以把整段 EDL 直接写进edl://URI 里用;分隔,适合临时测试一两段。

完整格式(时间戳按章节号、转义规则等冷门语法)见 DOCS/edl-mpv.rst。

键位与参数:把章节跳转改成顺手的样子

mpv 里章节跳转的本质就两条命令:add chapter ±N(相对跳)和set chapter N(直接跳)。改键位只需打开输入配置文件——默认模板在 etc/input.conf:

# 默认绑定 #PGUP add chapter 1 #PGDWN add chapter -1

想换到 j/k 或者给选择器绑个更顺手的键:

# 把 Ctrl+O 绑到章节选择器(方向键 + 回车跳转) Ctrl+o script-binding select/select-chapter

注意j/k默认是快进/快退 5 秒,改绑章节前记得先注释掉原来的行,否则一次按键会叠加两条命令。

不改键位也有办法直接指定章节范围:--start支持#c语法(章节号从 1 起算):

mpv course.edl --start='#3' --end='#5'

这条命令只播第 3、4 章然后退出——复习某一讲时比敲时间戳方便得多。

小结:三种来源,一套操作

来源有三条路——光盘协议自动识别、MKV 等容器自带章节、EDL 手造虚拟时间轴——但播放中的一切操作通用:add chapter命令、g-c选择器、--start=#c语法对谁都有效,差别只在章节列表从哪来。

想继续深挖,这几处是入口:

  • EDL 格式全貌:DOCS/edl-mpv.rst
  • 光盘与 EDL 的解析源码:demux/demux_cue.c、demux/demux_edl.c、demux/demux_disc.c
  • 默认键位模板:etc/input.conf
  • --start的#c语法与--chapter-seek-threshold说明:DOCS/man/options.rst

把课程视频丢进一个 EDL,给每讲起个名,再按一下g-c——mpv 的章节导航,到这儿就闭环了。

【免费下载链接】mpv🎥 Command line media player项目地址: https://gitcode.com/GitHub_Trending/mp/mpv

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询