diff --git a/src/render/ffmpeg.rs b/src/render/ffmpeg.rs
index e619168ecc1881c0b70d4be654f6bb28da437399..87721363c4b458b5834af4b7414ae740b5bcd47e 100644
--- a/src/render/ffmpeg.rs
+++ b/src/render/ffmpeg.rs
@@ -117,9 +117,8 @@ impl FfmpegOutput {
 		self
 	}
 
-	fn append_to_cmd(self, cmd: &mut Command, venc: bool, _aenc: bool, vaapi: bool) {
-		// select codec and bitrate
-		const QUALITY: &str = "28";
+	fn append_to_cmd(self, cmd: &mut Command, venc: bool, _aenc: bool, mut vaapi: bool) {
+		// select codec and bitrate/crf
 		if venc {
 			let vcodec = match (self.format, vaapi) {
 				(FfmpegOutputFormat::Av1Flac, false)
@@ -134,19 +133,12 @@ impl FfmpegOutput {
 			if vcodec == "libsvtav1" {
 				cmd.arg("-svtav1-params").arg("fast-decode=1");
 				cmd.arg("-preset").arg("7");
-			}
-
-			match self.video_bitrate {
-				Some(bv) if vcodec != "libsvtav1" => {
-					cmd.arg("-b:v").arg(bv.to_string());
-				},
-				None if vaapi => {
-					cmd.arg("-rc_mode").arg("CQP");
-					cmd.arg("-global_quality").arg(QUALITY);
-				},
-				_ => {
-					cmd.arg("-crf").arg(QUALITY);
-				}
+				cmd.arg("-crf").arg("28");
+			} else if vcodec == "h264" {
+				cmd.arg("-preset").arg("slow");
+				cmd.arg("-crf").arg("21");
+			} else if let Some(bv) = self.video_bitrate {
+				cmd.arg("-b:v").arg(bv.to_string());
 			}
 		} else {
 			cmd.arg("-c:v").arg("copy");