|
8 | 8 |
|
9 | 9 | # FFEncoder
|
10 | 10 |
|
11 |
| -FFEncoder is a cross-platform PowerShell script and module that is meant to make high definition video encoding workflows easier. FFEncoder uses [ffmpeg](https://ffmpeg.org/), [ffprobe](https://ffmpeg.org/ffprobe.html), the [x264 H.264 encoder](https://x264.org/en/), and the [x265 HEVC encoder](https://x265.readthedocs.io/en/master/index.html) to compress video files for streaming or archiving. |
| 11 | +FFEncoder is a cross-platform PowerShell script and module that is meant to make high definition video encoding workflows easier. FFEncoder uses [ffmpeg](https://ffmpeg.org/), [VapourSynth](https://www.vapoursynth.com/doc/), [Mkvtoolnix](https://mkvtoolnix.download/), [ffprobe](https://ffmpeg.org/ffprobe.html), the [x264 H.264 encoder](https://x264.org/en/), and the [x265 HEVC encoder](https://x265.readthedocs.io/en/master/index.html) to compress, filter, and multiplex multimedia files for streaming or archiving. |
12 | 12 |
|
13 | 13 | - [FFEncoder](#ffencoder)
|
14 | 14 | - [About](#about)
|
@@ -48,7 +48,8 @@ Check out the [wiki](https://github.com/patrickenfuego/FFEncoder/wiki) for addit
|
48 | 48 |
|
49 | 49 | - ffmpeg / ffprobe
|
50 | 50 | - PowerShell v. 7.0 or newer
|
51 |
| -- [Mkvtoolnix](https://mkvtoolnix.download/) (optional, but highly recommended) |
| 51 | +- Mkvtoolnix (optional, but highly recommended) |
| 52 | +- VapourSynth (optional) |
52 | 53 |
|
53 | 54 | The script requires PowerShell 7.0 or newer on all systems as it utilizes new parallel processing features introduced in this version. Multi-threading prior to PowerShell 7 was prone to memory leaks which persuaded me to make the change.
|
54 | 55 |
|
@@ -167,14 +168,15 @@ FFEncoder can accept the following parameters from the command line:
|
167 | 168 |
|
168 | 169 | > An Asterisk <b>\*</b> denotes that the parameter is mandatory only for its given parameter set (for example, you can choose either `-CRF` or `-VideoBitrate` for rate control, but not both):
|
169 | 170 |
|
170 |
| -| Parameter Name | Default | Mandatory | Alias | Description | Mandatory For | |
171 |
| -| ---------------- | ------- | ------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------- | |
172 |
| -| **InputPath** | N/A | True | **I**, **Source**, **Reference** | The path to the source file, i.e. remux. Also acts as the reference path for VMAF comparisons | All | |
173 |
| -| **OutputPath** | N/A | True | **O**, **Encode**, **Distorted** | The path of the the encoded output file, or the encoded (distorted) file path during VMAF comparisons | All | |
174 |
| -| **CRF** | N/A | <b>\*</b>True | **C** | Rate control parameter that targets a specific quality level. Ranges from 0.0 to 51.0. Lower values result in higher quality | Rate Control | |
175 |
| -| **VideoBitrate** | N/A | <b>\*</b>True | **VBitrate** | Rate control parameter that targets a specific bitrate. Can be used as an alternative to CRF when file size is a priority | Rate Control | |
176 |
| -| **ScaleFilter** | None | <b>\*</b>True | **Resize**, **Resample** | Scaling filter to use. Scaling options are `scale` (ffmpeg default) and `zscale` (requires `libzimg`) | Resizing | |
177 |
| -| **CompareVMAF** | N/A | <b>\*</b>True | None | Runs a VMAF comparison on two video files | VMAF | |
| 171 | +| Parameter Name | Default | Mandatory | Alias | Description | Mandatory For | |
| 172 | +| ---------------- | ------- | ------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | |
| 173 | +| **InputPath** | N/A | True | **I**, **Source**, **Reference** | The path to the source file, i.e. remux. Also acts as the reference path for VMAF comparisons | All | |
| 174 | +| **OutputPath** | N/A | True | **O**, **Encode**, **Distorted** | The path of the the encoded output file, or the encoded (distorted) file path during VMAF comparisons | All | |
| 175 | +| **CRF** | N/A | <b>\*</b>True | **C** | Rate control parameter that targets a specific quality level. Ranges from 0.0 to 51.0. Lower values result in higher quality | Rate Control | |
| 176 | +| **VideoBitrate** | N/A | <b>\*</b>True | **VBitrate** | Rate control parameter that targets a specific bitrate. Can be used as an alternative to CRF when file size is a priority | Rate Control | |
| 177 | +| **Scale** | None | <b>\*</b>True | **ScaleType**, **SF** | Scaling/resizing filter to use. See [Rescaling Video](https://github.com/patrickenfuego/FFEncoder/wiki/Video-Options#rescaling-videos) for more info | Scaling | |
| 178 | +| **Unsharp** | None | <b>\*</b>True | **U** | Enable unsharp filter and set search range, in the form `<luma\|chroma\|yuv>_<small\|medium\|large>` or `custom=<filter>` | Sharpen/Blur | |
| 179 | +| **CompareVMAF** | N/A | <b>\*</b>True | None | Flag to enable a VMAF comparison on two video files | VMAF | |
178 | 180 |
|
179 | 181 | ### Utility
|
180 | 182 |
|
@@ -206,23 +208,27 @@ FFEncoder can accept the following parameters from the command line:
|
206 | 208 |
|
207 | 209 | ### Video Filtering
|
208 | 210 |
|
209 |
| -| Parameter Name | Default | Mandatory | Alias | Description | |
210 |
| -| --------------- | ---------------- | --------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | |
211 |
| -| **Deinterlace** | Disabled | False | **DI** | Switch to enable deinterlacing of interlaced content using yadif | |
212 |
| -| **NLMeans** | Disabled | False | **NL** | High quality de-noising filter. Accepts a hashtable containing 5 values. See [here](https://ffmpeg.org/ffmpeg-filters.html#nlmeans-1) for more info | |
213 |
| -| **Scale** | bilinear | False | **ScaleType**, **SF** | Scaling/resizing filter to use. See [Rescaling Video](https://github.com/patrickenfuego/FFEncoder/wiki/Video-Options#rescaling-videos) for more info | |
214 |
| -| **Resolution** | Source Dependent | False | **Res**, **R** | Scaling resolution. See [Rescaling Video](https://github.com/patrickenfuego/FFEncoder/wiki/Video-Options#rescaling-videos) for more info | |
| 211 | +> See the Mandatory section above for parameters needed to enable certain filters |
| 212 | +
|
| 213 | +| Parameter Name | Default | Mandatory | Alias | Description | |
| 214 | +| ------------------- | ---------------- | --------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 215 | +| **Deinterlace** | Disabled | False | **DI** | Switch to enable deinterlacing of interlaced content using yadif | |
| 216 | +| **NLMeans** | Disabled | False | **NL** | High quality de-noising filter. Accepts a hashtable containing 5 values. See [here](https://ffmpeg.org/ffmpeg-filters.html#nlmeans-1) for more info | |
| 217 | +| **Scale** | bilinear | False | **ScaleType**, **SF** | Scaling/resizing filter to use. See [Rescaling Video](https://github.com/patrickenfuego/FFEncoder/wiki/Video-Options#rescaling-videos) for more info | |
| 218 | +| **Resolution** | Source Dependent | False | **Res**, **R** | Scaling resolution. See [Rescaling Video](https://github.com/patrickenfuego/FFEncoder/wiki/Video-Options#rescaling-videos) for more info | |
| 219 | +| **UnsharpStrength** | luma_mild | False | **UStrength** | Specify the unsharp filters strength, in the form `<sharpen\|blur>_<mild\|medium\|strong>` | |
215 | 220 |
|
216 | 221 | ### Encoder Config
|
217 | 222 |
|
218 |
| -| Parameter Name | Default | Mandatory | Alias | Description | |
219 |
| -| ------------------- | ------------ | --------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
220 |
| -| **Encoder** | x265 | False | **Enc** | Specifies which encoder to use - x264 or x265 | |
221 |
| -| **FirstPassType** | Default | False | **PassType**, **FTP** | Tuning option for two pass encoding. See [Two Pass Encoding Options](https://github.com/patrickenfuego/FFEncoder/wiki/Video-Options#two-pass-encoding-options) for more info | |
222 |
| -| **SkipDolbyVision** | False | False | **NoDV**, **SDV** | Switch to disable Dolby Vision encoding, even if metadata is present | |
223 |
| -| **SkipHDR10Plus** | False | False | **No10P**, **NTP** | Switch to disable HDR10+ encoding, even if metadata is present | |
224 |
| -| **TestFrames** | 0 (Disabled) | False | **T**, **Test** | Integer value representing the number of test frames to encode. When `-TestStart` is not set, encoding starts at 00:01:30 so that title screens are skipped | |
225 |
| -| **TestStart** | Disabled | False | **Start**, **TS** | Starting point for test encodes. Accepts formats `00:01:30` (sexagesimal time), `200f` (frame start), `200t` (decimal time in seconds) | |
| 223 | +| Parameter Name | Default | Mandatory | Alias | Description | |
| 224 | +| --------------------- | ------------ | --------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 225 | +| **Encoder** | x265 | False | **Enc** | Specifies which encoder to use - x264 or x265 | |
| 226 | +| **FirstPassType** | Default | False | **PassType**, **FTP** | Tuning option for two pass encoding. See [Two Pass Encoding Options](https://github.com/patrickenfuego/FFEncoder/wiki/Video-Options#two-pass-encoding-options) for more info | |
| 227 | +| **SkipDolbyVision** | False | False | **NoDV**, **SDV** | Switch to disable Dolby Vision encoding, even if metadata is present | |
| 228 | +| **SkipHDR10Plus** | False | False | **No10P**, **NTP** | Switch to disable HDR10+ encoding, even if metadata is present | |
| 229 | +| **TestFrames** | 0 (Disabled) | False | **T**, **Test** | Integer value representing the number of test frames to encode. When `-TestStart` is not set, encoding starts at 00:01:30 so that title screens are skipped | |
| 230 | +| **TestStart** | Disabled | False | **Start**, **TS** | Starting point for test encodes. Accepts formats `00:01:30` (sexagesimal time), `200f` (frame start), `200t` (decimal time in seconds) | |
| 231 | +| **VapourSynthScript** | Disabled | False | **VSScript**, **VPY** | Path to VapourSynth script. Video filtering parameters are ignored when enabled, and must be done in the vpy script | |
226 | 232 |
|
227 | 233 | ### Universal Encoder Settings
|
228 | 234 |
|
|
0 commit comments