# Media Coding Web - Configuration & Run Guide

To properly test and run this project, you will need to prepare your environment:

1. **Install Node.js & FFmpeg**:
   - Ensure Node.js (v18+) is installed.
   - Install **FFmpeg** on your system and make sure it is available in your PATH environment variable. The Node.js library `fluent-ffmpeg` requires it.
   - If you plan to use Rockchip hardware encoding, make sure your FFmpeg build includes `h264_rkmpp` / `hevc_rkmpp` support and the device has the Rockchip MPP runtime available.
   - The service always uses Jellyfin FFmpeg by default: `/usr/lib/jellyfin-ffmpeg/ffmpeg` and `/usr/lib/jellyfin-ffmpeg/ffprobe`. You can override them with `JELLYFIN_FFMPEG_PATH` and `JELLYFIN_FFPROBE_PATH`.

2. **AWS S3 / MinIO Configuration**:
   - Modify the `.env` file (copy from `.env.example`).
   - Add your `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION`, and `S3_BUCKET_NAME`.
   - If using **MinIO**, ensure you set the `S3_ENDPOINT` (e.g., `http://127.0.0.1:9000`) and set `S3_FORCE_PATH_STYLE=true`.
   - Ensure your bucket has `.mp4` video files.

3. **Install Dependencies & Start**:
   ```bash
   npm install
   npm start
   ```

4. **Test Delivery**:
   - Open your browser to `http://localhost:3000`.
   - The application should display available `.mp4` items from your S3 bucket.
   - Click one video, and the Node server will begin to read the S3 stream and pipe it to FFmpeg, transcoding it into HLS segments inside the `/public/hls/` directory.
   - The frontend polls via `/api/status`, and once the index playlist is available, HLS playback starts!
