Git Repository
Mini Video Library
Mini Video Library scannt lokale Medienordner, verwaltet Metadaten und Vorschaubilder und streamt kompatible Videos direkt per HTTP an den Browser.
HTTPS
https://zanvex.de/git/mini-video-library.gitinternal/web/templates/watch.html
Zum Verzeichnis{{template "head" .}}<section class="player"><div class="playerbar"><a href="/video/{{.Video.ID}}">{{t "video.back_short"}}</a><span>{{.Video.Title}}</span></div><video id="video" controls autoplay playsinline src="/stream/{{.Video.ID}}">{{range $index,$subtitle := .ExternalSubtitles}}{{if .Playable}}<track kind="subtitles" src="/subtitles/{{$.Video.ID}}/{{$index}}" srclang="{{.Language}}" label="{{.Language}} · {{.Name}}" {{if and $.Config.PreferredSubtitleLanguage (eq .Language $.Config.PreferredSubtitleLanguage)}}default{{end}}>{{end}}{{end}}</video></section><script>const v=document.getElementById('video'),start={{.Video.PlaybackPosition}},preferredAudio={{printf "%q" .Config.PreferredAudioLanguage}},preferredSubtitles={{printf "%q" .Config.PreferredSubtitleLanguage}};v.addEventListener('loadedmetadata',()=>{if(start>0&&start<v.duration-15)v.currentTime=start;if(preferredAudio&&v.audioTracks)for(const track of v.audioTracks)track.enabled=(track.language===preferredAudio);if(preferredSubtitles)for(const track of v.textTracks)track.mode=(track.language===preferredSubtitles?'showing':'disabled')});let last=0;function save(final=false){if(!v.duration)return;const watched=v.currentTime/v.duration>.9;fetch('/api/videos/{{.Video.ID}}/progress',{method:'PUT',headers:{'Content-Type':'application/json'},body:JSON.stringify({position:v.currentTime,watched}),keepalive:final})}v.addEventListener('timeupdate',()=>{if(v.currentTime-last>10){last=v.currentTime;save()}});v.addEventListener('pause',()=>save());addEventListener('pagehide',()=>save(true));</script>{{template "foot" .}}