Files
timelapse-diapo/diagrams/backend/backend3.puml

39 lines
1.6 KiB
Plaintext

@startuml Création de vidéo
actor Client
participant "videoRoutes" as Routes
participant "VideoController" as Controller
participant "Video" as Model
participant "Measurement" as MeasurementModel
participant "VideoService" as Service
participant "FFmpeg" as FFmpeg
database Database
Client -> Routes: POST /videos
Routes -> Controller: createVideo(req, res)
Controller -> Model: createVideo(project_id, measurement_ids, name, resolution, duration)
Model -> Database: INSERT INTO videos
Database --> Model: video data
Model --> Controller: video object
Controller -> Controller: getMeasurementPathList(measurement_ids, project_id)
Controller -> MeasurementModel: getMeasurementByProjectAndOrderId(projectId, orderId)
MeasurementModel -> Database: SELECT * FROM measurements
Database --> MeasurementModel: measurement data
MeasurementModel --> Controller: measurement object with path
Controller -> Service: createVideoFromImages(project_id, pathList, duration, video_id, resWidth, resHeight)
Service -> FFmpeg: spawn('ffmpeg', ffmpegArgs)
Service -> Model: updateVideo(videoId, {status: rendering, progress: 0})
Model -> Database: UPDATE videos SET status = rendering, progress = 0
FFmpeg --> Service: stderr progress events
Service -> Model: updateVideoProgress(videoId, progress, eta)
Model -> Database: UPDATE videos SET progress = X, eta = Y
FFmpeg --> Service: process complete
Service -> Model: updateVideo(videoId, {status: completed, progress: 100})
Model -> Database: UPDATE videos SET status = completed, progress = 100
Service --> Controller: videoFile path
Controller --> Routes: { message: success, id: video.id }
Routes --> Client: 200 OK - JSON Response
@enduml