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),仅供参考