File size: 1,638 Bytes
8939f6f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# API-wide media output validation

Every file-producing operation that reaches `MediaProcessor.finish_result` now validates its final artifact before publication. This covers the shared execution path used by the standalone video, audio, image, conversion, and template APIs.

## Validation sequence

1. Verify that the output path exists and is a regular file.
2. Reject zero-byte artifacts.
3. For audio, video, and image MIME types, run FFprobe on the actual output file.
4. Require a video stream for video outputs, an audio stream for audio outputs, and at least one decodable stream for image outputs.
5. Apply the shared media-probe constraints and require a finite, positive duration for audio/video outputs.
6. Publish only after validation succeeds.

A failed check raises a processing error; the file is not published as a successful response.

## Response metadata

Successful file responses include `metadata.output_validation`:

- `valid`, `file_artifact`, `size_bytes`, and `mime_type`
- `probed` indicates whether FFprobe ran
- `container`, `duration_seconds`, `video_stream_count`, `audio_stream_count`, and `resolution` are populated when probing is applicable and successful

Text-like outputs such as SRT/VTT and JSON artifacts are checked for file existence and non-zero size, but are not sent through FFprobe. Responses without a file artifact are not subject to file-output validation.

## Operational note

FFprobe validation adds work after each render. The output must be fully readable by FFprobe before the API publishes it. Automated tests and a live render should be run before merging this change request.