mirror of
https://github.com/crunchy-labs/crunchy-cli.git
synced 2026-01-21 12:12:00 -06:00
Add ffmpeg amd hardware acceleration presets
This commit is contained in:
parent
6e01e9e8a7
commit
63e53a8b33
1 changed files with 23 additions and 5 deletions
|
|
@ -69,6 +69,7 @@ ffmpeg_enum! {
|
||||||
ffmpeg_enum! {
|
ffmpeg_enum! {
|
||||||
enum FFmpegHwAccel {
|
enum FFmpegHwAccel {
|
||||||
Nvidia,
|
Nvidia,
|
||||||
|
Amd,
|
||||||
Apple
|
Apple
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -101,7 +102,11 @@ impl FFmpegPreset {
|
||||||
FFmpegHwAccel::all(),
|
FFmpegHwAccel::all(),
|
||||||
FFmpegQuality::all(),
|
FFmpegQuality::all(),
|
||||||
),
|
),
|
||||||
(FFmpegCodec::Av1, vec![], FFmpegQuality::all()),
|
(
|
||||||
|
FFmpegCodec::Av1,
|
||||||
|
vec![FFmpegHwAccel::Amd],
|
||||||
|
FFmpegQuality::all(),
|
||||||
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
let mut return_values = vec![];
|
let mut return_values = vec![];
|
||||||
|
|
@ -285,6 +290,10 @@ impl FFmpegPreset {
|
||||||
crf_quality();
|
crf_quality();
|
||||||
output.extend(["-c:v", "h264_nvenc", "-c:a", "copy"])
|
output.extend(["-c:v", "h264_nvenc", "-c:a", "copy"])
|
||||||
}
|
}
|
||||||
|
FFmpegHwAccel::Amd => {
|
||||||
|
crf_quality();
|
||||||
|
output.extend(["-c:v", "h264_amf", "-c:a", "copy"])
|
||||||
|
}
|
||||||
FFmpegHwAccel::Apple => {
|
FFmpegHwAccel::Apple => {
|
||||||
// Apple's Video Toolbox encoders ignore `-crf`, use `-q:v`
|
// Apple's Video Toolbox encoders ignore `-crf`, use `-q:v`
|
||||||
// instead. It's on a scale of 1-100, 100 being lossless. Just
|
// instead. It's on a scale of 1-100, 100 being lossless. Just
|
||||||
|
|
@ -332,8 +341,12 @@ impl FFmpegPreset {
|
||||||
"hvc1",
|
"hvc1",
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
FFmpegHwAccel::Amd => {
|
||||||
|
crf_quality();
|
||||||
|
output.extend(["-c:v", "hevc_amf", "-c:a", "copy"])
|
||||||
|
}
|
||||||
FFmpegHwAccel::Apple => {
|
FFmpegHwAccel::Apple => {
|
||||||
// See the comment that starts on line 287.
|
// See the comment for apple h264 hwaccel
|
||||||
match quality {
|
match quality {
|
||||||
FFmpegQuality::Lossless => output.extend(["-q:v", "61"]),
|
FFmpegQuality::Lossless => output.extend(["-q:v", "61"]),
|
||||||
FFmpegQuality::Normal => (),
|
FFmpegQuality::Normal => (),
|
||||||
|
|
@ -356,12 +369,17 @@ impl FFmpegPreset {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FFmpegCodec::Av1 => {
|
FFmpegCodec::Av1 => {
|
||||||
output.extend(["-c:v", "libsvtav1", "-c:a", "copy"]);
|
let mut crf_quality = || match quality {
|
||||||
|
|
||||||
match quality {
|
|
||||||
FFmpegQuality::Lossless => output.extend(["-crf", "22"]),
|
FFmpegQuality::Lossless => output.extend(["-crf", "22"]),
|
||||||
FFmpegQuality::Normal => (),
|
FFmpegQuality::Normal => (),
|
||||||
FFmpegQuality::Low => output.extend(["-crf", "35"]),
|
FFmpegQuality::Low => output.extend(["-crf", "35"]),
|
||||||
|
};
|
||||||
|
|
||||||
|
crf_quality();
|
||||||
|
if let Some(FFmpegHwAccel::Amd) = hwaccel_opt {
|
||||||
|
output.extend(["-c:v", "av1_amf", "-c:a", "copy"]);
|
||||||
|
} else {
|
||||||
|
output.extend(["-c:v", "libsvtav1", "-c:a", "copy"]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue