mirror of
https://github.com/truewhile/MeBox.git
synced 2026-10-02 12:26:36 +08:00
bug处理
This commit is contained in:
@@ -146,8 +146,7 @@ func (t *TranscoderService) EnsureJobFrom(ctx context.Context, mediaID string, s
|
||||
|
||||
outDir := t.HLSDir(mediaID)
|
||||
// Wipe prior segments so a mid-file restart cannot serve stale early chunks.
|
||||
_ = os.RemoveAll(outDir)
|
||||
if err := os.MkdirAll(outDir, 0o750); err != nil {
|
||||
if err := resetHLSDir(outDir); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
@@ -192,6 +191,24 @@ func sameHLSStart(a, b float64) bool {
|
||||
return a-b < tol
|
||||
}
|
||||
|
||||
func resetHLSDir(dir string) error {
|
||||
var lastErr error
|
||||
for i := 0; i < 6; i++ {
|
||||
lastErr = os.RemoveAll(dir)
|
||||
if lastErr == nil {
|
||||
break
|
||||
}
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
}
|
||||
if err := os.MkdirAll(dir, 0o750); err != nil {
|
||||
return err
|
||||
}
|
||||
// Best-effort: if RemoveAll kept failing on Windows locks, at least drop the playlist
|
||||
// so WaitReady cannot treat the stale file as belonging to the new job.
|
||||
_ = os.Remove(filepath.Join(dir, "index.m3u8"))
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetStrmPlayTargetResolver wires STRM URL resolution so ffmpeg can transcode
|
||||
// remote .strm media (HTTP 直链 or local source path) after direct play fails.
|
||||
func (t *TranscoderService) SetStrmPlayTargetResolver(resolve func(ctx context.Context, raw string) (*StrmPlayResult, error)) {
|
||||
|
||||
Reference in New Issue
Block a user