Recorder: default All-Intra HEVC (NVENC), custom bitrate, auto fps/res, source-bitrate warning #171

Open
zgaetano wants to merge 0 commits from feat/recorder-codec-bitrate into main
Owner

Addresses the recorder GUI codec/bitrate asks.

#2 — Recorder codec + bitrate

  • Default codec → hevc_nvenc (All-Intra HEVC NVENC, fragmented MOV, growing-capable). ProRes/H.264/DNxHR still selectable. recorders.js default flips prores_hqhevc_nvenc.
  • Custom target bitrate (Mbps) input — shown only for bitrate-controlled codecs (NVENC/x264/x265/DNxHD); ProRes shows "quality-based" (ignores bitrate).
  • Framerate + resolution auto-detected from the source (manual fields removed).
  • Container derived from codec (HEVC/ProRes/DNxHR → fragmented MOV, H.264 → MP4) — removes the stub container picker (closes #150 direction).

#3 — SRT/RTMP customization + bitrate warning

  • Same codec/bitrate/auto controls apply to network recorders.
  • Warns when the configured target bitrate exceeds the probed source stream bitrate (via /recorders/probe) — re-encoding above source adds storage, not quality.

Verified on zampp1

  • New recorder defaults to hevc_nvenc / MOV (API)
  • Modal bundle compiled with NVENC codec list, bitrate input, and the over-source warning
  • Capture with hevc_nvenc @ custom 40M → master hevc 10-bit Main 10, resolution auto-detected (1920×1080), HLS generated, bitrate knob flows to ffmpeg VBR target

Known limitation / follow-up

  • The bitrate warning fires for probeable streams (caller URLs) at config time. For listener-mode recorders the source bitrate isn't known until a stream connects, so a runtime warning there would need a capture-service probe + status surface — not included here.

🤖 Generated with Claude Code

Addresses the recorder GUI codec/bitrate asks. ## #2 — Recorder codec + bitrate - **Default codec → `hevc_nvenc`** (All-Intra HEVC NVENC, fragmented MOV, growing-capable). ProRes/H.264/DNxHR still selectable. `recorders.js` default flips `prores_hq` → `hevc_nvenc`. - **Custom target bitrate (Mbps)** input — shown only for bitrate-controlled codecs (NVENC/x264/x265/DNxHD); ProRes shows "quality-based" (ignores bitrate). - **Framerate + resolution auto-detected** from the source (manual fields removed). - **Container derived from codec** (HEVC/ProRes/DNxHR → fragmented MOV, H.264 → MP4) — removes the stub container picker (closes #150 direction). ## #3 — SRT/RTMP customization + bitrate warning - Same codec/bitrate/auto controls apply to network recorders. - **Warns when the configured target bitrate exceeds the probed source stream bitrate** (via `/recorders/probe`) — re-encoding above source adds storage, not quality. ## Verified on zampp1 - New recorder defaults to `hevc_nvenc` / MOV (API) - Modal bundle compiled with NVENC codec list, bitrate input, and the over-source warning - Capture with `hevc_nvenc` @ custom 40M → master `hevc` 10-bit Main 10, resolution auto-detected (1920×1080), HLS generated, bitrate knob flows to ffmpeg VBR target ## Known limitation / follow-up - The bitrate warning fires for **probeable** streams (caller URLs) at config time. For **listener-mode** recorders the source bitrate isn't known until a stream connects, so a runtime warning there would need a capture-service probe + status surface — not included here. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
zgaetano added 1 commit 2026-05-29 17:07:26 -04:00
#2 Recorder codec/bitrate:
- Default recorder codec → hevc_nvenc (All-Intra HEVC NVENC); ProRes/H.264/DNxHR
  still selectable. recorders.js default flips prores_hq → hevc_nvenc.
- Custom target bitrate (Mbps) input, shown only for bitrate-controlled codecs
  (NVENC/x264/x265/DNxHD); ProRes shows quality-based (no bitrate).
- Framerate + resolution are auto-detected from source (manual fields removed).
- Container derived from codec (HEVC/ProRes/DNxHR → fragmented MOV, H.264 → MP4);
  drops the stub container picker (closes #150 direction).

#3 SRT/RTMP customization + bitrate warning:
- Same codec/bitrate/auto controls apply to network recorders (shared form).
- Warns in the modal when the configured target bitrate exceeds the probed
  source stream bitrate (via /recorders/probe) — re-encoding above source adds
  storage, not quality.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This branch is already included in the target branch. There is nothing to merge.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/recorder-codec-bitrate:feat/recorder-codec-bitrate
git checkout feat/recorder-codec-bitrate

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git checkout main
git merge --no-ff feat/recorder-codec-bitrate
git checkout feat/recorder-codec-bitrate
git rebase main
git checkout main
git merge --ff-only feat/recorder-codec-bitrate
git checkout feat/recorder-codec-bitrate
git rebase main
git checkout main
git merge --no-ff feat/recorder-codec-bitrate
git checkout main
git merge --squash feat/recorder-codec-bitrate
git checkout main
git merge --ff-only feat/recorder-codec-bitrate
git checkout main
git merge feat/recorder-codec-bitrate
git push origin main
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: WildDragonLLC/dragonflight#171
No description provided.