94 lines
3.3 KiB
Org Mode
94 lines
3.3 KiB
Org Mode
* strm
|
|
|
|
*strm* is a small Bash script that lets you stream media files over SSH.
|
|
|
|
No need for mounting and navigating through complex directory structures anymore.
|
|
Just provide a query and the media files are played locally via [[https://mpv.io/][mpv]].
|
|
|
|
Here is an example.. let's assume you have the shortfilm [[https://www.dailydweebs.com/][The Daily Dweebs]] stored on a remote machine in the following directory structure:
|
|
|
|
#+begin_src text
|
|
movies
|
|
├── ...
|
|
├── The Daily Dweebs (2017)
|
|
│ └── The Daily Dweebs (2017).mkv
|
|
└── ...
|
|
#+end_src
|
|
|
|
If strm is configured to use the =movies= directory, you can play the shortfilm with the following command:
|
|
|
|
#+begin_src sh
|
|
strm daily dweebs
|
|
#+end_src
|
|
|
|
** Features
|
|
|
|
- List remote files by query
|
|
- Play remote files locally via mpv
|
|
|
|
** Installation
|
|
|
|
Make sure, mpv is installed and that you have access to a remote machine via SSH.
|
|
|
|
strm is just a script, you can execute it directly.
|
|
Or grab it and place it in you =$PATH=.
|
|
|
|
This project is also a [[https://nixos.wiki/wiki/Flakes][Nix flake]].
|
|
You can execute it with the following command if you have a recent version of [[https://nixos.org/][Nix]] installed and flakes are enabled:
|
|
|
|
#+begin_src sh
|
|
nix run github:Deleh/strm -- --help
|
|
#+end_src
|
|
|
|
If you use it this way, mpv is started with *MPRIS* support by default.
|
|
|
|
** Usage
|
|
|
|
#+begin_src text
|
|
Usage: strm [OPTIONS] QUERY ... [OPTIONS]
|
|
|
|
Stream media files over SSH.
|
|
|
|
OPTIONS
|
|
-h, --help Show this help message
|
|
-c, --config CONFIG_FILE Path to config file
|
|
-l, --list List files instead of playing
|
|
-m, --media-directories MEDIA_DIRECTORIES Use given media directories, config is ignored
|
|
-s, --shuffle Play files in random order
|
|
|
|
EXAMPLES
|
|
strm -l . # List all available files
|
|
strm Elephants Dream # Play files whose path contain 'elephants' and 'dream' in order
|
|
strm e*phants # Play files whose path matches the wildcard 'e*phants'
|
|
#+end_src
|
|
|
|
The usual [[https://mpv.io/manual/master/#interactive-control][mpv controls]] are available while playback.
|
|
Here is a subset:
|
|
|
|
- =LEFT= and =RIGHT= :: Seek backward/forward.
|
|
- =p= and =SPACE= :: Pause (pressing again unpauses).
|
|
- =<= and =>= :: Go backward/forward in the playlist.
|
|
- =q= :: Stop playing and quit.
|
|
|
|
** Configuration
|
|
|
|
If the =--media-directories= argument is not set, the scripts looks for a configuration file with the following content:
|
|
|
|
#+begin_src sh
|
|
# Media directories on remote machines of the following form:
|
|
#
|
|
# <SSH connection string><absolute_path_to_media_directory>
|
|
#
|
|
# Multiple media directories can be set with a comma (,) as delimiter.
|
|
#
|
|
# Examples:
|
|
# localhost/home/bob/videos
|
|
# remote-machine/home/bob/music
|
|
# bob@another-machine/media/movies,bob@10.0.0.1/home/bob/series
|
|
media_directories=""
|
|
#+end_src
|
|
|
|
An example configuration file can be found in =./strm.config=.
|
|
|
|
The default path of the configuration is =$HOME/.config/strm/strm.config=.
|
|
You can use the =--config= flag to set another configuration file.
|