运行 一个外部程序 - 'Start-Process' 和 '&' 之间的区别
Run an external program - differences between 'Start-Process' and '&'
我想使用 Start-process
到 运行 ffmpeg。我无法让它正常工作,因为它什么也没做。
&$script:ffmpeg
确实可以使用相同的 FFmpeg 参数,所以它们不是问题。
# vars
$Temp = 'C:\Temp';
$script:ffmpeg = "C:\encoder\ffmpeg\bin\ffmpeg.exe";
$inputFile = 'C:\Temp\Sequence 07_1_08.mxf'
$outputFile = 'C:\Temp\testfile.mp4'
# Start-Process
$argument = "-i $inputFile -an -pix_fmt yuv420p -c:v libx264 -crf 23 -profile:v high -level 4.1 -aspect 16:9 -flags +ildct+ilme -x264opts weightp=0:tff=1 $outputFile"
Start-Process $script:ffmpeg -ArgumentList $argument #-Wait -NoNewWindow
# &$script:ffmpeg
&$script:ffmpeg -i $($inputFile) -an -pix_fmt yuv420p -c:v libx264 -crf 23 -profile:v high -level 4.1 -aspect 16:9 -flags +ildct+ilme -x264opts weightp=0:tff=1 $outputFile
您的输入文件名 "Sequence 07_1_08.mxf" 中有一个 space,因此您需要在文件名 和 参数中使用引号对于 ArgumentList
参数。这开始变得复杂,因此使用调用运算符 (&) 通常更容易。
此处介绍了在参数中使用引号,因此我不打算重写答案:
我想使用 Start-process
到 运行 ffmpeg。我无法让它正常工作,因为它什么也没做。
&$script:ffmpeg
确实可以使用相同的 FFmpeg 参数,所以它们不是问题。
# vars
$Temp = 'C:\Temp';
$script:ffmpeg = "C:\encoder\ffmpeg\bin\ffmpeg.exe";
$inputFile = 'C:\Temp\Sequence 07_1_08.mxf'
$outputFile = 'C:\Temp\testfile.mp4'
# Start-Process
$argument = "-i $inputFile -an -pix_fmt yuv420p -c:v libx264 -crf 23 -profile:v high -level 4.1 -aspect 16:9 -flags +ildct+ilme -x264opts weightp=0:tff=1 $outputFile"
Start-Process $script:ffmpeg -ArgumentList $argument #-Wait -NoNewWindow
# &$script:ffmpeg
&$script:ffmpeg -i $($inputFile) -an -pix_fmt yuv420p -c:v libx264 -crf 23 -profile:v high -level 4.1 -aspect 16:9 -flags +ildct+ilme -x264opts weightp=0:tff=1 $outputFile
您的输入文件名 "Sequence 07_1_08.mxf" 中有一个 space,因此您需要在文件名 和 参数中使用引号对于 ArgumentList
参数。这开始变得复杂,因此使用调用运算符 (&) 通常更容易。
此处介绍了在参数中使用引号,因此我不打算重写答案: