Do not use audio encoder if input file is png, apng or webp

This commit is contained in:
Jaex 2023-11-26 03:32:45 +03:00
parent 3274e2cf4e
commit ccc2db5aec

View file

@ -24,6 +24,7 @@ You should have received a copy of the GNU General Public License
#endregion License Information (GPL v3) #endregion License Information (GPL v3)
using ShareX.HelpersLib; using ShareX.HelpersLib;
using System;
using System.IO; using System.IO;
using System.Text; using System.Text;
@ -56,6 +57,16 @@ public string OutputFilePath
} }
} }
public bool IsInputFileAnimationOnly
{
get
{
return InputFilePath.EndsWith(".png", StringComparison.OrdinalIgnoreCase) ||
InputFilePath.EndsWith(".apng", StringComparison.OrdinalIgnoreCase) ||
InputFilePath.EndsWith(".webp", StringComparison.OrdinalIgnoreCase);
}
}
public ConverterVideoCodecs VideoCodec { get; set; } = ConverterVideoCodecs.x264; public ConverterVideoCodecs VideoCodec { get; set; } = ConverterVideoCodecs.x264;
public int VideoQuality { get; set; } = 23; public int VideoQuality { get; set; } = 23;
public bool VideoQualityUseBitrate { get; set; } = false; public bool VideoQualityUseBitrate { get; set; } = false;
@ -217,33 +228,36 @@ public string GetFFmpegArgs()
break; break;
} }
// Audio encoder if (!IsInputFileAnimationOnly)
switch (VideoCodec)
{ {
case ConverterVideoCodecs.x264: // https://trac.ffmpeg.org/wiki/Encode/AAC // Audio encoder
case ConverterVideoCodecs.x265: switch (VideoCodec)
case ConverterVideoCodecs.h264_nvenc: {
case ConverterVideoCodecs.hevc_nvenc: case ConverterVideoCodecs.x264: // https://trac.ffmpeg.org/wiki/Encode/AAC
case ConverterVideoCodecs.h264_amf: case ConverterVideoCodecs.x265:
case ConverterVideoCodecs.hevc_amf: case ConverterVideoCodecs.h264_nvenc:
case ConverterVideoCodecs.h264_qsv: case ConverterVideoCodecs.hevc_nvenc:
case ConverterVideoCodecs.hevc_qsv: case ConverterVideoCodecs.h264_amf:
args.Append("-c:a aac "); case ConverterVideoCodecs.hevc_amf:
args.Append("-b:a 128k "); case ConverterVideoCodecs.h264_qsv:
break; case ConverterVideoCodecs.hevc_qsv:
case ConverterVideoCodecs.vp8: // https://trac.ffmpeg.org/wiki/TheoraVorbisEncodingGuide args.Append("-c:a aac ");
case ConverterVideoCodecs.vp9: args.Append("-b:a 128k ");
args.Append("-c:a libvorbis "); break;
args.Append("-q:a 3 "); case ConverterVideoCodecs.vp8: // https://trac.ffmpeg.org/wiki/TheoraVorbisEncodingGuide
break; case ConverterVideoCodecs.vp9:
case ConverterVideoCodecs.av1: // https://ffmpeg.org/ffmpeg-codecs.html#libopus-1 args.Append("-c:a libvorbis ");
args.Append("-c:a libopus "); args.Append("-q:a 3 ");
args.Append("-b:a 128k "); break;
break; case ConverterVideoCodecs.av1: // https://ffmpeg.org/ffmpeg-codecs.html#libopus-1
case ConverterVideoCodecs.xvid: // https://trac.ffmpeg.org/wiki/Encode/MP3 args.Append("-c:a libopus ");
args.Append("-c:a libmp3lame "); args.Append("-b:a 128k ");
args.Append("-q:a 4 "); break;
break; case ConverterVideoCodecs.xvid: // https://trac.ffmpeg.org/wiki/Encode/MP3
args.Append("-c:a libmp3lame ");
args.Append("-q:a 4 ");
break;
}
} }
// Overwrite output files without asking // Overwrite output files without asking