memories/go-vod/main.go

72 lines
1.4 KiB
Go

package main
import (
"fmt"
"log"
"os"
"git.rpjosh.de/RPJosh/go-logger"
"github.com/pulsejet/memories/go-vod/transcoder"
)
const VERSION = "0.2.4"
func main() {
// Build initial configuration
c := &transcoder.Config{
VersionMonitor: false,
Version: VERSION,
Bind: ":47788",
ChunkSize: 2,
LookBehind: 4,
GoalBufferMin: 1,
GoalBufferMax: 5,
StreamIdleTime: 60,
ManagerIdleTime: 60,
}
// Parse arguments
for _, arg := range os.Args[1:] {
if arg == "-version-monitor" {
c.VersionMonitor = true
} else if arg == "-version" {
fmt.Print("go-vod " + VERSION)
return
} else {
c.FromFile(arg) // config file
}
}
// Configure logger
configureLogger()
// Initialize RPdb API
c.RPdbAPI = transcoder.GetRPdbAPI()
// Set ffmpeg path
c.FFmpeg = "./ffmpeg/ffmpeg"
c.FFprobe = "./ffmpeg/ffprobe"
c.VAAPI = true
// Auto-detect ffmpeg and ffprobe
c.AutoDetect()
// Start server
code := transcoder.NewHandler(c).Start()
// Exit
log.Println("Exiting go-vod with status code", code)
os.Exit(code)
}
// configureLogger configures the gloal logger with some default values
func configureLogger() {
globalLogger := logger.GetLoggerFromEnv(&logger.Logger{
File: &logger.FileLogger{},
Level: logger.LevelDebug,
ColoredOutput: true,
PrintSource: true,
})
logger.SetGlobalLogger(globalLogger)
}