diff --git a/transcoder/src/identify.rs b/transcoder/src/identify.rs index 78ee8ec7..d4778133 100644 --- a/transcoder/src/identify.rs +++ b/transcoder/src/identify.rs @@ -102,7 +102,7 @@ pub async fn identify(path: String) -> Result { .members() .filter(|x| x["@type"] == "Audio") .map(|a| Track { - index: parse::(&a["StreamOrder"]).unwrap(), + index: parse::(&a["StreamOrder"]).unwrap() - 1, title: a["Title"].as_str().map(|x| x.to_string()), language: a["Language"].as_str().map(|x| x.to_string()), // TODO: format is invalid. Channels count missing... @@ -115,7 +115,7 @@ pub async fn identify(path: String) -> Result { .members() .filter(|x| x["@type"] == "Text") .map(|a| Track { - index: parse::(&a["StreamOrder"]).unwrap(), + index: parse::(&a["StreamOrder"]).unwrap() - 1, title: a["Title"].as_str().map(|x| x.to_string()), language: a["Language"].as_str().map(|x| x.to_string()), // TODO: format is invalid. Channels count missing... diff --git a/transcoder/src/transcode.rs b/transcoder/src/transcode.rs index 634a7f63..45cb4296 100644 --- a/transcoder/src/transcode.rs +++ b/transcoder/src/transcode.rs @@ -140,7 +140,7 @@ fn get_transcode_audio_args(audio_idx: u32) -> Vec { fn get_transcode_video_quality_args(quality: &Quality, segment_time: u32) -> Vec { if *quality == Quality::Original { - return vec!["-map", "0:v:0", "-c:v", "copy"] + return vec!["-map", "0:V:0", "-c:v", "copy"] .iter() .map(|a| a.to_string()) .collect(); @@ -215,7 +215,7 @@ async fn start_transcode( encode_args: Vec, start_time: u32, ) -> Child { - std::fs::create_dir(&out_dir).expect("Could not create cache directory"); + std::fs::create_dir_all(&out_dir).expect("Could not create cache directory"); let mut cmd = Command::new("ffmpeg"); cmd.args(&["-progress", "pipe:1"])