mirror of
https://github.com/revenz/FileFlowsPlugins.git
synced 2026-01-06 17:29:31 -06:00
no longer adjust hardware encoding parameters
This commit is contained in:
@@ -78,6 +78,69 @@ public class FfmpegBuilder_VideoEncode_VideoEncodeTests: TestBase
|
||||
public void FfmpegBuilder_VideoEncode_H264() => TestEncode(false, false, false);
|
||||
[TestMethod]
|
||||
public void FfmpegBuilder_VideoEncode_H264_10bit() => TestEncode(false, false, true);
|
||||
|
||||
|
||||
[TestMethod]
|
||||
public void FfmpegBuilder_VideoEncode_FailIfNoHardware()
|
||||
{
|
||||
var logger = new TestLogger();
|
||||
const string ffmpeg = @"C:\utils\ffmpeg\ffmpeg.exe";
|
||||
var vi = new VideoInfoHelper(ffmpeg, logger);
|
||||
var vii = vi.Read(TestFile_120_mbps_4k_uhd_hevc_10bit);
|
||||
var args = new NodeParameters(TestFile_50_mbps_hd_h264, logger, false, string.Empty);
|
||||
args.GetToolPathActual = (string tool) => ffmpeg;
|
||||
args.TempPath = @"D:\videos\temp";
|
||||
args.Parameters.Add("VideoInfo", vii);
|
||||
|
||||
|
||||
FfmpegBuilderStart ffStart = new();
|
||||
ffStart.PreExecute(args);
|
||||
Assert.AreEqual(1, ffStart.Execute(args));
|
||||
|
||||
FfmpegBuilderVideoCodec ffCodec = new();
|
||||
ffCodec.VideoCodec = "h265";
|
||||
ffCodec.VideoCodecParameters = "hevc_qsv";
|
||||
ffCodec.PreExecute(args);
|
||||
ffCodec.Execute(args);
|
||||
|
||||
FfmpegBuilderExecutor ffExecutor = new();
|
||||
ffExecutor.PreExecute(args);
|
||||
int result = ffExecutor.Execute(args);
|
||||
string log = logger.ToString();
|
||||
Assert.AreEqual(-1, result);
|
||||
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void FfmpegBuilder_VideoEncode_AutoUseHardware()
|
||||
{
|
||||
var logger = new TestLogger();
|
||||
const string ffmpeg = @"C:\utils\ffmpeg\ffmpeg.exe";
|
||||
var vi = new VideoInfoHelper(ffmpeg, logger);
|
||||
var vii = vi.Read(TestFile_120_mbps_4k_uhd_hevc_10bit);
|
||||
var args = new NodeParameters(TestFile_50_mbps_hd_h264, logger, false, string.Empty);
|
||||
args.GetToolPathActual = (string tool) => ffmpeg;
|
||||
args.TempPath = @"D:\videos\temp";
|
||||
args.Parameters.Add("VideoInfo", vii);
|
||||
|
||||
|
||||
FfmpegBuilderStart ffStart = new();
|
||||
ffStart.PreExecute(args);
|
||||
Assert.AreEqual(1, ffStart.Execute(args));
|
||||
|
||||
FfmpegBuilderVideoCodec ffCodec = new();
|
||||
ffCodec.VideoCodec = "h265";
|
||||
ffCodec.VideoCodecParameters = "h265";
|
||||
ffCodec.PreExecute(args);
|
||||
ffCodec.Execute(args);
|
||||
|
||||
FfmpegBuilderExecutor ffExecutor = new();
|
||||
ffExecutor.PreExecute(args);
|
||||
int result = ffExecutor.Execute(args);
|
||||
string log = logger.ToString();
|
||||
Assert.AreEqual(1, result);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -106,55 +106,58 @@ namespace FileFlows.VideoNodes
|
||||
return "libx264";
|
||||
}
|
||||
|
||||
if (vidparams.ToLower().Contains("hevc_nvenc"))
|
||||
{
|
||||
// nvidia h265 encoding, check can
|
||||
bool canProcess = CanUseHardwareEncoding.CanProcess(Args, ffmpeg, vidparams);
|
||||
if (canProcess == false)
|
||||
{
|
||||
// change to cpu encoding
|
||||
Args.Logger?.ILog("Can't encode using hevc_nvenc, falling back to CPU encoding H265 (libx265)");
|
||||
return "libx265";
|
||||
}
|
||||
return vidparams;
|
||||
}
|
||||
else if (vidparams.ToLower().Contains("h264_nvenc"))
|
||||
{
|
||||
// nvidia h264 encoding, check can
|
||||
bool canProcess = CanUseHardwareEncoding.CanProcess(Args, ffmpeg, vidparams);
|
||||
if (canProcess == false)
|
||||
{
|
||||
// change to cpu encoding
|
||||
Args.Logger?.ILog("Can't encode using h264_nvenc, falling back to CPU encoding H264 (libx264)");
|
||||
return "libx264";
|
||||
}
|
||||
return vidparams;
|
||||
}
|
||||
else if (vidparams.ToLower().Contains("hevc_qsv"))
|
||||
{
|
||||
// nvidia h265 encoding, check can
|
||||
bool canProcess = CanUseHardwareEncoding.CanProcess(Args, ffmpeg, vidparams);
|
||||
if (canProcess == false)
|
||||
{
|
||||
// change to cpu encoding
|
||||
Args.Logger?.ILog("Can't encode using hevc_qsv, falling back to CPU encoding H265 (libx265)");
|
||||
return "libx265";
|
||||
}
|
||||
return vidparams;
|
||||
}
|
||||
else if (vidparams.ToLower().Contains("h264_qsv"))
|
||||
{
|
||||
// nvidia h264 encoding, check can
|
||||
bool canProcess = CanUseHardwareEncoding.CanProcess(Args, ffmpeg, vidparams);
|
||||
if (canProcess == false)
|
||||
{
|
||||
// change to cpu encoding
|
||||
Args.Logger?.ILog("Can't encode using h264_qsv, falling back to CPU encoding H264 (libx264)");
|
||||
return "libx264";
|
||||
}
|
||||
return vidparams;
|
||||
}
|
||||
return vidparams;
|
||||
|
||||
// no longer do this
|
||||
//if (vidparams.ToLower().Contains("hevc_nvenc"))
|
||||
//{
|
||||
// // nvidia h265 encoding, check can
|
||||
// bool canProcess = CanUseHardwareEncoding.CanProcess(Args, ffmpeg, vidparams);
|
||||
// if (canProcess == false)
|
||||
// {
|
||||
// // change to cpu encoding
|
||||
// Args.Logger?.ILog("Can't encode using hevc_nvenc, falling back to CPU encoding H265 (libx265)");
|
||||
// return "libx265";
|
||||
// }
|
||||
// return vidparams;
|
||||
//}
|
||||
//else if (vidparams.ToLower().Contains("h264_nvenc"))
|
||||
//{
|
||||
// // nvidia h264 encoding, check can
|
||||
// bool canProcess = CanUseHardwareEncoding.CanProcess(Args, ffmpeg, vidparams);
|
||||
// if (canProcess == false)
|
||||
// {
|
||||
// // change to cpu encoding
|
||||
// Args.Logger?.ILog("Can't encode using h264_nvenc, falling back to CPU encoding H264 (libx264)");
|
||||
// return "libx264";
|
||||
// }
|
||||
// return vidparams;
|
||||
//}
|
||||
//else if (vidparams.ToLower().Contains("hevc_qsv"))
|
||||
//{
|
||||
// // nvidia h265 encoding, check can
|
||||
// bool canProcess = CanUseHardwareEncoding.CanProcess(Args, ffmpeg, vidparams);
|
||||
// if (canProcess == false)
|
||||
// {
|
||||
// // change to cpu encoding
|
||||
// Args.Logger?.ILog("Can't encode using hevc_qsv, falling back to CPU encoding H265 (libx265)");
|
||||
// return "libx265";
|
||||
// }
|
||||
// return vidparams;
|
||||
//}
|
||||
//else if (vidparams.ToLower().Contains("h264_qsv"))
|
||||
//{
|
||||
// // nvidia h264 encoding, check can
|
||||
// bool canProcess = CanUseHardwareEncoding.CanProcess(Args, ffmpeg, vidparams);
|
||||
// if (canProcess == false)
|
||||
// {
|
||||
// // change to cpu encoding
|
||||
// Args.Logger?.ILog("Can't encode using h264_qsv, falling back to CPU encoding H264 (libx264)");
|
||||
// return "libx264";
|
||||
// }
|
||||
// return vidparams;
|
||||
//}
|
||||
//return vidparams;
|
||||
}
|
||||
|
||||
public bool HasNvidiaCard(string ffmpeg)
|
||||
|
||||
Reference in New Issue
Block a user