Encoder FFmpeg - vaismais/obs-StreamFX GitHub Wiki
Originally released as a separate plugin, the FFmpeg Encoder feature allows you to use any FFmpeg video or audio encoder directly in the Streaming or Recording tab of OBS Studio. It implements interfaces to both software and hardware encoders and attempts to minimize the overhead FFmpeg has where possible.
Version Information
Status | Version |
---|---|
🔴Added | 0.8.0a2 |
🟠Unstable | 0.9 |
🟢Stable | 0.10 |
N/A | |
❌Removed | N/A |
As FFmpeg encoder implementations vary in quality and stability, it was decided to separate OBS Studio from the effects of the encoder. This results in a single copy being made on the chosen device itself, allowing faster encoding performance and a more stable experience overall. The resulting behavior and performance is identical to the current "Zero"-Copy implementations in OBS Studio.
All FFmpeg Encoder options have a default value that just accepts whatever FFmpeg thinks the default should be. For number fields, the default value can either be achieved with -1 or 0. This is a libOBS limitation and we can do nothing about it.
Specify settings in the format -key=value -key=value
here to either enhance or override settings provided with the UI. Values can include spaces if the value is surrounded by double quotes (-key="value value"
). This can allow supporting unusual FFmpeg versions, but generally is recommended against. Available settings here are those provided by the AVCodecContext and the chosen encoder in question.
If the encoder is Hardware Accelerated and supports multi-GPU encoding, allows choosing which GPU the encoder will run on. The default of -1
will pick the GPU that OBS Studio is running on and shares the DirectX or OpenGL context with the encoder, thus allowing for zero-copy encoding. Anything else will pick GPUs in an undeterminable order, usually set by either the Operating System or the Drivers.
The ideal number of threads to use for an encoder if the encoder support this feature. As this is a soft limit, encoders may opt to exceed the set value at will.
Override at which Framerate the encoder will encode at, which may improve quality or provide other benefits. The underlying implementation does this by skipping every X framerates, where X is the integer fraction of the framerate. This settings may not be compatible with all services and outputs, so the usual Trial & Error method should be applied.