Skip to content

org-mode mpv: 链接中的时间戳参数被错误传递,导致视频从头播放 #25

Description

@iT-Boyer

问题描述

在 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 秒开始播放

复现步骤

  1. 在 org 文件中创建一个带时间戳的 mpv 链接:
    [[mpv:https://www.youtube.com/watch?v=wNH2E7iT__c#233.316667][▶ 03:53]]
    
  2. 点击该链接
  3. 观察视频从头开始播放,而不是从 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions