mpv+org - для расшифровки аудио
Средство управления плеером mpv из emacs. Именно удобное для расшифровки. Гонять по многу раз с одного места, возвращаться на короткие промежутки, ставить отметки времени в файле…
- https://ladycat.wordpress.com/2017/01/10/emacs-org-mode-mpv-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BA%D0%B8-%D0%B0%D1%83%D0%B4%D0%B8%D0%BE/ - исходная версия текста. В принципе, добавлений - опыт работы не только с аудио, но и с видео есть, последний от 2021-08-23.
Есть печаль — работает как-то слишком «волшебно», в смысле, один и тот же файл может раз пять не открыть с ошибкой «Failed connect to mpv», потом внезапно открывает. Куда тут копать — непонятно, так что пока смиряюсь.
Установить mpv.el можно из MELPA.
- https://github.com/kljohann/mpv.el/wiki
- https://github.com/mpv-player/mpv/wiki - а это вики самого mpv.
- https://github.com/jonniek/mpv-playlistmanager - как работать с плейлистами в mpv
Helper functions to control a mpv process via its IPC interface.
Единственное, что хочется - точность, большую, чем секунды.
Кнопочки:
(global-set-key "\M-ps" 'mpv-play) ; _s_tart (global-set-key "\M-pk" 'mpv-kill) (global-set-key "\M-pp" 'mpv-pause) (global-set-key "\M-pi" 'mpv-insert-playback-position) (global-set-key "\M-pb" 'mpv-seek-backward) (global-set-key "\M-pf" 'mpv-seek-forward) (global-set-key "\M-pt" 'mpv-seek-to-position-at-point);_t_his (global-set-key "\M-pl" 'mpv-speed-decrease); _l_ess (global-set-key "\M-pm" 'mpv-speed-increase); _m_ore (global-set-key "\M-pu" 'mpv-speed-set); _u_se speed - не использую.
Если вставить опцию force-window=yes
в конфиг (~/.config/mpv/mpv.conf
или разрешить конфиги к файлам и в соотв. файл), то окно тоже показывает. Так что с видео работать можно.
Орг-мод в сочетании с mpv.el позволяет делать специальные ссылки — как file:, но открываются при помощи mpv-play. Чтоб не лезть отдельно открывать, что там расшифровываешь, а прямо из файла с расшифровкой запускать.
(org-add-link-type "mpv" #'mpv-play) (defun org-mpv-complete-link (&optional arg) (replace-regexp-in-string "file:" "mpv:" (org-file-complete-link arg) t t))
В текст расшифровки можно вставлять отметки времени для быстрого перехода к ним — сделано из org-timer-item, выглядит примерно так:
- 0:01:15 :: А теперь поговорим о…
Нижеследующее позволяет вставлять такие отметки с позицией в файле по M-RET, если не запущен org-timer, и если это продолжение уже начатого списка (первую можно и вручную вписать, произвольно, потом поставить пару реальных, первую и удалить…):
(defun org-timer-item--mpv-insert-playback-position (fun &rest args) "When no org timer is running but mpv is alive, insert playback position." (if (and (not org-timer-start-time) (mpv-live-p)) (mpv-insert-playback-position t) (apply fun args))) (advice-add 'org-timer-item :around #'org-timer-item--mpv-insert-playback-position)
Чтобы по Enter переходить на указанную позицию в файле:
(add-hook 'org-open-at-point-functions #'mpv-seek-to-position-at-point)
По-моему, всё необходимое.