Spaces:
Running
Running
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.
|