我正在使用 Rust 调用一些 ffmpeg 命令来录制桌面音频、麦克风音频和桌面视频。我在 CMD 中键入命令并且它有效,这是该命令。
ffmpeg -hide_banner -f dshow -i audio="Microphone (Arctis Nova Pro Wireless)" -f dshow -i audio="What U Hear (Sound Blaster Audigy 5/Rx)" -filter_complex amix=inputs=2 -f gdigrab -framerate 60 -show_region 1 -video_size 600x600 -offset_x 10 -offset_y 20 -i desktop -strftime 1 -y "out%Y-%m-%d_%H-%M-%S.mp4"
这是带有所有参数的命令对象
let mut ffmpegcommand = Command::new("ffmpeg");
ffmpegcommand.arg("-hide_banner")
.arg("-y")
.arg("-f")
.arg("dshow")
.arg("-i")
.arg("audio=\"Microphone (Arctis Nova Pro Wireless)\"")
.arg("-f")
.arg("dshow")
.arg("-i")
.arg("audio=\"What U Hear (Sound Blaster Audigy 5/Rx)\"")
.arg("-filter_complex")
.arg("amix=inputs=2")
.arg("-f")
.arg("gdigrab")
.arg("-framerate")
.arg("60")
.arg("-show_region")
.arg("1")
.arg("-video_size")
.arg("600x600")
.arg("-offset_x")
.arg("100")
.arg("-offset_y")
.arg("100")
.arg("-i")
.arg("desktop")
.arg("-strftime")
.arg("1")
.arg("G:\\School\\Capstone\\screenshotFFMPEG\\%Y-%m-%d_%H-%M-%S.mp4");
ffmpegcommand.status().expect("DID NTO WORK LOSER");
调用此命令会导致控制台出现此错误:
[dshow @ 0000026421be4880] Could not find audio only device with name ["Microphone (Arctis Nova Pro Wireless)"] among source devices of type audio.
[dshow @ 0000026421be4880] Searching for audio device within video devices for "Microphone (Arctis Nova Pro Wireless)"
[dshow @ 0000026421be4880] Could not find audio only device with name ["Microphone (Arctis Nova Pro Wireless)"] among source devices of type video.
audio="Microphone (Arctis Nova Pro Wireless)": I/O error
我认为错误是设备名称是错误的,因为当 ffmpeg 得到它时他们需要有 "'s 但我迷路了,因为在错误中名称与我执行 a 时设备的输出完全相同ffmpeg -list_devices 命令
[dshow @ 0000013ea9cfe600] "Microphone (Arctis Nova Pro Wireless)" (audio)
[dshow @ 0000013ea9cfe600] Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{DE99F572-E285-4EBC-A263-2D782B212FA7}"
没有空格,据我所知,名称是相同的。我不知所措,需要任何帮助。