Cause: subprocess.run calls have no timeout.
Analysis: Corrupt or malformed inputs can hang workers indefinitely and stall the pool.
Acceptance Criteria:
- ffprobe/ffmpeg calls time out and fail the task safely.
- Worker remains responsive under bad inputs.
Solution Approach:
- Add timeouts and handle
TimeoutExpired.
- Consider watchdog/heartbeat for long-running tasks.