diff --git a/src/main/frontend/components/ClipRangeSlider.tsx b/src/main/frontend/components/ClipRangeSlider.tsx
index b5cd036..ef29727 100644
--- a/src/main/frontend/components/ClipRangeSlider.tsx
+++ b/src/main/frontend/components/ClipRangeSlider.tsx
@@ -1,12 +1,12 @@
-import {VideoMetadataFrontend} from "Frontend/components/Playbar";
import RangeSlider from 'react-range-slider-input';
import 'react-range-slider-input/dist/style.css';
import {useRef} from "react";
import clsx from 'clsx';
+import VideoMetadata from "Frontend/generated/com/ddf/vodsystem/entities/VideoMetadata";
type Props = {
videoRef: HTMLVideoElement | null;
- videoMetadata: VideoMetadataFrontend;
+ videoMetadata: VideoMetadata;
setSliderValue: Function;
setClipRangeValue: Function;
className?: string;
diff --git a/src/main/frontend/components/PlaybackSlider.tsx b/src/main/frontend/components/PlaybackSlider.tsx
index f4133dd..6f1fa34 100644
--- a/src/main/frontend/components/PlaybackSlider.tsx
+++ b/src/main/frontend/components/PlaybackSlider.tsx
@@ -1,10 +1,10 @@
-import {VideoMetadataFrontend} from "Frontend/components/Playbar";
import {useEffect, useState} from "react";
import clsx from 'clsx';
+import VideoMetadata from "Frontend/generated/com/ddf/vodsystem/entities/VideoMetadata";
type Props = {
videoRef: HTMLVideoElement | null;
- videoMetadata: VideoMetadataFrontend;
+ videoMetadata: VideoMetadata;
sliderValue: number;
setSliderValue: Function;
className?: string;
diff --git a/src/main/frontend/components/Playbar.tsx b/src/main/frontend/components/Playbar.tsx
index b427d31..bd057bc 100644
--- a/src/main/frontend/components/Playbar.tsx
+++ b/src/main/frontend/components/Playbar.tsx
@@ -1,20 +1,12 @@
import { useEffect, useState} from "react";
import { Volume, Play, Pause } from 'lucide-react';
import clsx from 'clsx';
+import VideoMetadata from "Frontend/generated/com/ddf/vodsystem/entities/VideoMetadata";
-export type VideoMetadataFrontend = {
- startPoint: number,
- endPoint: number,
- fps: number,
- width: number,
- height: number,
- fileSize: number
-}
-
type Props = {
video: HTMLVideoElement | null;
- videoMetadata: VideoMetadataFrontend;
+ videoMetadata: VideoMetadata;
className?: string;
};
@@ -87,9 +79,11 @@ export default function Playbar({ video, videoMetadata, className }: Props) {
-
+ {videoMetadata.endPoint &&
+
+ }
);
}
\ No newline at end of file
diff --git a/src/main/frontend/views/video/{id}.tsx b/src/main/frontend/views/video/{id}.tsx
index 84f64b0..0f9b247 100644
--- a/src/main/frontend/views/video/{id}.tsx
+++ b/src/main/frontend/views/video/{id}.tsx
@@ -1,11 +1,11 @@
import { useParams } from 'react-router-dom';
import { useEffect, useRef, useState } from "react";
-import { VideoMetadataFrontend } from "Frontend/components/Playbar";
import Playbar from "./../../components/Playbar";
import PlaybackSlider from "./../../components/PlaybackSlider";
import ClipRangeSlider from "./../../components/ClipRangeSlider";
import ClipConfig from "./../../components/ClipConfig";
import * as editService from "../../generated/EditService";
+import * as metadataService from "../../generated/MetadataService"
import VideoMetadata from "Frontend/generated/com/ddf/vodsystem/entities/VideoMetadata";
function exportFile(uuid: string,
@@ -36,7 +36,7 @@ export default function VideoId() {
const videoRef = useRef(null);
const videoUrl = `api/v1/download/input/${id}`
- const [metadata, setMetadata] = useState(null);
+ const [metadata, setMetadata] = useState(null);
const [playbackValue, setPlaybackValue] = useState(0);
const [clipRangeValue, setClipRangeValue] = useState([0, 1]);
const [width, setWidth] = useState(1280);
@@ -45,13 +45,11 @@ export default function VideoId() {
const [fileSize, setFileSize] = useState(10);
useEffect(() => {
- fetch(`api/v1/metadata/original/${id}`)
- .then((res) => {
- if (!res.ok) throw new Error("Failed to fetch metadata");
- return res.json();
- })
- .then(setMetadata)
- .catch((err) => console.log(err.message));
+ if (!id) return;
+
+ metadataService.getInputFileMetadata(id)
+ .then((data) => setMetadata(data ?? null)) // 👈 Normalize undefined to null
+ .catch((err) => console.error("Metadata fetch failed:", err));
}, [id]);
const sendData = () => {
diff --git a/src/main/java/com/ddf/vodsystem/services/CompressionService.java b/src/main/java/com/ddf/vodsystem/services/CompressionService.java
index 6175504..fb0ebad 100644
--- a/src/main/java/com/ddf/vodsystem/services/CompressionService.java
+++ b/src/main/java/com/ddf/vodsystem/services/CompressionService.java
@@ -28,12 +28,6 @@ public class CompressionService {
private final Pattern timePattern = Pattern.compile("out_time_ms=([\\d:.]+)");
- private final MetadataService metadataService;
-
- public CompressionService(MetadataService metadataService) {
- this.metadataService = metadataService;
- }
-
private void buildFilters(ArrayList command, Float fps, Integer width, Integer height) {
List filters = new ArrayList<>();
@@ -138,10 +132,6 @@ public class CompressionService {
throw new FFMPEGException("FFMPEG process failed");
}
- // set new metadata
- VideoMetadata newMetadata = metadataService.getVideoMetadata(job.getOutputFile());
- job.setOutputVideoMetadata(newMetadata);
-
job.setStatus(JobStatus.FINISHED);
logger.info("FFMPEG finished");
}
diff --git a/src/main/java/com/ddf/vodsystem/services/MetadataService.java b/src/main/java/com/ddf/vodsystem/services/MetadataService.java
index 779eaf1..6431899 100644
--- a/src/main/java/com/ddf/vodsystem/services/MetadataService.java
+++ b/src/main/java/com/ddf/vodsystem/services/MetadataService.java
@@ -1,5 +1,6 @@
package com.ddf.vodsystem.services;
+import com.ddf.vodsystem.entities.Job;
import com.ddf.vodsystem.entities.VideoMetadata;
import com.ddf.vodsystem.exceptions.FFMPEGException;
import com.fasterxml.jackson.databind.JsonNode;
@@ -21,6 +22,12 @@ import java.io.InputStreamReader;
public class MetadataService {
private static Logger logger = LoggerFactory.getLogger(MetadataService.class);
+ private final JobService jobService;
+
+ public MetadataService(JobService jobService) {
+ this.jobService = jobService;
+ }
+
public VideoMetadata getVideoMetadata(File file) {
logger.info("Getting metadata for file {}", file.getAbsolutePath());
@@ -45,6 +52,16 @@ public class MetadataService {
}
+ public VideoMetadata getInputFileMetadata(String uuid) {
+ Job job = jobService.getJob(uuid);
+ return getVideoMetadata(job.getInputFile());
+ }
+
+ public VideoMetadata getOutputFileMetadata(String uuid) {
+ Job job = jobService.getJob(uuid);
+ return getVideoMetadata(job.getOutputFile());
+ }
+
private JsonNode readStandardOutput(Process process) throws IOException{
// Read the standard output (JSON metadata)
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));