Browse Source
* feat(video): refactor video serving endpoint It can now be used without an object storage provider. Closes #2785 * fix: remove debug logpull/2876/head
14 changed files with 156 additions and 79 deletions
@ -0,0 +1,36 @@
@@ -0,0 +1,36 @@
|
||||
package storageproviders |
||||
|
||||
import ( |
||||
"bufio" |
||||
"os" |
||||
"path/filepath" |
||||
|
||||
"github.com/grafov/m3u8" |
||||
"github.com/owncast/owncast/config" |
||||
"github.com/owncast/owncast/core/playlist" |
||||
|
||||
log "github.com/sirupsen/logrus" |
||||
) |
||||
|
||||
// rewriteRemotePlaylist will take a local playlist and rewrite it to have absolute URLs to remote locations.
|
||||
func rewriteRemotePlaylist(localFilePath, remoteServingEndpoint string) error { |
||||
f, err := os.Open(localFilePath) // nolint
|
||||
if err != nil { |
||||
log.Fatalln(err) |
||||
} |
||||
|
||||
p := m3u8.NewMasterPlaylist() |
||||
if err := p.DecodeFrom(bufio.NewReader(f), false); err != nil { |
||||
log.Warnln(err) |
||||
} |
||||
|
||||
for _, item := range p.Variants { |
||||
item.URI = remoteServingEndpoint + filepath.Join("/hls", item.URI) |
||||
} |
||||
|
||||
publicPath := filepath.Join(config.HLSStoragePath, filepath.Base(localFilePath)) |
||||
|
||||
newPlaylist := p.String() |
||||
|
||||
return playlist.WritePlaylist(newPlaylist, publicPath) |
||||
} |
Loading…
Reference in new issue