运行外部程序 - “Start-Process”和“&”之间的差异

时间:2017-02-03 11:16:04

标签: powershell ffmpeg video-processing

我想使用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

1 个答案:

答案 0 :(得分:1)

您的输入文件名“Sequence 07_1_08.mxf”中有一个空格,因此您需要在ArgumentList参数的参数中使用文件名周围的引号。这开始变得复杂,因此使用调用操作符(&)通常更容易。

这里介绍了在参数中使用引号,所以我不打算回答:How to start a process in powershell with arguments in quotes?