Recorder model was creating capture containers but ffmpeg never spawned
inside them, so SRT/RTMP listeners bound the host port without ingesting
anything. Thumbnail extraction was also crashing on yuv444p sources,
leaving uploaded assets stuck at status=processing forever.
* capture/src/index.js: read RECORDER_ID/SOURCE_TYPE/LISTEN/LISTEN_PORT/
STREAM_KEY/SOURCE_URL from env on startup and call captureManager.start()
immediately. SIGTERM handler now flushes ffmpeg + S3 upload and POSTs the
asset to mam-api before exiting.
* worker/ffmpeg/executor.js: force -pix_fmt yuv420p on proxy transcode and
-pix_fmt yuvj420p on thumbnail extraction so mjpeg encoder accepts the
input regardless of source pixel format.
* mam-api/routes/assets.js: when capture posts proxyKey=null but hiresKey
is set (SRT/RTMP case), enqueue a proxy job from the hires so the asset
ends up with a browser-playable proxy + thumbnail instead of stuck-ready.
* mam-api/routes/recorders.js: accept UI field aliases (codec/resolution/
proxy_config), clean up unstarted containers on port collision, bump the
docker stop timeout to 5min so long uploads can flush.
* web-ui/recorders.html: change default ports from 1935/9000 to 41936/49001
to avoid common collisions with other RTMP/SRT services.