diff --git a/fs/local_adapter.go b/fs/local_adapter.go
index 828d507..00ff816 100644
--- a/fs/local_adapter.go
+++ b/fs/local_adapter.go
@@ -42,7 +42,15 @@ func (l *LocalAdapter) GetFileList(dirPath string, relDt time.Time) ([]dto.File,
 			continue
 		}
 		if startTime.Equal(stopTime) {
-			stopTime = stopTime.Add(time.Second * time.Duration(config.Config.Record.Duration))
+			// 如果文件名没有时间戳,则认为该文件是未录制完成的
+			// 尝试读取一下视频信息
+			duration, err := util.GetVideoDuration(path.Join(l.StorageConfig.Path, dirPath, file.Name()))
+			if err != nil {
+				// 如果还是没有,就按照配置文件里的加起来
+				stopTime = stopTime.Add(time.Second * time.Duration(config.Config.Record.Duration))
+			} else {
+				stopTime = stopTime.Add(time.Second * time.Duration(duration))
+			}
 		}
 		fileList = append(fileList, dto.File{
 			BasePath:  l.StorageConfig.Path,
diff --git a/util/ffmpeg.go b/util/ffmpeg.go
index 44da5ba..9135b03 100644
--- a/util/ffmpeg.go
+++ b/util/ffmpeg.go
@@ -300,3 +300,30 @@ func handleFfmpegProcess(ffmpegCmd []string) (bool, error) {
 		return true, nil
 	}
 }
+
+func GetVideoDuration(filePath string) (float64, error) {
+	ffprobeCmd := []string{
+		"ffprobe",
+		"-v", "error",
+		"-show_entries", "format=duration",
+		"-of", "default=noprint_wrappers=1:nokey=1",
+		filePath,
+	}
+
+	cmd := exec.Command(ffprobeCmd[0], ffprobeCmd[1:]...)
+	var out bytes.Buffer
+	cmd.Stdout = &out
+
+	err := cmd.Run()
+	if err != nil {
+		return 0, fmt.Errorf("failed to get video duration: %w", err)
+	}
+
+	durationStr := strings.TrimSpace(out.String())
+	duration, err := strconv.ParseFloat(durationStr, 64)
+	if err != nil {
+		return 0, fmt.Errorf("failed to parse video duration: %w", err)
+	}
+
+	return duration, nil
+}
diff --git a/util/parse_time.go b/util/parse_time.go
index a58c45f..349a35e 100644
--- a/util/parse_time.go
+++ b/util/parse_time.go
@@ -19,7 +19,7 @@ func ParseStartStopTime(filePath string, relativeDate time.Time) (time.Time, tim
 	}
 	stopTime, err := ParseTime(split[1], relativeDate)
 	if err != nil {
-		return time.Time{}, time.Time{}, err
+		return startTime, startTime, nil
 	}
 	return startTime, stopTime, nil
 }