refactor: 优化视频处理任务中ffmpeg命令的构建方式

This commit is contained in:
lanyeeee
2025-09-04 04:28:04 +08:00
parent f49340a42b
commit c0c8af9094
@@ -98,27 +98,16 @@ impl VideoProcessTask {
tokio::spawn(async move { tokio::spawn(async move {
let mut command = std::process::Command::new(ffmpeg_program); let mut command = std::process::Command::new(ffmpeg_program);
command command.arg("-i").arg(video_path_clone);
.arg("-i") command.arg("-i").arg(audio_path_clone);
.arg(video_path_clone)
.arg("-i")
.arg(audio_path_clone);
if let Some(metadata_path) = metadata_path_clone { if let Some(metadata_path) = metadata_path_clone {
command command.arg("-i").arg(metadata_path);
.arg("-i") command.arg("-map_metadata").arg("2");
.arg(metadata_path)
.arg("-map_metadata")
.arg("2");
} }
command command.arg("-c").arg("copy");
.arg("-c") command.arg("-map").arg("0:v:0");
.arg("copy") command.arg("-map").arg("1:a:0");
.arg("-map")
.arg("0:v:0")
.arg("-map")
.arg("1:a:0");
command.arg(output_path_clone).arg("-y"); command.arg(output_path_clone).arg("-y");
@@ -198,19 +187,14 @@ impl VideoProcessTask {
tauri::async_runtime::spawn_blocking(move || { tauri::async_runtime::spawn_blocking(move || {
let mut command = std::process::Command::new(ffmpeg_program); let mut command = std::process::Command::new(ffmpeg_program);
command command.arg("-i").arg(video_path_clone);
.arg("-i") command.arg("-i").arg(audio_path_clone);
.arg(video_path_clone)
.arg("-i") command.arg("-c").arg("copy");
.arg(audio_path_clone) command.arg("-map").arg("0:v:0");
.arg("-c") command.arg("-map").arg("1:a:0");
.arg("copy")
.arg("-map") command.arg(output_path_clone).arg("-y");
.arg("0:v:0")
.arg("-map")
.arg("1:a:0")
.arg(output_path_clone)
.arg("-y");
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
{ {
@@ -286,17 +270,13 @@ impl VideoProcessTask {
tauri::async_runtime::spawn_blocking(move || { tauri::async_runtime::spawn_blocking(move || {
let mut command = std::process::Command::new(ffmpeg_program); let mut command = std::process::Command::new(ffmpeg_program);
command command.arg("-i").arg(video_path_clone);
.arg("-i") command.arg("-i").arg(metadata_path_clone);
.arg(video_path_clone)
.arg("-i") command.arg("-map_metadata").arg("1");
.arg(metadata_path_clone) command.arg("-c").arg("copy");
.arg("-map_metadata")
.arg("1") command.arg(output_path_clone).arg("-y");
.arg("-c")
.arg("copy")
.arg(output_path_clone)
.arg("-y");
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
{ {