172 похожих чатов

Здравствуйте, пишу враппер для mplayer. почему не работает write/read? не

могу не читать stdout, не писать в stdin
use tokio::io::{AsyncBufReadExt, AsyncWriteExt};

#[tokio::main]
async fn main() {
let filename = "/home/user/Intro.mp3";
let volume: i32 = 30;

let mut mplayer = match tokio::process::Command::new("mplayer")
.arg("-slave")
.arg("-idle")
.arg("-noautosub")
.arg("-noconsolecontrols")
.arg("-nolirc")
.arg("-really-quiet")
.args(&["-softvol", "-volume", &volume.to_string()])
.args(&["-vc", "null"])
.args(&["-vo", "null"])
.args(&["-ao", "alsa:device=plughw=1.0"])
.arg("")
.stdout(std::process::Stdio::piped())
.stdin(std::process::Stdio::piped())
.spawn()
{
Ok(p) => p,
Err(e) => {
println!("Can't mplayer: {}", e);
return;
}
};

let child_in = mplayer.stdin.as_mut().unwrap();
let mut child_out = tokio::io::BufReader::new(mplayer.stdout.as_mut().unwrap());

let mut interval_second = tokio::time::interval(std::time::Duration::from_secs(1));

let cmd = format!("loadfile {}\n", filename);
if let Err(e) = child_in.write_all(cmd.as_bytes()).await {
println!("mplayer error: {}", e);
}

if let Err(e) = child_in.flush().await {
println!("FLUSH: {}", e);
}

let mut line = String::new();

loop {
tokio::select! {
_ = child_out.read_line(&mut line) => {
println!("line:{}", line);
if line.is_empty() {
println!("MPlayer: break");
break;
}
}
_ = interval_second.tick() => {
println!("tick");
}
}
}
println!("finish");
}

2 ответов

11 просмотров

Что по ошибке?

Виталий- Автор вопроса
Эрик
Что по ошибке?

Никакой ошибки. Просто тишина

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта