memories/go-vod/main.go

72 lines
1.4 KiB
Go
Raw Normal View History

2022-11-10 11:24:33 +00:00
package main
import (
2023-10-20 21:24:49 +00:00
"fmt"
2022-11-10 11:24:33 +00:00
"log"
2022-11-11 03:40:53 +00:00
"os"
2023-10-21 18:36:22 +00:00
2024-03-01 22:27:03 +00:00
"git.rpjosh.de/RPJosh/go-logger"
"github.com/pulsejet/memories/go-vod/transcoder"
2022-11-10 11:24:33 +00:00
)
const VERSION = "0.2.4"
2023-03-09 19:57:15 +00:00
2022-11-10 11:24:33 +00:00
func main() {
2023-10-20 21:12:09 +00:00
// Build initial configuration
2023-11-01 08:03:28 +00:00
c := &transcoder.Config{
2023-10-20 21:12:09 +00:00
VersionMonitor: false,
2023-10-21 18:36:22 +00:00
Version: VERSION,
2023-03-09 19:57:15 +00:00
Bind: ":47788",
2024-03-01 22:27:03 +00:00
ChunkSize: 2,
LookBehind: 4,
2023-03-09 19:57:15 +00:00
GoalBufferMin: 1,
2024-03-01 22:27:03 +00:00
GoalBufferMax: 5,
2023-03-09 19:57:15 +00:00
StreamIdleTime: 60,
ManagerIdleTime: 60,
2022-11-15 10:09:33 +00:00
}
2023-10-20 21:12:09 +00:00
// Parse arguments
for _, arg := range os.Args[1:] {
if arg == "-version-monitor" {
c.VersionMonitor = true
2023-10-20 21:24:49 +00:00
} else if arg == "-version" {
fmt.Print("go-vod " + VERSION)
2023-10-20 21:12:09 +00:00
return
} else {
2023-10-21 18:27:25 +00:00
c.FromFile(arg) // config file
2023-10-20 21:12:09 +00:00
}
2022-11-15 10:09:33 +00:00
}
2024-03-01 22:27:03 +00:00
// 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
2023-10-21 18:27:25 +00:00
c.AutoDetect()
2023-04-10 23:44:39 +00:00
2023-10-21 18:36:22 +00:00
// Start server
2023-11-01 08:03:28 +00:00
code := transcoder.NewHandler(c).Start()
2023-10-21 18:45:30 +00:00
// Exit
log.Println("Exiting go-vod with status code", code)
os.Exit(code)
2022-11-10 11:24:33 +00:00
}
2024-03-01 22:27:03 +00:00
// 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)
}