Skip to content

Commit 45f8a90

Browse files
authored
refactor(handler): downgrade the ffmpeg from 7 to 6 for compatibility (#23)
1 parent dd8d19d commit 45f8a90

6 files changed

Lines changed: 71 additions & 33 deletions

File tree

pkg/define/const.go

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,29 @@
11
package define
22

33
const (
4-
FFMPEG = "ffmpeg"
5-
FFPROBE = "ffprobe"
6-
InstallFFMPEG = "install_ffmpeg"
7-
StudioDir = ".oomol-studio"
8-
HostShared = "host-shared"
9-
FFReleaseURLForVentura = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v7.1.1-2/jellyfin-ffmpeg_7.1.1-2_portable_macarm64-gpl.tar.xz"
10-
FFMSha256ForVentura = "8ff4ed4eba151346d6d1ee894bbfcbd9f507dc82b34260f4567954136449001d"
4+
ARCH = "arm64"
5+
6+
FFMPEGPkgName = "ffmpeg_macos_arm64"
7+
8+
// FFMPEG VERSION v7.1.1 info
9+
FFMPEG7Version = "v7.1.1"
10+
FF7ReleaseURL = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v7.1.1-2/jellyfin-ffmpeg_7.1.1-2_portable_macarm64-gpl.tar.xz"
11+
FF7Sha256 = "8ff4ed4eba151346d6d1ee894bbfcbd9f507dc82b34260f4567954136449001d"
12+
13+
// // FFMPEG VERSION v6.0.1 info
14+
FFMPEG6Version = "v6.0.1"
15+
FF6ReleaseURL = "https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v6.0.1-8/jellyfin-ffmpeg_6.0.1-8_portable_macarm64-gpl.tar.xz"
16+
FF6Sha256 = "efce8779d5f35127ec7dcd500669e00a2e13f2b099c7bf11ab5acee467dc5d57"
1117
)
1218

1319
const (
14-
DYLD_LIBRARY_PATH = "DYLD_LIBRARY_PATH" //nolint:stylecheck
20+
InstallFFMPEGVersion7 = "install_ffmpeg_7"
21+
InstallFFMPEGVersion6 = "install_ffmpeg_6"
22+
StudioDir = ".oomol-studio"
23+
HostShared = "host-shared"
24+
25+
FFMPEGBin = "ffmpeg"
26+
FFPROBEBin = "ffprobe"
1527
)
1628

1729
var (

pkg/define/whitelist.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package define
22

33
var Whitelist = []string{
4-
FFMPEG,
5-
FFPROBE,
6-
InstallFFMPEG,
4+
FFPROBEBin,
5+
FFMPEGBin,
6+
InstallFFMPEGVersion6,
77
}
88

99
func IsWhitelisted(command string) bool {

pkg/handler/ffmpeg/handler.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ const RunFFMPEGStage = "ffmpeg run handler"
1515
func Run(next ssh.Handler) ssh.Handler {
1616
return func(s ssh.Session) {
1717
targetBin := s.Command()[0]
18-
if targetBin == define.FFPROBE || targetBin == define.FFMPEG {
19-
logrus.Infof("run middleware: %q", RunFFMPEGStage)
20-
stubber := ffmpeg.New(s)
18+
if targetBin == define.FFPROBEBin || targetBin == define.FFMPEGBin {
19+
logrus.Infof("run middleware: %q\r\n", RunFFMPEGStage)
20+
stubber := ffmpeg.NewVersion6(s)
2121
args, err := exec.DoArgsSanitizers(s.Command()[1:])
2222
if err != nil {
2323
slog.Fatalf(s, "DoArgsSanitizers error: %v\r\n", err)
@@ -39,10 +39,11 @@ const InstallStage = "ffmpeg install handler"
3939

4040
func Install(next ssh.Handler) ssh.Handler {
4141
return func(s ssh.Session) {
42-
// if the command is not define.InstallFFMPEG, do nothing and run next handler
43-
if s.Command()[0] == define.InstallFFMPEG {
44-
slog.Infof(s, "run middleware: %q", InstallStage)
45-
stubber := ffmpeg.New(s)
42+
// if the command is not InstallFFMPEGVersion6, do nothing and run the next handler
43+
if s.Command()[0] == define.InstallFFMPEGVersion6 {
44+
slog.Infof(s, "run middleware: %q\r\n", InstallStage)
45+
stubber := ffmpeg.NewVersion6(s)
46+
4647
if err := stubber.Download(s.Context()); err != nil {
4748
slog.Fatalf(s, "Download ffmpeg error: %v\r\n", err)
4849
return

pkg/handler/handler.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package handler
22

33
import (
4-
"github.com/sirupsen/logrus"
54
"sshd/pkg/define"
65
slog "sshd/pkg/logger"
76

7+
"github.com/sirupsen/logrus"
8+
89
"github.com/gliderlabs/ssh"
910
)
1011

pkg/logger/log.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ func Infof(s ssh.Session, f string, v ...interface{}) {
3232
func SetupLogger() error {
3333
logrus.SetFormatter(&logrus.TextFormatter{
3434
FullTimestamp: true,
35-
ForceColors: true,
36-
DisableColors: false,
35+
ForceColors: false,
36+
DisableColors: true,
3737
TimestampFormat: "2006-01-02 15:04:05.000",
3838
})
3939
homeDir, err := os.UserHomeDir()

pkg/provider/ffmpeg/stubber.go

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,7 @@ type Stubber struct {
2626
Version define.Version
2727
}
2828

29-
const VERSION = "7"
30-
const NAME = "ffmpeg_macos_arm64"
31-
32-
func New(s ssh.Session) *Stubber {
29+
func NewVersion6(s ssh.Session) *Stubber {
3330
stdioHome, err := utils.GetStudioHomeDir()
3431
if err != nil {
3532
logrus.Errorf("GetStudioHomeDir error: %v", err)
@@ -41,28 +38,55 @@ func New(s ssh.Session) *Stubber {
4138
return &Stubber{
4239
Session: s,
4340
Version: define.Version{
44-
PkgName: NAME,
45-
PkgVer: VERSION,
41+
PkgName: define.FFMPEGPkgName,
42+
PkgVer: define.FFMPEG6Version,
4643
},
4744
Installer: define.InstallOpts{
48-
URL: define.FFReleaseURLForVentura,
49-
Sha256Sum: define.FFMSha256ForVentura,
50-
Prefix: filepath.Join(stdioHome, define.HostShared, NAME, VERSION),
45+
URL: define.FF6ReleaseURL,
46+
Sha256Sum: define.FF6Sha256,
47+
Prefix: filepath.Join(stdioHome, define.HostShared, define.FFMPEGPkgName, define.FFMPEG6Version),
5148
},
5249
Runner: define.RunOpts{
53-
FFMPEGPath: filepath.Join(stdioHome, define.HostShared, NAME, VERSION, define.FFMPEG),
54-
FFPROBEPath: filepath.Join(stdioHome, define.HostShared, NAME, VERSION, define.FFPROBE),
50+
FFMPEGPath: filepath.Join(stdioHome, define.HostShared, define.FFMPEGPkgName, define.FFMPEG6Version, define.FFMPEGBin),
51+
FFPROBEPath: filepath.Join(stdioHome, define.HostShared, define.FFMPEGPkgName, define.FFMPEG6Version, define.FFPROBEBin),
5552
},
5653
}
5754
}
5855

56+
// func NewVersion7(s ssh.Session) *Stubber {
57+
// stdioHome, err := utils.GetStudioHomeDir()
58+
// if err != nil {
59+
// logrus.Errorf("GetStudioHomeDir error: %v", err)
60+
// return nil
61+
// }
62+
//
63+
// logrus.Infof("GetStudioHomeDir: %q", stdioHome)
64+
//
65+
// return &Stubber{
66+
// Session: s,
67+
// Version: define.Version{
68+
// PkgName: define.FFMPEGPkgName,
69+
// PkgVer: define.FFMPEG7Version,
70+
// },
71+
// Installer: define.InstallOpts{
72+
// URL: define.FF7ReleaseURL,
73+
// Sha256Sum: define.FF7Sha256,
74+
// Prefix: filepath.Join(stdioHome, define.HostShared, define.FFMPEGPkgName, define.FFMPEG7Version),
75+
// },
76+
// Runner: define.RunOpts{
77+
// FFMPEGPath: filepath.Join(stdioHome, define.HostShared, define.FFMPEGPkgName, define.FFMPEG7Version, define.FFMPEGBin),
78+
// FFPROBEPath: filepath.Join(stdioHome, define.HostShared, define.FFMPEGPkgName, define.FFMPEG7Version, define.FFPROBEBin),
79+
// },
80+
// }
81+
//}
82+
5983
func (l *Stubber) Run(ctx context.Context, target string, args, envs []string) error {
6084
l.Runner.Args = args
6185
l.Runner.Envs = envs
6286

6387
cmd := exec.CommandContext(ctx, l.Runner.FFMPEGPath, l.Runner.Args...)
6488

65-
if target == define.FFPROBE {
89+
if target == define.FFPROBEBin {
6690
cmd = exec.CommandContext(ctx, l.Runner.FFPROBEPath, l.Runner.Args...)
6791
}
6892

0 commit comments

Comments
 (0)