use std::{
io::BufRead,
process::{Command, Stdio},
};
fn main() {
let mut child = Command::new("cmd")
.arg("/c")
.arg("D:\\Tools\\YoutubeDownloader\\ffmpeg")
.arg("-y")
.arg("-i")
.arg("https://demo.51jcjgzy.cn/movie/test/b.mp4")
.arg("test.avi")
.stdout(Stdio::piped())
.spawn()
.unwrap();
let out = child.stdout.take().unwrap();
let mut out = std::io::BufReader::new(out);
let mut s = String::new();
while let Ok(_) = out.read_line(&mut s) {
// 进程退出后结束循环
if let Ok(Some(_)) = child.try_wait() {
break;
}
println!("{}", s);
}
}
use std::{
io::BufRead,
process::{Command, Stdio},
};
fn main() {
let mut child = Command::new("cmd")
.arg("/c")
.arg("D:\\Tools\\YoutubeDownloader\\ffmpeg")
.arg("-y")
.arg("-i")
.arg("https://demo.51jcjgzy.cn/movie/test/b.mp4")
.arg("test.avi")
.stdout(Stdio::piped())
.spawn()
.unwrap();
let out = child.stdout.take().unwrap();
let mut out = std::io::BufReader::new(out);
let mut s = String::new();
while let Ok(_) = out.read_line(&mut s) {
// 进程退出后结束循环
if let Ok(Some(_)) = child.try_wait() {
break;
}
println!("{}", s);
}
}
评论区
写评论太好的了 是这种效果
但我在使用ffmpeg的时候还是无法达到我想要的那种效果(比如获取进度)
可能是ffmpeg本身的一些机制吧
非常感谢
--
👇
ywxt:
--
👇
Mike Tang: 这个哈,直接new
这个哈,直接new
https://doc.rust-lang.org/std/process/struct.Command.html
您好 我查了《Rust 标准库 API 文档》 好像并没有popen的记录
--
👇
Mike Tang: popen
popen