feat: add ability to merge audio tracks

This commit is contained in:
uku 2025-05-18 23:03:52 +02:00
parent 299ad0c9dc
commit f7d97f1f2f
Signed by: uku
SSH key fingerprint: SHA256:4P0aN6M8ajKukNi6aPOaX0LacanGYtlfjmN+m/sHY/o

View file

@ -105,11 +105,19 @@ pub async fn convert_video(
Codec::VP9 => &["-c:v", "libvpx-vp9", "-row-mt", "1"], Codec::VP9 => &["-c:v", "libvpx-vp9", "-row-mt", "1"],
}; };
// TODO: maybe check if the video has 2 audio tracks? or at least use a "fail-safe" method
let merge_args: &[&str] = if merge_tracks {
&["-ac", "2", "-filter_complex", "amerge=inputs=2"]
} else {
&[]
};
let mut child = Command::new("ffmpeg") let mut child = Command::new("ffmpeg")
.arg("-i") .arg("-i")
.arg(path) .arg(path)
.args(["-c:a", "libopus", "-b:a", "96k"]) .args(["-c:a", "libopus", "-b:a", "96k"])
.args(codec_args) .args(codec_args)
.args(merge_args)
.args(["-loglevel", "error", "-progress", "-", "-nostats"]) .args(["-loglevel", "error", "-progress", "-", "-nostats"])
.arg(&out_path) .arg(&out_path)
.stdout(Stdio::piped()) .stdout(Stdio::piped())