DVR for streaming entertainment
StreamDVR records your favorite live streamers while you are away. No need to miss a broadcast!
Time shifting is not a crime:
https://en.wikipedia.org/wiki/Sony_Corp._of_America_v._Universal_City_Studios,_Inc.
Use either ffmpeg or streamlink to record to ts-containers
Automatically convert recordings to mp4 or mkv
Run custom post-process scripts after conversion to…
Supported sites out of the box: Twitch, Youtube, Pixiv, Picarto
See Adding new plugins
to use StreamDVR with other sites that are supported by yt-dlp or streamlink.
Docker available at https://ghcr.io/purrsevere/streamdvr
bash
, node.js >= 14.0.0
, npm
, git
, and ffmpeg
Optional Dependencies: streamlink
, yt-dlp
streamlink
is used to fetch m3u8 URLs for Pixiv and Picarto by defaultyt-dlp
is used to fetch m3u8 URLs for Twitch and Youtube by defaultInstall StreamDVR
On GitHub, click
Clone or download
,Download ZIP
.
Or rungit clone https://github.com/jrudess/streamdvr.git
Run npm install
to locally install all dependencies in package.json
config files are loaded from the following paths (listed in precedence order):
To run: streamdvr
Filename formatting:
%s
Site Name%n
Streamer Name%d
Date and TimeTUI navigation:
1
to focus the streamer list, Esc
to unfocus2
to focus the site list, Esc
to unfocusenter
to focus the input bar for CLIUp/Down/PgUp/PgDn
to scroll the active focusCLI:
add [site] [streamer] <alias>
addtemp [site] [streamer]
pause [site] <streamer> <time in seconds>
remove [site] [streamer]
reload
help
Some websites, such as youtube, will have channel names that are random characters. For example, the URL to capture NBC News live streams is https://www.youtube.com/channel/UCeY0bbntWzzVIaj2z3QigXg. An alias can be specified when adding the channel to give it a better name.
add youtube UCeY0bbntWzzVIaj2z3QigXg nbc_news
`
config.yml
with postprocess: /path/to/script
#!/bin/bash
#arg0 is path, arg1 is filename
args=("$@")
notify-send "streamdvr" "Done recording ${args[1]}"
Every site that is supported by either streamlink or yt-dlp will work with StreamDVR. All that is necessary is to create a new configuration file with the site’s details. Refer to any existing yml file in the config directory for an example.
If you have created a
All support for streaming sites is handled by 3rd party programs. The site configuration yml files specify the m3u8 lookup and record scripts to use. Adding support for new programs requires adding new wrapper scripts and using those scripts in the yml configuration file.
If you would like StreamDVR to support a new program and have written your own wrapper scripts, pull requests are welcome. If you’re just aware of other programs similar to yt-dlp or streamlink, please open an issue and provide the program’s name/info. If the program looks promising (e.g. works for at least one of the existing sites), then I’ll probably add support for it.
Configuration Options for config.yml
enable
daemon
recording
autoConvertType
captureDirectory
completeDirectory
postprocess
dateFormat
includeSiteInDir
streamerSubdir
is set.completeDir/streamer_site
.siteSubdir
is set then completeDir/site/streamer_site
.streamerSubdir
completeDir/streamer/
includeSiteInDir
is set then completeDir/streamer_site/
.siteSubdir
is set then completeDir/site/{streamer, streamer_site}
.siteSubdir
completeDir/site/
.streamerSubdir
is set then completeDir/site/streamer/
.keepTsFile
minSize
maxSize
postprocess
log
enable
append
tui
enable
allowUnicode
colors
proxy
enable
server
debug
log
recorder
errortrace