Reproducir contenido dlna en Emacs mediante un enlace personalizado de Org Mode
Llevo desde hace tiempo intentando hacer de Emacs una suerte de «centro multimedia» en texto plano. O, para ir afinando más: almacenar en documentos de Org Mode enlaces a contenido de vídeo y audio tanto locales como en la red. Pero lo que me faltaba es poder definir un tipo de enlace que fuese capaz de entender al servidor dlna que tengo corriendo en mi raspberry mediante minidlna. Finalmente, y gracias al excelente script Simple dlna browser de Javier López he conseguido algo que funcione de manera bastante decente, así que paso sin más preámbulos a comentar la faena.
Lo primero que necesitamos, por supuesto, es descargar el script desde la página de
GitHub del autor y guardarlo en una ruta accesible, tras haberle dado los habituales
permisos de ejecución. A fin de que el script encuentre y reconozca el servidor dlna
activo y realice las transacciones pertinentes, tendremos que instalar también el programa
socat
(yo lo instalé en Arch con un simple sudo pacman -S socat
).
Y, nada, aquí va la primera versión de mi enlace personalizado, que llama externamente al
reproductor vlc mediante xargs
para reproducir el contenido multimedia:
(org-link-set-parameters "dlna-cutre" :follow (lambda (ruta) (let ((comando (concat "~/Scripts/./simple-dlna-browser.sh " "\"" ruta "\"" " | xargs vlc"))) (start-process-shell-command comando nil comando))) :face '(:foreground "green4" :weight bold :underline t))
Si en cualquier documento de Org escribimos un enlace con la etiqueta dlna-cutre:
seguida del (simplemente) nombre del archivo multimedia alojado en el servidor (no hace
falta la extensión: *.mkv
, *.avi
, etc.), y lo activamos mediante la típica orden de
Org org-open-at-point
, lo esperable es que se nos abra el reproductor vlc (es el que
usamos en este ejemplo) con el contenido a reproducir.
Figura 1: Probando unos cuantos enlaces a vídeos de mi servidor dlna
Por supuesto, podemos hacer las cosas aún más emacscéntricas y que el archivo se
reproduzca mediante emms
(Emacs Multimedia System). En esta segunda versión de nuestro
enlace personalizado ya no es necesario llamar a vlc mediante xargs
con una
tubería de bash.
(org-link-set-parameters "dlna-cutre-emms" :follow (lambda (ruta) (let ((comando (concat "~/Scripts/./simple-dlna-browser.sh " "\"" ruta "\""))) ;; hay que asegurarse de eliminar el búfer con la ;; información de salida del comando (when (get-buffer "*dlna*") (kill-buffer "*dlna*")) (call-process-shell-command comando nil "*dlna*" t) (emms-play-url (save-window-excursion (switch-to-buffer "*dlna*") (goto-char (point-min)) (re-search-forward "\\(http:.+\\)") (match-string 1))))) :face '(:foreground "green4" :weight bold :underline t))
Aquí, un breve vídeo de prueba.
Reproducir contenido dlna en Emacs mediante un enlace personalizado de Org Mode (test) from Juan Manuel Macías Chaín on Vimeo.
∞
Publicado: 24/11/20
Última actualización: 07/08/22
Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional.