94 lines
1.6 KiB
Go
94 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
"segmenta/pkg/generator"
|
|
"segmenta/pkg/handler"
|
|
)
|
|
|
|
// How to stream a static video file as a "live" stream?
|
|
|
|
func main() {
|
|
var url string
|
|
|
|
flag.StringVar(&url, "url", "", "URL to open")
|
|
flag.Parse()
|
|
|
|
if url == "" {
|
|
fmt.Println("Usage:")
|
|
flag.PrintDefaults()
|
|
os.Exit(-1)
|
|
}
|
|
|
|
// open URL:
|
|
client := http.Client{}
|
|
resp, err := client.Get(url)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
handler := handler.NewS3Handler("rfwatson-hls", "public-read")
|
|
generator := generator.NewFFMPEGGenerator("test", resp.Body)
|
|
generator.AddHandler(handler)
|
|
|
|
fmt.Println("starting generator...")
|
|
|
|
err = generator.Generate()
|
|
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Println("completed generator...")
|
|
|
|
//go func() {
|
|
//defer wg.Done()
|
|
|
|
//watcher, err := fsnotify.NewWatcher()
|
|
//if err != nil {
|
|
//log.Fatal(err)
|
|
//}
|
|
//defer watcher.Close()
|
|
|
|
//err = watcher.Add(tmpdir)
|
|
//if err != nil {
|
|
//panic(err)
|
|
//}
|
|
|
|
//for {
|
|
//select {
|
|
//case event, ok := <-watcher.Events:
|
|
//if !ok {
|
|
//return
|
|
//}
|
|
//log.Println("Got event.Name:", event.Name)
|
|
//key := filepath.Join("test-stream", filepath.Base(event.Name))
|
|
//if event.Op&fsnotify.Create == fsnotify.Create && strings.HasSuffix(event.Name, ".m3u8") {
|
|
//uploadFile(upload{event.Name, key})
|
|
//}
|
|
//if event.Op&fsnotify.Write == fsnotify.Write && strings.HasSuffix(event.Name, ".ts") {
|
|
//uploadFile(upload{event.Name, key})
|
|
//}
|
|
//case err, ok := <-watcher.Errors:
|
|
//if !ok {
|
|
//return
|
|
//}
|
|
//log.Println("Got error:", err)
|
|
//}
|
|
//}
|
|
|
|
//fmt.Println("sleep exited")
|
|
//}()
|
|
|
|
//wg.Add(2)
|
|
//wg.Wait()
|
|
|
|
//fmt.Println("exiting")
|
|
//}
|
|
}
|