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"
|
2023-11-01 17:08:28 +00:00
|
|
|
"github.com/pulsejet/memories/go-vod/transcoder"
|
2022-11-10 11:24:33 +00:00
|
|
|
)
|
|
|
|
|
2023-11-20 19:36:29 +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)
|
|
|
|
}
|