diff --git a/Dockerfile b/Dockerfile index 3a5b354..aa46d50 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,6 +17,8 @@ RUN XTEVE_VERSION="$(grep -m1 '^#### ' changelog-beta.md | cut -d' ' -f2 | sed ' && CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH \ go build -trimpath -ldflags="-s -w -X main.Version=$XTEVE_VERSION" -o /out/xteve ./xteve.go +FROM mwader/static-ffmpeg:latest AS ffmpeg + FROM alpine:3.23 RUN apk add --no-cache ca-certificates tzdata \ @@ -28,6 +30,8 @@ RUN apk add --no-cache ca-certificates tzdata \ WORKDIR /xteve COPY --from=builder /out/xteve /usr/local/bin/xteve +COPY --from=ffmpeg /ffmpeg /usr/local/bin/ffmpeg +COPY --from=ffmpeg /ffprobe /usr/local/bin/ffprobe COPY docker/entrypoint.sh /usr/local/bin/docker-entrypoint.sh USER xteve diff --git a/src/system.go b/src/system.go index 135fbdf..0ef521d 100644 --- a/src/system.go +++ b/src/system.go @@ -105,6 +105,14 @@ func loadSettings() (settings SettingsStruct, err error) { dataMap["m3u"] = make(map[string]interface{}) dataMap["hdhr"] = make(map[string]interface{}) + defaultFFmpegPath := "" + if len(os.Getenv("XTEVE_CONFIG")) > 0 { + containerFFmpegPath := "/usr/local/bin/ffmpeg" + if checkFile(containerFFmpegPath) == nil { + defaultFFmpegPath = containerFFmpegPath + } + } + defaults["api"] = false defaults["use_plexAPI"] = false defaults["plex.url"] = "" @@ -121,6 +129,7 @@ func loadSettings() (settings SettingsStruct, err error) { defaults["buffer.timeout"] = 500 defaults["cache.images"] = false defaults["epgSource"] = "PMS" + defaults["ffmpeg.path"] = defaultFFmpegPath defaults["ffmpeg.options"] = System.FFmpeg.DefaultOptions defaults["vlc.options"] = System.VLC.DefaultOptions defaults["files"] = dataMap @@ -170,7 +179,12 @@ func loadSettings() (settings SettingsStruct, err error) { } if len(settings.FFmpegPath) == 0 { - settings.FFmpegPath = searchFileInOS("ffmpeg") + containerFFmpegPath := "/usr/local/bin/ffmpeg" + if len(os.Getenv("XTEVE_CONFIG")) > 0 && checkFile(containerFFmpegPath) == nil { + settings.FFmpegPath = containerFFmpegPath + } else { + settings.FFmpegPath = searchFileInOS("ffmpeg") + } } if len(settings.VLCPath) == 0 {