问题描述
在 org-mode 中使用带时间戳的 mpv 链接时(例如 [[mpv:https://www.youtube.com/watch?v=wNH2E7iT__c#233.316667][▶ 03:53]]),预期应该从指定时间(233 秒)开始播放,但实际视频总是从头开始播放。
根本原因
在 mpvi-org-link-push 函数中调用 mpvi-start 时,参数传递顺序错误:
;; 错误的调用
(mpvi-start path beg end)
但 mpvi-start 的函数签名是:
(defun mpvi-start (path &optional type beg end)
这导致参数错位:
beg (233.316667) 被传递给了 type
end (nil) 被传递给了 beg,然后被设置为 0
- 最终视频从 0 秒开始播放
复现步骤
- 在 org 文件中创建一个带时间戳的 mpv 链接:
[[mpv:https://www.youtube.com/watch?v=wNH2E7iT__c#233.316667][▶ 03:53]]
- 点击该链接
- 观察视频从头开始播放,而不是从 233 秒开始
修复方案
在 mpvi-org-link-push 中添加 nil 作为 type 参数:
(defun mpvi-org-link-push (link)
"Play the mpv LINK."
(pcase-let ((`(,path ,beg ,end) (mpvi-parse-link link)))
(mpvi-start path nil beg end))) ; 添加 nil 作为 type 参数
影响范围
所有使用 org-mode 中带时间戳的 mpv 链接的用户都会受到影响。
相关代码
mpvi-org-link-push (mpvi.el:2197)
mpvi-start (mpvi.el:350)
问题描述
在 org-mode 中使用带时间戳的 mpv 链接时(例如
[[mpv:https://www.youtube.com/watch?v=wNH2E7iT__c#233.316667][▶ 03:53]]),预期应该从指定时间(233 秒)开始播放,但实际视频总是从头开始播放。根本原因
在
mpvi-org-link-push函数中调用mpvi-start时,参数传递顺序错误:;; 错误的调用 (mpvi-start path beg end)但
mpvi-start的函数签名是:这导致参数错位:
beg(233.316667) 被传递给了typeend(nil) 被传递给了beg,然后被设置为 0复现步骤
修复方案
在
mpvi-org-link-push中添加nil作为type参数:影响范围
所有使用 org-mode 中带时间戳的 mpv 链接的用户都会受到影响。
相关代码
mpvi-org-link-push(mpvi.el:2197)mpvi-start(mpvi.el:350)