I wrote this and it works. I accept improvements and suggestions:
// HANDBRAKE CLI
use std::process::{Command, Stdio};
use std::{fs, io};
use std::path::Path;
// ==================== CONSTANTS
const _DESTINY: &str = "/home/pichibw/01_HANDBRAKE/";
// ==================== FUNCTIONS
fn ffmpeg(aud: &String, sub: &String, src: &String, dst: &String) {
let salida = Command::new("HandBrakeCLI")
.arg("-v")
.arg("--preset-import-file")
.arg("/home/pichibw/01_HANDBRAKE/presets/mp4720x480.json")
.arg("-Z")
.arg("mp4720x480")
.arg("-a")
.arg(&aud) // audio tracks (ej. 1 or 1,2)
.arg("-s")
.arg(&sub) // subtitle tracks (ej. 1 or 1,2)
.arg("-i")
.arg(&src) // origin
.arg("-o")
.arg(&dst) //destiny
.stdout(Stdio::piped())
.output()
.expect("Failed to execute command");
}
fn main() {
println!("
HANDBRAKE CLI
Default Destiny is: {}
", &DESTINY);
// var to store result for FFMPEG
let mut aud_track = String::new();
let mut sub_track = String::new();
// reading audio track
println!("give me audio track (Ej. 1 or 1,2):");
let stdin_audio = io::stdin();
stdin_audio.read_line(&mut aud_track);
println!("Pista de audio: {} ", &aud_track);
// reading subtitle track
println!("give me subtitle track (Ej. 1 or 1,2):");
let stdin_subtitle = io::stdin();
stdin_subtitle.read_line(&mut sub_track);
println!("Pista de subtitulo: {} ", &sub_track);
// reading video folder
println!("Give me video folder:");
let mut video_folder = String::new();
let stdin = io::stdin();
stdin.read_line(&mut video_folder);
println!("Video folder: {} ", video_folder);
// read files in dir
for file in fs::read_dir(video_folder.replace("\n", "")).unwrap() {
let video_src = &file.unwrap().path().display().to_string();
let video_src_split = video_src.split("/");
let mut vector = Vec::new();
for a in video_src_split {
vector.push(a);
}
let mut video_name = vector[vector.len()-1];
let mut destiny = format!("/home/pichibw/01_HANDBRAKE/{}", &video_name);
println!("Video name: {} ", &video_name);
println!("Video destiny: {} ", &destiny);
ffmpeg(&aud_track, &sub_track, &video_src, &destiny);
}
}
thank you for your time.