Passsing some quality / transcoding mode arguments to the remote runners #6190

Open
opened 2026-02-22 12:34:45 -05:00 by deekerman · 2 comments
Owner

Originally created by @vincib on GitHub (Jun 27, 2025).

Describe the problem to be solved

Today it's possible to set the transcoding quality to be based on CRF and not BITRATE via a plugin: https://framagit.org/framasoft/peertube/official-plugins/-/tree/master/peertube-plugin-transcoding-custom-quality

but it's not possible to use this plugin when you use remote-runners to transcode your videos.

Using remote runners is good because it allows you to mutualize CPU / GPU resources between many peertubes.

I'd like to be able to have the best of both worlds 🥇

Describe the solution you would like

This feature request would be to be able to pass some parameters (to be determined) from the peertube instance to the remote runner to allow the runner to use different encoding profile depending on the peertube instance.

The basic parameters could be :

  • bitrate or CRF-based?
  • bitrate at 1080p (and a linear formula to determine the bitrate at 720p & others) for bitrate-based transcoding
  • crf value for CRF mode (quality, not bitrate-bound)
Originally created by @vincib on GitHub (Jun 27, 2025). ### Describe the problem to be solved Today it's possible to set the transcoding quality to be based on CRF and not BITRATE via a plugin: https://framagit.org/framasoft/peertube/official-plugins/-/tree/master/peertube-plugin-transcoding-custom-quality but it's not possible to use this plugin when you use [remote-runners](https://docs.joinpeertube.org/admin/remote-runners) to transcode your videos. Using remote runners is good because it allows you to mutualize CPU / GPU resources between many peertubes. I'd like to be able to have the best of both worlds 🥇 ### Describe the solution you would like This feature request would be to be able to pass some parameters (to be determined) from the peertube instance to the remote runner to allow the runner to use different encoding profile depending on the peertube instance. The basic parameters could be : - bitrate or CRF-based? - bitrate at 1080p (and a linear formula to determine the bitrate at 720p & others) for bitrate-based transcoding - crf value for CRF mode (quality, not bitrate-bound)
Author
Owner

@vincib commented on GitHub (Jun 27, 2025):

Basically this could mean:

  • using a plugin on peertube that would allow you to set some parameters on the remote runners (live/vod/studio/transcription)
  • using a plugin on the remote-runner to use those parameters
@vincib commented on GitHub (Jun 27, 2025): Basically this could mean: - using a plugin on peertube that would allow you to set some parameters on the remote runners (live/vod/studio/transcription) - using a plugin on the remote-runner to use those parameters
Author
Owner

@vincib commented on GitHub (Sep 18, 2025):

FYI, I wanted to upgrade the CRF to 21 (better quality) so I patched my peertube-runner that way :

-  command.outputOption("-max_muxing_queue_size 1024").outputOption("-map_metadata -1").outputOption("-pix_fmt yuv420p");
+  command.outputOption("-max_muxing_queue_size 1024").outputOption("-map_metadata -1").outputOption("-pix_fmt yuv420p").outputOption("-crf 21");
@vincib commented on GitHub (Sep 18, 2025): FYI, I wanted to upgrade the CRF to 21 (better quality) so I patched my peertube-runner that way : ``` - command.outputOption("-max_muxing_queue_size 1024").outputOption("-map_metadata -1").outputOption("-pix_fmt yuv420p"); + command.outputOption("-max_muxing_queue_size 1024").outputOption("-map_metadata -1").outputOption("-pix_fmt yuv420p").outputOption("-crf 21"); ```
Sign in to join this conversation.
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
starred/PeerTube#6190
No description provided.