gpt4 book ai didi

windows - 为什么PowerShell在执行我的命令之前关闭ff-prompt.bat

转载 作者:行者123 更新时间:2023-12-04 23:17:02 25 4
gpt4 key购买 nike

好吧,伙计们看起来我还有一个问题要问,这与我的上一个问题有关,可以在这里找到:How to start ffprobe with Windows PowerShell .在那里,我问如何使用 Windows PowerShell 启动 ffprobe,在尝试了一些东西之后,我得到了它,好吧,可以说,在它再次关闭之前启动了一秒钟。
我在 PowerShell 中使用以下命令进行了尝试:

$env:Path = ';C:\Users\Administrator\bin\'
$title = "A_Day_for_Cake_and_Accidents"
Start-Process ff-prompt.bat -ArgumentList "ffprobe -show_streams -select_streams v -print_format xml -count_frames C:\Users\Administrator\Desktop\dcp_bearbeitet\$title\$title.mov > C:\Users\Administrator\Desktop\dcp_bearbeitet\$title\totalframes.xml"

结果,奇怪的是,xml 文件只有来自 ff-prompt.bat 的标准文本。 ,看起来像这样:

C:\Users\Administrator>ECHO OFF ffmpeg version N-60959-g669043d built on Feb 27 2014 22:01:58 with gcc 4.8.2 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-zlib libavutil 52. 66.100 / 52. 66.100 libavcodec 55. 52.102 / 55. 52.102 libavformat 55. 33.100 / 55. 33.100 libavdevice 55. 10.100 / 55. 10.100 libavfilter 4. 2.100 / 4. 2.100 libswscale 2. 5.101 / 2. 5.101 libswresample 0. 18.100 / 0. 18.100 libpostproc 52. 3.100 / 52. 3.100 For help run: ffmpeg -h For formats run: ffmpeg -formats | more For codecs run: ffmpeg -codecs | more Current directory is now: "C:\Users\Administrator\bin" The bin directory has been added to PATH



我的第一个想法是,它根本不工作,但后来我想知道为什么我得到一个 XML 文件,而它根本不工作。 PowerShell 执行 ff-prompt.bat可能一秒钟,在 PowerShell 关闭 ff-prompt.bat 之前再次没有执行我一半的命令。有谁知道为什么 ff-prompt 在执行我的所有命令之前被关闭?

编辑:所以我尝试的是应该直接执行它的东西,但实际上我得到了一大堆错误:
$title = "A_Day_for_Cake_and_Accidents"
$Cmd = ‘C:\Users\Administrator\ffmpeg\bin\ffprobe.exe’
$Arg1 = ’ffprobe '
$Arg2 = ‘-show_streams ’
$Arg3 = ‘-select_streams v '
$Arg4 = ‘-print_format xml '
$Arg5 = ‘-count_frames '
$Arg6 = "C:\Users\Administrator\Desktop\dcp_bearbeitet\$title\$title.mov >"
$Arg7 = " C:\Users\Administrator\Desktop\dcp_bearbeitet\$title\totalframes.xml"
& $Cmd $Arg1 $Arg2 $Arg3 $Arg4 $Arg5 $Arg6 $Arg7

我收到的错误消息:

“ffprobe.exe
无法为选项“show_streams”设置值“-select_streams v”:找不到选项”

我现在面临的问题是 -show_streams没有得到值,所以也许这就是他使用下一个参数作为值的原因,有什么我能做的吗?

最佳答案

以下对我有用:

$title = "A_Day_for_Cake_and_Accidents"
$inputFile = "C:\Users\Administrator\Desktop\dcp_bearbeitet\$title\$title.mov"
$outputFile = "C:\Users\Administrator\Desktop\dcp_bearbeitet\$title\totalframes.xml"

&.\bin\ffprobe.exe -show_streams -select_streams v -print_format xml -count_frames -loglevel quiet $inputFile |输出文件 $outputFile

我应该意识到 '-select_streams v' 计算 2 个命令行参数,因此将它们包装在一个参数中是行不通的。

我删除了 '>' 重定向并添加了 | out-file ....条款。

FFPROBE 的主要问题是它将日志信息写入 STDERR channel 。 PowerShell 发现这一点并引发 NativeCommandError 异常。

我尝试使用 $ErrorActionPreference = 'stop' 捕获 NativeCommandError和 try...catch构造,但在生成 XML 输出之前触发异常。最后,我为 FFPROBE 使用 RTFM 并添加了 -loglevel quiet停止 FFPROBE 写入任何日志信息的参数。

注意 - 此代码假定它是从“bin”上方的目录执行的。

关于windows - 为什么PowerShell在执行我的命令之前关闭ff-prompt.bat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22249390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com