Added AMF bitrate option

This commit is contained in:
Jaex 2023-07-22 08:23:20 +03:00
parent 08ac18a5d7
commit 9004c7123f
5 changed files with 195 additions and 108 deletions

View file

@ -106,6 +106,9 @@ private void InitializeComponent()
this.cbUseCustomFFmpegPath = new System.Windows.Forms.CheckBox();
this.lblVideoEncoder = new System.Windows.Forms.Label();
this.lblAudioEncoder = new System.Windows.Forms.Label();
this.lblAMFBitrateK = new System.Windows.Forms.Label();
this.nudAMFBitrate = new System.Windows.Forms.NumericUpDown();
this.lblAMFBitrate = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.nudx264CRF)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nudXvidQscale)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.tbVorbis_qscale)).BeginInit();
@ -131,6 +134,7 @@ private void InitializeComponent()
this.tpOpus.SuspendLayout();
this.tpVorbis.SuspendLayout();
this.tpMP3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nudAMFBitrate)).BeginInit();
this.SuspendLayout();
//
// lblx264CRF
@ -529,6 +533,9 @@ private void InitializeComponent()
//
// tbAMF
//
this.tbAMF.Controls.Add(this.lblAMFBitrateK);
this.tbAMF.Controls.Add(this.nudAMFBitrate);
this.tbAMF.Controls.Add(this.lblAMFBitrate);
this.tbAMF.Controls.Add(this.cbAMFQuality);
this.tbAMF.Controls.Add(this.lblAMFQuality);
this.tbAMF.Controls.Add(this.cbAMFUsage);
@ -785,6 +792,37 @@ private void InitializeComponent()
resources.ApplyResources(this.lblAudioEncoder, "lblAudioEncoder");
this.lblAudioEncoder.Name = "lblAudioEncoder";
//
// lblAMFBitrateK
//
resources.ApplyResources(this.lblAMFBitrateK, "lblAMFBitrateK");
this.lblAMFBitrateK.Name = "lblAMFBitrateK";
//
// nudAMFBitrate
//
resources.ApplyResources(this.nudAMFBitrate, "nudAMFBitrate");
this.nudAMFBitrate.Maximum = new decimal(new int[] {
100000,
0,
0,
0});
this.nudAMFBitrate.Minimum = new decimal(new int[] {
100,
0,
0,
0});
this.nudAMFBitrate.Name = "nudAMFBitrate";
this.nudAMFBitrate.Value = new decimal(new int[] {
3000,
0,
0,
0});
this.nudAMFBitrate.ValueChanged += new System.EventHandler(this.nudAMFBitrate_ValueChanged);
//
// lblAMFBitrate
//
resources.ApplyResources(this.lblAMFBitrate, "lblAMFBitrate");
this.lblAMFBitrate.Name = "lblAMFBitrate";
//
// FFmpegOptionsForm
//
resources.ApplyResources(this, "$this");
@ -856,6 +894,7 @@ private void InitializeComponent()
this.tpVorbis.PerformLayout();
this.tpMP3.ResumeLayout(false);
this.tpMP3.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nudAMFBitrate)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@ -939,5 +978,8 @@ private void InitializeComponent()
private System.Windows.Forms.CheckBox cbUseCustomFFmpegPath;
private System.Windows.Forms.Label lblVideoEncoder;
private System.Windows.Forms.Label lblAudioEncoder;
private System.Windows.Forms.Label lblAMFBitrateK;
private System.Windows.Forms.NumericUpDown nudAMFBitrate;
private System.Windows.Forms.Label lblAMFBitrate;
}
}

View file

@ -106,10 +106,11 @@ private async Task SettingsLoad()
// AMF
cbAMFUsage.SelectedIndex = (int)Options.FFmpeg.AMF_Usage;
cbAMFQuality.SelectedIndex = (int)Options.FFmpeg.AMF_Quality;
nudAMFBitrate.SetValue(Options.FFmpeg.AMF_Bitrate);
// QuickSync
nudQSVBitrate.SetValue(Options.FFmpeg.QSV_Bitrate);
cbQSVPreset.SelectedIndex = (int)Options.FFmpeg.QSV_Preset;
nudQSVBitrate.SetValue(Options.FFmpeg.QSV_Bitrate);
// AAC
tbAACBitrate.Value = Options.FFmpeg.AAC_Bitrate / 32;
@ -471,6 +472,12 @@ private void cbAMFQuality_SelectedIndexChanged(object sender, EventArgs e)
UpdateUI();
}
private void nudAMFBitrate_ValueChanged(object sender, EventArgs e)
{
Options.FFmpeg.AMF_Bitrate = (int)nudAMFBitrate.Value;
UpdateUI();
}
private void cbQSVPreset_SelectedIndexChanged(object sender, EventArgs e)
{
Options.FFmpeg.QSV_Preset = (FFmpegQSVPreset)cbQSVPreset.SelectedIndex;

View file

@ -940,6 +940,99 @@ Otherwise it can't keep up with recording and a lot of frame drops will happen.<
<data name="&gt;&gt;tpGIF.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="lblAMFBitrateK.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblAMFBitrateK.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblAMFBitrateK.Location" type="System.Drawing.Point, System.Drawing">
<value>157, 56</value>
</data>
<data name="lblAMFBitrateK.Size" type="System.Drawing.Size, System.Drawing">
<value>34, 13</value>
</data>
<data name="lblAMFBitrateK.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="lblAMFBitrateK.Text" xml:space="preserve">
<value>kbit/s</value>
</data>
<data name="&gt;&gt;lblAMFBitrateK.Name" xml:space="preserve">
<value>lblAMFBitrateK</value>
</data>
<data name="&gt;&gt;lblAMFBitrateK.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblAMFBitrateK.Parent" xml:space="preserve">
<value>tbAMF</value>
</data>
<data name="&gt;&gt;lblAMFBitrateK.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="nudAMFBitrate.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 52</value>
</data>
<data name="nudAMFBitrate.Size" type="System.Drawing.Size, System.Drawing">
<value>72, 20</value>
</data>
<data name="nudAMFBitrate.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="nudAMFBitrate.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
<value>Center</value>
</data>
<data name="&gt;&gt;nudAMFBitrate.Name" xml:space="preserve">
<value>nudAMFBitrate</value>
</data>
<data name="&gt;&gt;nudAMFBitrate.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nudAMFBitrate.Parent" xml:space="preserve">
<value>tbAMF</value>
</data>
<data name="&gt;&gt;nudAMFBitrate.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="lblAMFBitrate.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblAMFBitrate.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblAMFBitrate.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 56</value>
</data>
<data name="lblAMFBitrate.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 13</value>
</data>
<data name="lblAMFBitrate.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="lblAMFBitrate.Text" xml:space="preserve">
<value>Bitrate:</value>
</data>
<data name="&gt;&gt;lblAMFBitrate.Name" xml:space="preserve">
<value>lblAMFBitrate</value>
</data>
<data name="&gt;&gt;lblAMFBitrate.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblAMFBitrate.Parent" xml:space="preserve">
<value>tbAMF</value>
</data>
<data name="&gt;&gt;lblAMFBitrate.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="cbAMFQuality.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 28</value>
</data>
<data name="cbAMFQuality.Size" type="System.Drawing.Size, System.Drawing">
<value>232, 21</value>
</data>
<data name="cbAMFQuality.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;cbAMFQuality.Name" xml:space="preserve">
<value>cbAMFQuality</value>
</data>
@ -950,7 +1043,25 @@ Otherwise it can't keep up with recording and a lot of frame drops will happen.<
<value>tbAMF</value>
</data>
<data name="&gt;&gt;cbAMFQuality.ZOrder" xml:space="preserve">
<value>0</value>
<value>3</value>
</data>
<data name="lblAMFQuality.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblAMFQuality.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblAMFQuality.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 32</value>
</data>
<data name="lblAMFQuality.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 13</value>
</data>
<data name="lblAMFQuality.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="lblAMFQuality.Text" xml:space="preserve">
<value>Quality:</value>
</data>
<data name="&gt;&gt;lblAMFQuality.Name" xml:space="preserve">
<value>lblAMFQuality</value>
@ -962,7 +1073,16 @@ Otherwise it can't keep up with recording and a lot of frame drops will happen.<
<value>tbAMF</value>
</data>
<data name="&gt;&gt;lblAMFQuality.ZOrder" xml:space="preserve">
<value>1</value>
<value>4</value>
</data>
<data name="cbAMFUsage.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 4</value>
</data>
<data name="cbAMFUsage.Size" type="System.Drawing.Size, System.Drawing">
<value>232, 21</value>
</data>
<data name="cbAMFUsage.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;cbAMFUsage.Name" xml:space="preserve">
<value>cbAMFUsage</value>
@ -974,7 +1094,25 @@ Otherwise it can't keep up with recording and a lot of frame drops will happen.<
<value>tbAMF</value>
</data>
<data name="&gt;&gt;cbAMFUsage.ZOrder" xml:space="preserve">
<value>2</value>
<value>5</value>
</data>
<data name="lblAMFUsage.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblAMFUsage.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblAMFUsage.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 8</value>
</data>
<data name="lblAMFUsage.Size" type="System.Drawing.Size, System.Drawing">
<value>41, 13</value>
</data>
<data name="lblAMFUsage.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="lblAMFUsage.Text" xml:space="preserve">
<value>Usage:</value>
</data>
<data name="&gt;&gt;lblAMFUsage.Name" xml:space="preserve">
<value>lblAMFUsage</value>
@ -986,7 +1124,7 @@ Otherwise it can't keep up with recording and a lot of frame drops will happen.<
<value>tbAMF</value>
</data>
<data name="&gt;&gt;lblAMFUsage.ZOrder" xml:space="preserve">
<value>3</value>
<value>6</value>
</data>
<data name="tbAMF.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 40</value>
@ -1465,108 +1603,6 @@ Otherwise it can't keep up with recording and a lot of frame drops will happen.<
<data name="&gt;&gt;lblGIFStatsMode.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="cbAMFQuality.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 28</value>
</data>
<data name="cbAMFQuality.Size" type="System.Drawing.Size, System.Drawing">
<value>232, 21</value>
</data>
<data name="cbAMFQuality.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;cbAMFQuality.Name" xml:space="preserve">
<value>cbAMFQuality</value>
</data>
<data name="&gt;&gt;cbAMFQuality.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbAMFQuality.Parent" xml:space="preserve">
<value>tbAMF</value>
</data>
<data name="&gt;&gt;cbAMFQuality.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="lblAMFQuality.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblAMFQuality.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblAMFQuality.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 32</value>
</data>
<data name="lblAMFQuality.Size" type="System.Drawing.Size, System.Drawing">
<value>42, 13</value>
</data>
<data name="lblAMFQuality.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="lblAMFQuality.Text" xml:space="preserve">
<value>Quality:</value>
</data>
<data name="&gt;&gt;lblAMFQuality.Name" xml:space="preserve">
<value>lblAMFQuality</value>
</data>
<data name="&gt;&gt;lblAMFQuality.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblAMFQuality.Parent" xml:space="preserve">
<value>tbAMF</value>
</data>
<data name="&gt;&gt;lblAMFQuality.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="cbAMFUsage.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 4</value>
</data>
<data name="cbAMFUsage.Size" type="System.Drawing.Size, System.Drawing">
<value>232, 21</value>
</data>
<data name="cbAMFUsage.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;cbAMFUsage.Name" xml:space="preserve">
<value>cbAMFUsage</value>
</data>
<data name="&gt;&gt;cbAMFUsage.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbAMFUsage.Parent" xml:space="preserve">
<value>tbAMF</value>
</data>
<data name="&gt;&gt;cbAMFUsage.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="lblAMFUsage.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lblAMFUsage.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lblAMFUsage.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 8</value>
</data>
<data name="lblAMFUsage.Size" type="System.Drawing.Size, System.Drawing">
<value>41, 13</value>
</data>
<data name="lblAMFUsage.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="lblAMFUsage.Text" xml:space="preserve">
<value>Usage:</value>
</data>
<data name="&gt;&gt;lblAMFUsage.Name" xml:space="preserve">
<value>lblAMFUsage</value>
</data>
<data name="&gt;&gt;lblAMFUsage.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lblAMFUsage.Parent" xml:space="preserve">
<value>tbAMF</value>
</data>
<data name="&gt;&gt;lblAMFUsage.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="lblQSVBitrateK.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>

View file

@ -52,8 +52,9 @@ public class FFmpegOptions
public FFmpegPaletteGenStatsMode GIFStatsMode { get; set; } = FFmpegPaletteGenStatsMode.full;
public FFmpegPaletteUseDither GIFDither { get; set; } = FFmpegPaletteUseDither.sierra2_4a;
public int GIFBayerScale { get; set; } = 2;
public FFmpegAMFUsage AMF_Usage { get; set; } = FFmpegAMFUsage.transcoding;
public FFmpegAMFUsage AMF_Usage { get; set; } = FFmpegAMFUsage.lowlatency;
public FFmpegAMFQuality AMF_Quality { get; set; } = FFmpegAMFQuality.speed;
public int AMF_Bitrate { get; set; } = 3000; // kbit/s
public FFmpegQSVPreset QSV_Preset { get; set; } = FFmpegQSVPreset.fast;
public int QSV_Bitrate { get; set; } = 3000; // kbit/s

View file

@ -268,6 +268,7 @@ public string GetFFmpegArgs(bool isCustom = false)
case FFmpegVideoCodec.hevc_amf:
args.Append($"-usage {FFmpeg.AMF_Usage} ");
args.Append($"-quality {FFmpeg.AMF_Quality} ");
args.Append($"-b:v {FFmpeg.AMF_Bitrate}k ");
args.Append("-pix_fmt yuv420p ");
break;
case FFmpegVideoCodec.h264_qsv: // https://trac.ffmpeg.org/wiki/Hardware/QuickSync