-
Notifications
You must be signed in to change notification settings - Fork 1
FFmpeg
On the FFmpeg page you'll find presets that you can apply to each video you want. Depending on the build you may find example presets upon installation. Here I will talk you through the process.
So the first option is Name, this is required for identification but does nothing more than that. Where ever you see this preset around the application it will also include the Encoder you've selected, so putting the encoders name (like x265) in the name is unnecessary.
Before any of these options are available to you the application checks with FFmpeg on your system to see what is capable.
You can choose to keep the existing container or use one suited to the encoder you wish to use. I would recommend "Copy" when you're also copying the encoders, otherwise, make sure the encoder is compatible with the container. Matroska is a good choice here.
This is probably why you're here. "Copy" will just copy the video stream. The next bunch of options comes from the pre-defined presets in the CodecOptions folder of the applications config folder. The rest is all the other encoders FFmpeg supports on your system.
Video Bitrate will automatically enable 2-Pass encoding and will disable constant quality based options.
So if the name of the encoder matches the name of a file.json in the CodecOptions folder it will read the presets and display those options. Otherwise, you get the global FFmpeg options and the chance to type in your own parameters. You can if you wish create your own .json files to help build the preset up, for any of the video encoders.
On some of the Additional codec based options you may see a calculator symbol, this will enable automatic calculation of that option just before the arguments for FFmpeg is calculated for that movie. What it does is creates a sample of the movie, based on an optional time length, and then encodes the video using the other settings it's got and each of the available options, in turn, analysing the SSIM percentage and the compression ratio. It then makes a recommendation based on the most accurate video coming in at what it thinks will be compressed.
So these options should read as the logic is implemented. So you might say: When the Codec isn't AAC then Encode to AAC. But there must be backup logic to this, otherwise if the codec IS AAC, what does it do then? Well, you probably want to copy the stream, this needs specifying. A good example of this is:
- When Codec isn't AAC and When Language is Eng Then Encode AAC 64k
- When Codec is AAC and Language is Eng Then Copy
- When Any Delete Unless Only
Rules are run in order and are final so once a rule matches the next rule doesn't run, so there must always be a "When Any" rule at the end to catch streams that don't match anything else.
To summarise this ruleset: If the audio stream is not AAC and in English, we're going to encode it to AAC, otherwise if it is in AAC and English we're going to copy it as is. Otherwise, we're going to ignore the stream unless it's the last stream and no other streams have been enabled. This is useful for videos with no native languages.
There is also the option to clone an audio stream, this copies the source stream to the destination twice and encodes one of them, thus keeping an original.
A note on "Delete": We don't delete anything it just isn't mapped to the output video file.
- Attachments - Often fonts used in subtitles, sometimes screenshots.
- Data - Not sure, for streaming data alongside a video.
- Metadata - Title of streams, languages, source information, etc.
- Subtitles - Well, the subtitles.
Be sure about the source files, FFmpeg cannot encode text subtitles to bitmap or visa versa. If you are going to choose a subtitle encoder make sure all your source files can be encoded. Otherwise, just leave it on copy.
Here you can put in your own FFmpeg arguments that will get added to just after the video encoder is specified and the additional codec options are added.
Once a job has been created the arguments are available to inspect by clicking the (i) icon, on the Jobs page.