< 返回版块

schizobulia 发表于 2021-03-31 17:57

比如我在Command中执行一个ffmpeg命令

怎么获取控制台的实时输出呢

评论区

写评论
作者 schizobulia 2021-04-02 15:04

太好的了 是这种效果

但我在使用ffmpeg的时候还是无法达到我想要的那种效果(比如获取进度)

可能是ffmpeg本身的一些机制吧

非常感谢

--
👇
ywxt:

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);
    }
}
ywxt 2021-04-01 20:39
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);
    }
}
作者 schizobulia 2021-04-01 11:42
Command::new("cmd").arg("/c")
    .arg(format!("ffmpeg -y -i https://demo.51jcjgzy.cn/movie/test/b.mp4 test.avi"))
    .spawn();

比如这段代码 总是只有转换完成之后才可以获取到输出的内容

--
👇
Mike Tang: 这个哈,直接new

Mike Tang 2021-04-01 09:34

这个哈,直接new

Mike Tang 2021-04-01 09:33

https://doc.rust-lang.org/std/process/struct.Command.html

作者 schizobulia 2021-04-01 08:28

您好 我查了《Rust 标准库 API 文档》 好像并没有popen的记录

--
👇
Mike Tang: popen

Mike Tang 2021-03-31 18:14

popen

1 共 7 条评论, 1 页